欢迎来到站长教程网!

FTP存储

当前位置: 主页 > 批量图文处理 > FTP存储

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

时间:2024-01-03 02:18:40|栏目:FTP存储|点击:

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

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

影响版本:PublicCMS V4.0.20180210漏

PublicCMS 4.0.20180210版本中存在一个上传漏洞,当上传一个包含jsp文件的压缩文件,在执行解压操作时,会将jsp文件写到指定的目录中0x01 漏洞利用搭建环境后登录。

由此可以推断出项目在服务器上的真实路径为C: omcatapache-tomcat-7.0.81apache-tomcat-7.0.81webappspubliccms根据数据目录可以知道上传的文件路径为。

C:datapubliccmswebsite_1(由于该目录不在web目录下,所以直接上传jsp文无效)。构造一个zip压缩文件。

其中文件名为../../../../../../../../tomcat/apache-tomcat-7.0.81/apache-tomcat-7.0.81/webapps/publiccms/cmd.jsp

,然后上传该zip文件。

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

从而可以获取一个cmdshell。

0x02 漏洞分析该漏洞触发条件不是很复杂,所以分析起来也比较简单根据当点击解压缩时,请求的URI为:/publiccms/admin/cmsWebFile/unzip.do?path=%2Ftest.zip。

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

在其中调用了doUnzip方法

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

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

至于POC的生成可以参考CVE-2018-1261 中压缩文件的生成方式,这里就不再赘述了0x03 总结漏洞产生的原因是因为在处理压缩文件中文件名时没有进行过滤,因此在进行解压时采用../可以将文件写入到指定的目录,从而可以获取webshell。

该漏洞和Spring Integration Zip不安全解压(CVE-2018-1261)漏洞有点类似,所以就简单的利用和分析了一下目前来说,该CMS用户和名气较少,大部分也都是自用,所以才会被碰巧发现这个漏洞。

上一篇:马来西亚大众传媒媒体研究

栏    目:FTP存储

下一篇:暂无

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

本文地址:http://www.diguocaiji.com/index.php?m=home&c=View&a=index&aid=4320

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:209087445 | 邮箱:209087445@qq.com

Copyright © 2002-2021 站长工具教程网 版权所有蜀ICP备2023002304号-12