其他分享
首页 > 其他分享> > DVWA File Inclusion(文件包含)

DVWA File Inclusion(文件包含)

作者:互联网

File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

 

 

LOW

源码

1 2 3 4 5 6 <?php   // The page we wish to display $file $_GET'page' ];   ?>  

可以看到,服务器对page参数没有进行任何的过滤和检查。

服务器期望用户的操作是点击下面的三个链接,服务器会包含相应的文件,并将结果返回。需要特别说明的是,服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

漏洞利用

 

 我们修改?page= 即可打开我们想要的目标文件

绝对路径
我们在桌面建立了1.txt文档内容为Hello  World,

 

 相对路径

 

 

Medium

源码

1 2 3 4 5 6 7 8 9 10 <?php   // The page we wish to display $file $_GET'page' ];   // Input validation $file str_replacearray"http://""https://" ), ""$file ); $file str_replacearray"../""..\"" ), ""$file );   ?>

可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 ” …/”、”…\”替换为空字符,即删除。

我们可以发现,采用绝对路径依然不会受到限制。或者利用双写绕过即可。

漏洞利用

High

源码

1 2 3 4 5 6 7 8 9 10 11 12 13 <?php   // The page we wish to display $file $_GET'page' ];   // Input validation if( !fnmatch"file*"$file ) && $file != "include.php" ) {     // This isn't the page we want!     echo "ERROR: File not found!";     exit; }   ?>

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

漏洞利用

因为规定只能包含file开头的文件,这里我们依然可以利用file协议绕过防护策略。

 

 

Impossible

源码

1 2 3 4 5 6 7 8 9 10 11 12 13 <?php   // The page we wish to display $file $_GET'page' ];   // Only allow include.php or file{1..3}.php 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; }   ?>

 可以看到,Impossible级别的代码使用了白名单机制进行防护,简单粗暴,page参数必须为“include.php”、“file1.php”、“file2.php”、“file3.php”之一,彻底杜绝了文件包含漏洞。

标签:文件,File,包含,Inclusion,DVWA,漏洞,file,php,page
来源: https://www.cnblogs.com/123456ZJJ/p/12628928.html