ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案

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
搜索

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; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112515.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php 生成订单号201807205598981

    php 生成订单号201807205598981

    2021年11月8日
    47
  • http请求415,报错Unsupported Media Type

    http请求415,报错Unsupported Media Type背景:做一个项目的接口对接,用Getman\postman等接口调试工具都是可以的。用程序运行就报415.原因:根据接口所传参数的不同,post请求的Content-type有四种:application/x-www-form-urlencoded(默认)application/xmlapplication/jsonmultipart/form-data我所对接的接口所传的…

    2022年5月1日
    106
  • 网络号、主机号、子网号、子网掩码、子网划分

    网络号、主机号、子网号、子网掩码、子网划分1.Internet上每一台计算机都有唯一的地址来标识它的身份,即IP地址,使用域名其实也是要转化为IP地址的。2.IP地址分类:A类:000~127,默认子网掩码:255.0.0.0B类:128~191,默认子网掩码:255.255.0.0C类:192~223,默认子网掩码:255.255.255.0D类:224~239E类:240~255

    2022年6月24日
    50
  • springmvc接收字符串转list

    springmvc接收字符串转list多次试了下传入数组或者listjson格式感觉还是有问题。后面用最傻的方法先把参数设置成String类型传入到后台再做转换 publicObjectsaveScenceCheckDraw(CheckDrawingscheckDrawings,StringdrawingImgList){      GsonBuilderbuilder=newGsonBuilder();  …

    2022年5月14日
    70
  • 4G演进之路:FDD还是TDD?[通俗易懂]

    4G演进之路:FDD还是TDD?[通俗易懂]达到更高频谱利用率、覆盖率,同时保证多媒体应用的QoS服务质量,已经成为第四代蜂窝4G网络的挑战和目标。在4G系统里,有许多关于物理层和多接入以提高频谱利用率方面的研究,以支持高达100Mbps甚至更高的数据传输速率。例如,正交频分多址OFDMA、MIMO天线,以及跨层资源优化,被认为是4G系统中的核心技术,并同时在频率选择的衰落信道中提供高可靠通信。  另一方面,4G系统双工方式的选择,是F

    2022年5月25日
    67
  • 第一讲 数域_域 数学

    第一讲 数域_域 数学1.引入数是数学的一个最基本概念,回顾一下我们曾经学习过的数的发展过程:(1)代数性质:关于数的加,减,乘,除等运算的性质称为数的代数性质.(2)数集:数的集合简称数集.常见的数集:复试C;实数R;有理数Q等等.它们有一个共同的性质就是对加减乘除运算封闭.2.数域的定义设F是由一些复数组成的集合,其中包括0和1,如果F中任意两个数的和,差,积,商(除数不为0)扔是F中的数,则称F为一个数域.从数域的定义可以看出一个数域要满足:为复数的子集;包含0

    2025年8月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号