DVWA之 File Inclusion 文件包含

 

File Inclusion

 

File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

 

 

 

 

 

LOW级别:
源码:

 

vulnerabilities/fi/source/low.php
<?php

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

?>

 

可以发现,服务器对page参数没有任何的过滤和检查。服务器希望用户点击图中的三个链接,服务器会包含相应文件,并将结果返回。需要说明的是。不管文件后缀是否是php,都会当做php文件执行,如果文件内容确认为php,则正常执行并返回结果,如果不是,则返回打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

 

 

漏洞利用一:

构造url(绝对路径):http://192.168.50.100/dvwa/vulnerabilities/fi/?page=C:\phpStudy\WWW\dvwa\php.ini

 

 

 

 

 

 

 

 

 

 

 

 这样,就成功读取了服务器的文件。同时也可以再page后加相对路径,道理相同。

 

 

 

 

Medium:

代码:

//Thepagewewishtodisplay
$file=$_GET['page'];

//Inputvalidation
$file=str_replace(array("http://","https://"),"",$file);
$file=str_replace(array("../","..\""),"",$file);

可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,

将”http:// ”、”https://”、 ” ../”、”..\”替换为空字符,即删除。

漏洞利用:可以通过双写绕过WAF。同时过滤的比较少,采用绝对路径的办法不受影响。

http://192.168.50.100/dvwa/vulnerabilities/fi/?page=C:\phpStudy\WWW\dvwa\php.ini

 

 

HIGH

代码:

复制代码
//Thepagewewishtodisplay
$file=$_GET['page'];

//Inputvalidation
if(!fnmatch("file*",$file)&&$file!="include.php"){
   //Thisisn'tthepagewewant!
echo"ERROR:Filenotfound!";
exit;
}
复制代码

可以看到,High级别的代码使用了fnmatch函数检查page参数,要求page参数的开头必须是file,服务器才会去包含相应的文件。

看似安全,其实可以利用file协议绕过防护策略。file协议其实我们并不陌生,当我们用浏览器打开一个本地文件时,用的就是file协议。

 

 

 

 

 

构造url:http://192.168.50.100/dvwa/vulnerabilities/fi/?page=file:///C:\phpStudy\WWW\dvwa\php.ini

 

 

                          

posted @ 2020-02-09 00:16  Res0lve  阅读(240)  评论(0编辑  收藏  举报