站长资源
中国站长网站

ThinkPHP5.0\5.1 getshell漏洞修复

5.0版本

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

if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}

如:App.php的代码中,大概371行下面

// 获取控制器名
$controller = strip_tags($result[1] ?: $config['default_controller']);
// 修复5.0漏洞
if (!preg_match('/^[A-Za-z](\w|\.)*$/', $controller)) {
    throw new HttpException(404, 'controller not exists:' . $controller);
}
$controller = $convert ? strtolower($controller) : $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具体代码加在何处,大家看下源码注释加在其后面即可

本文出处:来自互联网信息共享,请勿相信收费信息站长资源 » ThinkPHP5.0\5.1 getshell漏洞修复

评论 抢沙发

评论前必须登录!