找回密码
 立即注册

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.     }
复制代码
保存,覆盖 测试无误 漏洞修复完成

本教程由无限星辰工作室CRX349独家整理和提供,转载请注明地址,谢谢。本文地址:https://xmspace.net/thread-708-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 LOT智能硬件聚合平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225

发表于 2019-1-11 23:04:06 | 显示全部楼层 |阅读模式

回复 | 使用道具 举报

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

本版积分规则

美图秀

    • 自建远程桌面服务器 rustdesk
    • Discuz!x3.4 账号保镖 自动冻结账号无效解
    • PVE换主板后 网络丢失解决方法
    • Kvm 虚拟机迁移到PVE里面
    • Discuz!x3,4 阿里云DCDN配置获取客户端ip
拖动客服框
Online Service
点击这里给我发消息
点击这里联系我们
微信扫一扫
在线客服
快速回复 返回顶部 返回列表