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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • filter suction_filter属性

    filter suction_filter属性概要说明       FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如2.1.6、2.1.8。StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doF

    2022年8月16日
    2
  • 《大话操作系统——做坚实的project实践派》(6)[通俗易懂]

    《大话操作系统——做坚实的project实践派》(6)

    2022年2月2日
    41
  • 不止一个背包的背包问题_算法基础课acwing下载

    不止一个背包的背包问题_算法基础课acwing下载有 N 种物品和一个容量是 V 的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。si=−1 表示第 i 种

    2022年8月9日
    5
  • spring aop用法_概念的种类

    spring aop用法_概念的种类SpringAOP入门——概念及注意点

    2022年8月11日
    3
  • 扫雷游戏网页版_两个在线版复古小游戏,嗯还是熟悉的味道!「建议收藏」

    扫雷游戏网页版_两个在线版复古小游戏,嗯还是熟悉的味道!「建议收藏」今天给大家推荐两个轻松的网站,其实是两个在线的小游戏网站,分分钟让你找回许久之前的回忆,我们一起来看看吧。01、在线俄罗斯方块网址:http://www.webgame.org.cn看到上图的画面,已经无需多说什么了,“上了年纪”的小伙伴肯定都玩过这个吧,经典中的经典。这个网页的还原度也很高,可以通过键盘控制,老Y也就玩了两个小时而已~02、在线扫雷网址:http://www.saolei.org…

    2025年6月16日
    3
  • 火狐驱动镜像下载

    火狐驱动镜像下载

    2021年11月11日
    102

发表回复

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

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