ThinkPHP < 5.0.24 遠程代碼執行高危漏洞 修復方案

作者:星辰網絡工作室 日期:2019-07-01 瀏覽:1932

漏洞描述
由于ThinkPHP5.0框架對Request類的method處理存在缺陷,導致黑客構造特定的請求,可直接GetWebShell。

漏洞評級
嚴重

影響版本
ThinkPHP 5.0系列 < 5.0.24

安全版本
ThinkPHP 5.0系列 5.0.24
ThinkPHP 5.1系列 5.1.31

安全建議
升級ThinkPHP至安全版本
修復方法1.打開
thinkphplibrarythinkRequest.php
搜索

public?function?method($method?=?false)
{????????
????if?(true?===?$method)?{????????????//?獲取原始請求類型
????	return?$this->server('REQUEST_METHOD')??:?'GET';
????}?elseif?(!$this->method)?{????????????
????	if?(isset($_POST[Config::get('var_method')]))?{????????????????
????		$this->method?=?strtoupper($_POST[Config::get('var_method')]);????????????????
????		$this->{$this->method}($_POST);
????	}?elseif?(isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']))?{????????????????
????		$this->method?=?strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
????	}?else?{????????????????
????		$this->method?=?$this->server('REQUEST_METHOD')??:?'GET';
????	}
????}????????return?$this->method;
}

改成:

public?function?method($method?=?false)
{????????
????if?(true?===?$method)?{????????????//?獲取原始請求類型
????	return?$this->server('REQUEST_METHOD')??:?'GET';
????}?elseif?(!$this->method)?{????????????
????	if?(isset($_POST[Config::get('var_method')]))?{
????		$method?=?strtoupper($_POST[Config::get('var_method')]);????????????????
????		if?(in_array($method,?['GET',?'POST',?'DELETE',?'PUT',?'PATCH']))?{???????????????????
????			$this->method?=?$method;????????????????????
????			$this->{$this->method}($_POST);
????		}?else?{????????????????????
????			$this->method?=?'POST';
????		}????????????????
????		unset($_POST[Config::get('var_method')]);
????	}?elseif?(isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']))?{????????????????
????		$this->method?=?strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
????	}?else?{????????????????
????		$this->method?=?$this->server('REQUEST_METHOD')??:?'GET';
????	}
????}????????
????return?$this->method;
}

保存,覆蓋 測試無誤 漏洞修復完成

九九精品无码专区免费,亚洲国产日产欧美综合,无码专区6080yy电影,午夜一级特黄A片在线观看