找回密码
 立即注册

QQ登录

只需一步,快速开始

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.     }
复制代码
保存,覆盖 测试无误 漏洞修复完成
无限星辰工作室 星辰APP
服务Discuz!建站|搬家|运维|挂马防护|Win Linux网站环境(lanmp)架设优化|服务器安全维护|解决CPU100|解决论坛卡顿
服务理念:专业 诚信 友好QQ842062626 点击看服务项目 Discuz!交流群 315524225
发表于 2019-1-11 23:04:06 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

该帖共收到 0 条回复!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美图秀

    • 防灌水插件之区域禁止插件
    • Discuz!x3.4 防灌水机批量注册后卖号批量冻
    • 阿里云nginx反代理或负载均衡报错(104: Co
    • Discuz!高并发下 Mysql服务器连接数爆满解
    • 好用的TCP端口检测工具(tcping)
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表