目录遍历攻击又称目录穿越、恶意浏览、文件泄露等,攻击者利用系统漏洞访问合法应用之外的数据或文件目录,导致数据泄露或被篡改。

比如我们之前一直使用的Web服务器平台NMPServer,它的网站主目录为C:\NMPServer\NPMserv\www,理论上讲网站的所有内容都应该位于这个主目录里,即使内容位于别的位置,也应该采用虚拟目录的形式将之链接到主目录中。作为客户端,当然也只能访问主目录中的内容。但是如果网站存在漏洞,那么客户端就可以突破主目录的限制,而去访问其他目录中(比如C:\Windows)的内容,这也就是所谓的目录遍历攻击。

最常见的目录遍历攻击就是利用“双句点代表父目录”机制进行攻击。比如我们之前在远程文件包含攻击中所做的测试网页test.php,在这个网页中就存在有目录遍历漏洞:

image

在客户端可以通过下面的形式进行目录遍历攻击,可以看到直接打开了服务器上的C:\Windows\system.ini文件。

image

URL中比较重要的部分就是“file=../../../windows/system.ini”,“../”代表上一级的父目录,因而“../../../”就表示从网站主目录中向上退了3级,网站的主目录是C:\NMPServer\NPMserv\www,因而“../../../”就是退到了C盘根目录。在攻击过程中,黑客并不清楚网站的主目录位置,但是只要通过简单的测试就可以推断出结果。

因而,通过目录遍历攻击,黑客就可以突破网站主目录的限制,而去访问服务器上的敏感文件。