目录遍历, 也叫路径遍历, 由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件 (可以是web根目录以外的文件),甚至可以执行系统命令。
原理
程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
比如:http://www.***.com/index.php?file=image.jpg
当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://site/images/image.jpg”,将读取的内容返回给访问者。
如果程序对文件名称的安全性验证不足, 攻击者会采用../../../ect/passwd的文件名, 导致访问非法文件。
漏洞产生环境(原因)
网站应用提供文件下载, 其中文件储存在服务器, 网站脚本利用代码获取本网站的目录文件并将其显示在网站界面上, 如果对代码没有相关的安全验证, 将导致文件目录泄露漏洞。
../../(目录遍历)
点击这两个蓝色的链接,会显示其他内容
与之对应的url也会发生改变
根据目录遍历的原理, 攻击者主要通过../来返回上一级目录, 从而导致所有目录的暴露
这里先尝试一下对title变量加入上一级目录../ (类似文件包含漏洞..)
构造url如下
http://2xxx6/vul/dir/dir_list.php?title=../../../../../../../../../etc/passwd
可以看到读取到文件内容,我们一直上一级到根目录,然后读取/etc/passwd里面的内容,漏洞利用成功