1、基本情况
ThinkPHP存在远程代码执行漏洞(CNVD-2019-01092)。攻击者利用该漏洞,可在未经授权的情况下,对目标网站进行远程命令执行攻击。
2、攻击原理
该漏洞主要出现在ThinkPHP Request类的method方法中 (thinkphp/library/think/Request.php), Request类可以实现对HTTP请求的一些设置,其中成员方法method用来获取当前请求类型,其定义如下:
当传入的参数为false的时候,会取配置项var_method,其默认值为_method
$this->{$this->method}($_POST); 通过post参数_method可以实现对当前类的任意方法进行调用。
这里通过覆盖filter属性,filter属性保存了用于全局过滤的函数。
最终会调用filterValue形成任意代码执行:
3、影响范围
ThinkPHP 5.0.x 至 5.0.23。
4、处置建议
1) 官方在 GitHub 中进行了版本更新,链接地址:https://github.com/top-think/framework/commit/4a4b5e64fa4c46f851b4004005bff5f3196de003;
2) 升级代码到最新版本 5.0.24,链接地址:http://www.thinkphp.cn/down.html;
3) 建议用户在线上环境中关闭 debug 模式。
5、参考链接
1) https://github.com/top-think/framework/commit/4a4b5e64fa4c46f851b4004005bff5f3196de003
2) http://www.cnvd.org.cn/webinfo/show/4855
3) http://www.thinkphp.cn/down.html