PublicCMS 任意目录文件写入漏洞分析与利用

华盟学院山东省第二期线下学习计划

前两天收集整理通用漏洞POC过程时碰到PublicCMS,代码审计后发现可以任意文件写入,Getshell。 By 猎户实习浮生

PublicCMS 任意目录文件写入漏洞分析与利用

0x00 漏洞概览

    漏洞编号:CVE-2018-12914

    漏洞危害:用户通过在压缩文件中构造包含有特定文件名称的压缩文件时,在进行解压时,会导致跨目录任意写入文件漏洞的攻击。进而有可能被Getshell,远程控制。

www.idc126.com

    影响版本:PublicCMS V4.0.20180210

    漏洞加固:更新到最新版本

PublicCMS是一套使用Java语言编写的开源内容管理系统(CMS)。项目地址:https://github.com/sanluan/PublicCMS 。PublicCMS 4.0.20180210版本中存在一个上传漏洞,当上传一个包含jsp文件的压缩文件,在执行解压操作时,会将jsp文件写到指定的目录中。


0x01 漏洞利用

搭建环境后登录。

PublicCMS 任意目录文件写入漏洞分析与利用

由此可以推断出项目在服务器上的真实路径为C: omcatapache-tomcat-7.0.81apache-tomcat-7.0.81webappspubliccms。根据数据目录可以知道上传的文件路径为C:datapubliccmswebsite_1(由于该目录不在web目录下,所以直接上传jsp文无效)。

构造一个zip压缩文件。

PublicCMS 任意目录文件写入漏洞分析与利用

其中文件名为../../../../../../../../tomcat/apache-tomcat-7.0.81/apache-tomcat-7.0.81/webapps/publiccms/cmd.jsp,然后上传该zip文件。

PublicCMS 任意目录文件写入漏洞分析与利用

当经过上传和解压后,cmd.jsp会写入在publiccms目录下。

PublicCMS 任意目录文件写入漏洞分析与利用

从而可以获取一个cmdshell。

PublicCMS 任意目录文件写入漏洞分析与利用

0x02 漏洞分析

该漏洞触发条件不是很复杂,所以分析起来也比较简单。

根据当点击解压缩时,请求的URI为:

/publiccms/admin/cmsWebFile/unzip.do?path=%2Ftest.zip

代码定位到com.publiccms.controller.admin.cms.CmsWebFileAdminController的doUnzip方法

PublicCMS 任意目录文件写入漏洞分析与利用

在其中调用了doUnzip方法

PublicCMS 任意目录文件写入漏洞分析与利用

由于这里点击的是解压缩,所以调用了com.publiccms.common.tools.ZipUtils.unzip方法。

PublicCMS 任意目录文件写入漏洞分析与利用

File targetFile = new File(targetPath + File.separator + zipEntry.getName());

通过获取targetPath(由于调试环境与漏洞利用环境并非同一个,所以这里的targetPath为D盘下的目录)和压缩文件中的名字进行拼接,然后将文件写入,这里由于文件名中有../从而进行目录的跳跃,最终可以将文件写入到指定的位置。

目前该漏洞已经修复。对比补丁 发现在获取压缩文件中的文件名字时,如果其中含有”..”时则被替换为空。

PublicCMS 任意目录文件写入漏洞分析与利用

至于POC的生成可以参考CVE-2018-1261 中压缩文件的生成方式,这里就不再赘述了。


0x03 总结

漏洞产生的原因是因为在处理压缩文件中文件名时没有进行过滤,因此在进行解压时采用../可以将文件写入到指定的目录,从而可以获取webshell。该漏洞和Spring Integration Zip不安全解压(CVE-2018-1261)漏洞有点类似,所以就简单的利用和分析了一下。

目前来说,该CMS用户和名气较少,大部分也都是自用,所以才会被碰巧发现这个漏洞。分析中如有不足,请多指教。


0x04 参考

1.https://mp.weixin.qq.com/s/SJPXdZWNKypvWmL-roIE0Q

2.https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-12914

本文由来源 猎户安全实验室,由 congtou 整理编辑,其版权均为 猎户安全实验室 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
1

发表评论