首页 > 学习笔记 > PHP > 正文

Phpcms V9某处逻辑问题导致getshell漏洞解决方法

发布时间:2017-04-17 14:07:05 点击量:

最近从阿里云云盾检测流出来的,相比使用阿里云服务器的朋友已经收到漏洞提醒:Phpcms V9某处逻辑问题导致getshell漏洞解决方法,这个漏洞怎么办呢?找到针对性解决办法分享给大家。

漏洞详情:

漏洞名称:phpcms某处逻辑问题导致getshell
补丁编号:7843523
补丁文件:/phpcms/libs/classes/attachment.class.php
补丁来源:云盾自研
更新时间:2016-09-20 13:03:10
漏洞描述:phpcms的/phpcms/libs/classes/attachment.class.php中,对输入参数$ext未进行类型限制,导致逻辑漏洞的产生。
【注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了改漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】
具体解决方法:



修改/phpcms/libs/classes/attachment.class.php文件143行左右的download方法,在方法开始位置加入:

$extarr = explode('|',strtolower($ext));
$allow_extarr = array('gif','jpg','jpeg','bmp','png');
foreach ($extarr as $theext) {
if(!in_array(strtolower($theext),$allow_extarr)){
exit('the file ext is not allowed');
exit(0);
}
}
这样,加入一个判断,如果允许的文件格式是'gif','jpg','jpeg','bmp','png'这些,就继续,不然就跳出,当然这里的格式可以根据需要增多几个。

上一篇:phpcms nginx伪静态规则

下一篇:phpcms v9 调用自定义字段多图片