Apache Struts是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品,Struts 1和Struts 2。REST plugin是其中的一个处理传入URL请求的插件。 攻击者可以通过构造恶意XML请求在目标服务器上远程执行任意代码。漏洞的成因是由于使用XStreamHandler反序列化XStream实例的时候没有执行严格的过滤导致远程代码执行。
点击Edit编辑,使用Burp抓包
GET /orders/3/edit HTTP/1.1 Host: 192.168.11.139:44459 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,**;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://192.168.11.139:44459/orders.xhtml?statusCode=303 Cookie: JSESSIONID=468D9BDE0F727DC4A893211E4AA7DF42 DNT: 1 X-Forwarded-For: 8.8.8.8 Connection: close Upgrade-Insecure-Requests: 1 If-None-Match: 2137470 Content-Type: application/xml Content-Length: 2415
发送请求
以上数据包成功执行的话,会在docker容器内创建文件/tmp/success
#进入容器查看 #a6c677903969为容器ID docker exec -it a6c677903969 /bin/bash
poc下载:
GitHub - Lone-Ranger/apache-struts-pwn_CVE-2017-9805: An exploit for Apache Struts CVE-2017-9805



