作者:-MP5 | 来源:互联网 | 2020-07-27 17:05
漏洞描述由于ThinkPHP5.0框架对Request类的method处理存在缺陷,导致黑客构造特定的请求,可直接GetWebShell。漏洞评级严重影响版本ThinkPHP5.0系列<5.0.24安全版本Thin
本篇文章主要给大家介绍ThinkPHP <5.0.24 远程代码执行高危漏洞的修复方案,希望对需要的朋友有所帮助!
搜索
public function method($method = false)
{
if (true === $method) {
// 获取原始请求类型
return $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
} elseif (!$this->method) {
if (isset($_POST[Config::get(&#39;var_method&#39;)])) {
$this->method = strtoupper($_POST[Config::get(&#39;var_method&#39;)]);
$this->{$this->method}($_POST);
} elseif (isset($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;])) {
$this->method = strtoupper($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;]);
} else {
$this->method = $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
}
}
return $this->method;
}
改成:
public function method($method = false)
{
if (true === $method) {
// 获取原始请求类型
return $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
} elseif (!$this->method) {
if (isset($_POST[Config::get(&#39;var_method&#39;)])) {
$method = strtoupper($_POST[Config::get(&#39;var_method&#39;)]);
if (in_array($method, [&#39;GET&#39;, &#39;POST&#39;, &#39;DELETE&#39;, &#39;PUT&#39;, &#39;PATCH&#39;])) {
$this->method = $method;
$this->{$this->method}($_POST);
} else {
$this->method = &#39;POST&#39;;
}
unset($_POST[Config::get(&#39;var_method&#39;)]);
} elseif (isset($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;])) {
$this->method = strtoupper($_SERVER[&#39;HTTP_X_HTTP_METHOD_OVERRIDE&#39;]);
} else {
$this->method = $this->server(&#39;REQUEST_METHOD&#39;) ?: &#39;GET&#39;;
}
}
return $this->method;
}
保存,覆盖 测试无误 漏洞修复完成。
以上就是ThinkPHP <5.0.24 远程代码执行高危漏洞的修复方案的详细内容,更多请关注 第一PHP社区 其它相关文章!