tp5.0.x 5.1.x 最新getshell漏洞

参考:https://www.phpmianshi.com/?id=102

概况

2018年12月09日thinkphp团队发布了版本更新:https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞。

影响范围

5.1.x < 5.1.315.0.x<= 5.0.23

 

实战演练

 

比如5.0.7漏洞利用方法:

 

https://www.phpmianshi.com/?s=index/\think\app/invokefunction&function=phpinfo&vars[0]=1

 

可以看到phpinfo信息

 

修复方法

 

5.0.x版本修复:新增红色代码:

// 获取控制器名

vi thinkphp/library/think/App.php

 

$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;

 

修复后看不到phpinfo信息

 

5.1.x版本修复:

vi thinkphp/library/think/route/dispatch/Module.php

找到 // 获取控制器名

// 获取控制器名

$controller       = strip_tags($result[1] ?: $this->rule->getConfig('default_controller'));

if (!preg_match('/^[A-Za-z][\w\.]*$/', $controller)) {

throw new HttpException(404, 'controller not exists:' . $controller);

}

 

官方现已推出补丁 建议开发者进行修复,但是下面这2个补丁不支持分层控制器,最好用我上面的或者升级最新版本

Thinkphp v5.0.x补丁地址: https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f

Thinkphp v5.1.x补丁地址: https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815

 

 

你可能感兴趣的:(PHP)