【转载】Thinkphp5.1 ~ 5.2 全版本代码执行


Jan 15 2019

【转载】Thinkphp5.1 ~ 5.2 全版本代码执行

首页 » 代码审计 » 【转载】Thinkphp5.1 ~ 5.2 全版本代码执行   

序言

最近爆出了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&

访问如下图所示:


1.png


会爆出一个警告级别的异常,导致程序终止

如何触发:

如果设置忽略异常提示,如下图:

2.png

本身项目发布就需要屏蔽异常和错误所以这个配置是一个正常的配置

3.png

正文部分到此结束

文章标签: thinkphp漏洞 thinkphp安全

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «四个linux提权脚本 | 【转载】ThinkPHP 5.0 * 远程代码执行漏洞分析»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

这篇文章还没有收到评论,赶紧来抢沙发吧~