无限星辰工作室-客户无限互联网动力之源

标题: ThinkPHP < 5.0.24 远程代码执行高危漏洞 修复方案 [打印本页]

作者: crx349    时间: 2019-1-11 23:04
标题: 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.打开
\thinkphp\library\think\Request.php
搜索
  1. public function method($method = false)
  2.     {
  3.         if (true === $method) {
  4.             // 获取原始请求类型
  5.             return $this->server('REQUEST_METHOD') ?: 'GET';
  6.         } elseif (!$this->method) {
  7.             if (isset($_POST[Config::get('var_method')])) {
  8.                 $this->method = strtoupper($_POST[Config::get('var_method')]);
  9.                 $this->{$this->method}($_POST);
  10.             } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
  11.                 $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
  12.             } else {
  13.                 $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
  14.             }
  15.         }
  16.         return $this->method;
  17.     }
复制代码


改成:
  1. public function method($method = false)
  2.     {
  3.         if (true === $method) {
  4.             // 获取原始请求类型
  5.             return $this->server('REQUEST_METHOD') ?: 'GET';
  6.         } elseif (!$this->method) {
  7.             if (isset($_POST[Config::get('var_method')])) {
  8.                 $method = strtoupper($_POST[Config::get('var_method')]);
  9.                 if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])) {
  10.                     $this->method = $method;
  11.                     $this->{$this->method}($_POST);
  12.                 } else {
  13.                     $this->method = 'POST';
  14.                 }
  15.                 unset($_POST[Config::get('var_method')]);
  16.             } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
  17.                 $this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
  18.             } else {
  19.                 $this->method = $this->server('REQUEST_METHOD') ?: 'GET';
  20.             }
  21.         }
  22.         return $this->method;
  23.     }
复制代码
保存,覆盖 测试无误 漏洞修复完成





欢迎光临 无限星辰工作室-客户无限互联网动力之源 (https://www.xmspace.net/) Powered by Discuz! X3.4