1.综述
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。
ThinkPHP5中存在远程代码执行漏洞,该漏洞是由于框架的Request类中存在设计缺陷导致远程代码执行,最终攻击者可利用该漏洞获取系统权限。
2.漏洞概述
漏洞类型: 远程代码执行漏洞
危险等级: 高危
利用条件:ThinkPHP在受影响版本内
受影响系统:5.00-5.0.23
3.漏洞编号
暂未分配CVE
4.漏洞描述
ThinkPHP5中存在远程代码执行漏洞,该漏洞是由于框架的Request类中存在设计缺陷导致远程代码执行,最终攻击者可利用该漏洞获取系统权限。
5.修复建议
1. 请到官网下载升级到ThinkPHP 5.0.24 以上最新版本修复该漏洞,建议业务不繁忙时修复。
下载地址:https://github.com/top-think/think/releases 2. 如果暂时无法进行升级,可以参考官方给出的修复漏洞的补丁,自行增加相关代码。 更新地址:https://github.com/top-think/framework/commit/4a4b5e64fa4c46f851b4004005bff5f3196de003
缓解措施:
注:请业务侧注意测试升级后网站功能是否正常编辑 library/think/Request.php 文件,将以下部分
$this->method = strtoupper($_POST[Config::get('var_method')]);
$this->{$this->method}($_POST);
修改为:
$method = strtoupper($_POST[Config::get('var_method')]);
if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
$this->method = $method;
$this->{$this->method}($_POST);
} else {
$this->method = 'POST';
}
unset($_POST[Config::get('var_method')]);
参考链接:
http://www.thinkphp.cn/topic/60992.html