本篇文章次要给各人引见ThinkPHP < 5.0.24 近程代码执行高危破绽的修复计划,心愿对需求的冤家有所协助!
破绽形容
因为ThinkPHP5.0框架对Request类的method解决存正在缺点,招致黑客结构特定的申请,可间接GetWebShell。
破绽评级
重大
影响版本
ThinkPHP 5.0系列 < 5.0.24
平安版本
ThinkPHP 5.0系列 5.0.24
ThinkPHP 5.1系列 5.1.31
平安倡议
晋级ThinkPHP至平安版本
修复办法1.关上
thinkphplibrarythinkRequest.php
搜寻
public function method($method = false) { if (true === $method) { // 猎取原始申请类型 return $this->server('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) { if (isset($_POST[Config::get('var_method')])) { $this->method = strtoupper($_POST[Config::get('var_method')]); $this->{$this->method}($_POST); } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) { $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']); } else { $this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
改为:
public function method($method = false) { if (true === $method) { // 猎取原始申请类型 return $this->server('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) { if (isset($_POST[Config::get('var_method')])) { $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')]); } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) { $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']); } else { $this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
保留,笼罩 测试无误 破绽修复实现。
以上就是ThinkPHP < 5.0.24 近程代码执行高危破绽的修复计划的具体内容,更多请存眷资源魔其它相干文章!
标签: thinkphp php开发教程 php开发资料 php开发自学
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!