修复Think远程代码执行漏洞
最近,手里好几个站都被挂马。首页被篡改,导致无法访问和被百度K站的下场。
木马的关键词 define('Viv, bebegim.','Denzel-你的英雄');
找了好久后发现是由TP的这个漏洞引起的。
解决方法: 找到文件:thinkphp/library/think/Request.php 修改method方法
public function method($method = false)
{
if (true === $method) {
// 获取原始请求类型
return IS_CLI ? 'GET' : (isset($this->server['REQUEST_METHOD']) ? $this->server['REQUEST_METHOD'] : $_SERVER['REQUEST_METHOD']);
} elseif (!$this->method) {
if (isset($_POST[Config::get('var_method')])) {
$this->method = strtoupper($_POST[Config::get('var_method')]); if(in_array($this->method,array('POST','GET','DELETE','PUT','PATCH'))) $this->{$this->method}($_POST);
} elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) {
$this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
} else {
$this->method = IS_CLI ? 'GET' : (isset($this->server['REQUEST_METHOD']) ? $this->server['REQUEST_METHOD'] : $_SERVER['REQUEST_METHOD']);
}
}
return $this->method;
}
添加标红行代码。
参考文档: https://seaii-blog.com/index.php/2019/01/14/88.html