合肥市高新区长江西路与科学大道交口5F创业园A座309
136 5560 1775

网站首页被篡改 Thinkphp5.0.0~5.0.23远程代码执行漏洞修复

发表日期:2019-08-12 浏览次数:65535次

最近发现多个Thinkphp5开发的网站被挂马,导致首页被篡改,其他页面无法正常访问的情况。

木马中均包含以下代码:define('Viv, bebegim.','Denzel-你的英雄');

经过检查,这些攻击是利用了Thinkphp5.0.0~5.0.23版本远程进行代码调用的漏洞进行的getshell。
Thinkphp5官方已经发布了安全更新版本:ThinkPHP5.0.24版本发布——安全更新
你可以将版本更新到5.0.24版本及以上。

如果不方便更新到最新版本,那么可以按照最新版本的Request类的method方法进行手动修复,具体如下:

1.打开/thinkphp/library/think/Request.php文件,找到method方法(约500行),修改下面代码:
$this->method = strtoupper($_POST[Config::get('var_method')]);
$this->{$this->method}($_POST);

改为:

$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')]);

2.再在 /thinkphp/library/think/App.php这里加上如下代码,搜索“获取控制器名”可以找到
$controller = strip_tags($result[1] ?: $config['default_controller']);
$controller = $convert ? strtolower($controller) : $controller;
改成
$controller = strip_tags($result[1] ?: $config['default_controller']);
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
throw new HttpException(404, 'controller not exists:' . $controller);
}
$controller = $convert ? strtolower($controller) : $controller;

将文章分享到:

版权所有:启迈科技-合肥网站建设 皖ICP备19009304号-1 皖公网安备 34010402702162号

网站建设,网站设计公司启迈科技,为众多企业提供网站建设,网站制作,响应式网站设计,手机网站建设,微网站,模板建站,企业邮箱等一站式互联网解决方案和建站服务10年。