Struts2默认的content-type解析器会把用户传来的数据直接当成代码执行,造成rce。
流量特征在请求头中存在OGNL表达式;memberaccess字段 url:xxx.action、xxx.do结尾就是struts框架;struts2一些常见的关键字:memberAcecess,getRuntime,println,双引号,单引号,等号,括号之类的符号。
struts2-046 远程代码执行 (CVE-2017-5638)
Apache Struts是美国阿帕奇(Apache)软件基金会的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品,Struts 1和Struts 2。 攻击者可以将恶意代码放入http报文头部的Content-Disposition的filename字段,通 过不恰当的filename字段或者大小超过2G的Content-Length字段来触发异常,进而导致任意代码执行。
struts-s2-009 代码执行 (CVE-2011-3923)
这个漏洞跟s2-003 s2-005 属于一套的。 Struts2对s2-003的修复方法是禁止#号,于是s2-005通过使用编码\u0023或\43来绕过;于是Struts2对s2-005的修复方法是禁止\等特殊符号,使用户不能提交反斜线。 但是,如果当前action中接受了某个参数example,这个参数将进入OGNL的上下文。所以,我们可以将OGNL表达式放在example参数中,然后使用/HelloWorld.acton?example=&(example)('xxx')=1的方法来执行它,从而绕过官方对#、\等特殊字符的防