风险分析:攻击者试图通过URL向WEB服务器传递目录遍历命令,然后会利用对文件的读取权限进行跨越目录访问。这是一种极具破坏性的行为,一旦攻击者突破许多层安全控制,可以直接访问敏感数据库,包括密码、配置文件、应用程序日志和源代码。如果漏洞允许写入访问,攻击者甚至可以利用它迅速攻破整个应用程序和基础服务器。
如果攻击状态为“成功”,说明攻击者已经利用读文件漏洞读取了系统敏感文件,例如/etc/passwd、/etc/hosts等。
处置建议: 首先需确认攻击源和目标主机所处网络位置,对于内网向外发起的攻击行为,建议通过对源主机进行访问限制阻止攻击行为;
对于来自外部的攻击行为,需要对所有输入的提交进行判断,分析是否存在目录检索等敏感行为,如:../../..等,包括转码前和转码后的行为,对这些输入进行禁止。
同时有效的权限的控制也是防护该攻击行为的重要机制,谨慎的处理向文件系统API传递过来的参数路径。主要是因为大多数的目录或者文件权限均没有得到合理的配置,而Web应用程序对文件的读取大多依赖于系统本身的API,在参数传递的过程,如果没有得严谨的控制,则会出现越权现象的出现。在这种情况下,Web应用程序可以采取以下防御方法,最好是组合使用。
(1) 数据净化,对网站用户提交过来的文件名进行硬编码或者统一编码,对文件后缀进行白名单控制,对包含了恶意的符号或者空字节进行拒绝。
(2) Web应用程序可以使用chrooted环境访问包含被访问文件的目录,或者使用绝对路径+参数来控制访问目录,使其即使是越权或者跨越目录也是在指定的目录下。
应用程序应将其路径遍历共计防御机制与日志和警报机制整合在一起。任何时候,只要收到一个包含路径遍历序列的请求,提出请求的用户就可能心存恶意,应用程序应在日志中进行纪录,标明该请求企图违反安全机制,并终止该用户的会话;如果有可能,应该冻结该用户帐户并向管理员发出警报。 |