Thinkphp5控制器名过滤不严导致getshell的解决方法

Thinkphp5控制器名过滤不严导致getshell,网上很多人放出getshell脚本。

修复方法:

5.0版本
在think\App类的module方法的获取控制器的代码后面加上

if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}
5.1版本
在think\route\dispatch\Url类的parseUrl方法,解析控制器后加上

if ($controller && !preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}
自行增加相关代码。(5.0版本代码 | 5.1版本代码


上一篇: 微信分享到朋友圈onMenuShareTimeline成功后的回调函数不执行的解决方法
下一篇: Fikker主控php端可能存在0day漏洞,影响所有版本

目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):