知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE

渗透技巧 2年前 (2022) admin
823 0 0
漏洞信息



dotCMS是全球知名的基于Java的开源内容管理系统,提供社区版,可免费下载使用。此外还提供企业版,可以按年或月订阅使用。近日发现dotCMS爆出高危漏洞SI-62:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


漏洞在 versions 22.03, 5.3.8.10_lts and/or 21.06.7_lts.中完成了修复。在Github中可以找到漏洞issue:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


SI-62主要是由于对文件名过滤不严,导致可以通过路径穿越实现任意文件上传GetShell。


环境搭建


有兴趣深入研究的小伙伴请加入我们的漏洞空间站-优质漏洞资源和优质小伙伴聚集地!!知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE

知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


API接口


查看`web.xml`,找到一个名为`RESTAPI`的servlet:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


对应处理代码位于`ReloadableServletContainer`,使用浏览器发送`/api/`请求,在`ReloadableServletContainer.service`处捕获断点:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


进入`Application.handle`函数,调用`process`:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


在`ServerRuntime.process`中执行`runInScope`,关键代码在`Run`函数中定义。首先使用`Stages.process`获取API请求对应的`端点(Endpoint)`,然后使用`Apply`函数进行处理:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


以`/api/osgi`接口为例,发送`POST`请求后,通过`endpoint`变量可知处理类为`com.dotcms.rest.OSGIResource`:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


`OSGIResource`位于`dotcms_22.02_999999.jar`文件中,它基于`javax.ws.rs`框架进行路由映射,其中`@Path`注解为`/osgi`,远程访问路径应为`/api/osgi`:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


在jar包同一个路径下有许多其它Endpoint定义:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


路径穿越


漏洞位于`com.dotcms.rest.ContentResource`:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


其中的`multipartPOST`和`multipartPUT`用于处理POST和PUT请求:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


进入`multipartPUTandPOST`函数,第1392行遍历文件上传部分,并根据`Content-Type`的不同,选择不同的处理方式:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


处理方式如下:


  • processJSON

  • processXML

  • processForm

  • processMap

  • processFile


SI-62漏洞出现在`processFile`处理过程中:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


进入`processFile`函数:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


直接提取上传的文件名`filename`,虽然对目录名称通过`UUIDUtil.uuid`进行了随机化处理,但是在生成保存文件名时直接进行了字符串拼接,显然可以通过构造特殊的`filename`实现路径穿越,从而将文件保存到任意可写目录。

漏洞复现


回顾前面分析,可以构造`/api/content/…`到达`ContentResource`处理接口:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


触发断点:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


成功写入:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


修复方式


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE


新增`FileUtil.sanitizeFileName`对文件名进行处理:


知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。


点关注,不迷路!

知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE



更多精彩加入漏洞空间站-优质漏洞资源和优质小伙伴聚集地!

知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE

原文始发于微信公众号(且听安全):知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE

版权声明:admin 发表于 2022年5月5日 下午11:33。
转载请注明:知识星球上线啦!!!SI-62 dotCMS路径穿越漏洞导致RCE | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...