SpringScan

Project Url: metaStor/SpringScan
Introduction: SpringScan 漏洞检测 Burp 插件
More: Author   ReportBugs   
Tags:

支持检测漏洞

  • [x] Spring Core RCE (CVE-2022-22965)
  • [x] Spring Cloud Function SpEL RCE (CVE-2022-22963)
  • [x] Spring Cloud GateWay SPEL RCE (CVE-2022-22947)

回连平台

  • [x] Dnglog (默认)
  • [x] BurpCollaboratorClient
  • [x] Ceye
  • [ ] Digpm
  • [ ] 支持自定义回连平台

CVE-2022-22965 检测方法

利用条件

  • JDK9 及其以上版本;
  • 使⽤了 Spring-beans 包;
  • 使⽤了 Spring 参数绑定,参数绑定使⽤的是⾮基本参数类型,如 POJO ;

  • 使用 Tomcat 部署,且日志记录功能开启(默认开启)

因为这个洞上传 shell 还需要准确的 web 路径(默认在 webapps\ROOT),写 ssh 和计划任务也需要 root 权限。实战中用 exp 去检测漏洞不太现实,所以思路转变到使用其他方法去检测漏洞的存在性。主要通过下面两种方式检测:

  • 回显检测
  • 回连检测(Digpm/BurpCollaboratorClient/Dnglos/Ceye)

详细原理 ➡️ https://www.t00ls.cc/articles-65348.html

检测置信度:

回连检测 > 回显检测

回显检测误报率较大,可能存在漏洞但不能保证 JDK 版本大于等于9,可以及时捕捉到不出网的漏洞;回连检测准确率高,不适用于不出网环境。 推荐在内网的环境只开启回显检测,在公网环境开回显检测和回连检测。

CVE-2022-22963 检测方法

利用条件

  • 默认路由/functionRouter存在 SpEL 表达式注入

两种检测方法:

  • 通过 Java 自带 InetAddres 库:spring.cloud.function.routing-expression:T(java.net.InetAddress).getByName("xxx.dnslog.cn")回连探测(可绕过 WAF 拦截命令执行进行漏洞探测)
  • 通过执行ping命令:spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("ping xxx.dnslog.cn")回连探测
  • 会扫描当前 URI、以及当前 URI 拼接默认路由/functionRouter进行漏洞探测。

CVE-2022-22947 检测方法

  • 利用条件

该漏洞为当 Spring Cloud Gateway 启用和暴露 Gateway Actuator 端点时,使用 Spring Cloud Gateway 的应用程序可受到代码注入攻击。攻击者可以发送特制的恶意请求,从而远程执行任意代码。

检测方法:

  • 两种方法判断是否是 SpringGateway:
  • 1.随机访问一个不存在的路径,根据特征Whitelabel Error Page判断是否是 Spring 框架(1.x/2.x);
  • 2.直接访问/actuator/gateway/routes、/prod-api/actuator/gateway/routes,根据特征route_id判断;
  • 3.POC 分五个请求:包含恶意 SpEL 表达式的路由 -> 刷新路由 -> 访问添加的路由查看 RCE 结果 -> 删除路由 -> 刷新路由

插件情况

回显检测 回连检测
Spring Core RCE (CVE-2022-22965) Spring Core RCE (CVE-2022-22965)
Spring Cloud GateWay SPEL RCE (CVE-2022-22947) Spring Cloud Function SpEL RCE (CVE-2022-22963)

TODO

  • [x] 解决扫描结果显示一直等待的问题
  • [x] 配置可保存本地
  • [ ] 优化 ScannerUI(增加清除按钮、CVE 条目、多个漏洞显示)
  • [ ] 新增其他 Spring 漏洞

编译

如需编译其他 JDK 版本,可参考如下方法编译 jar 包:

image-20220409120135726

image-20220409120218010

image-20220409120315324

image-20220409120455863

截图

  • 加载插件成功

image-20220430195312197

  • 漏洞检测情况

image-20220411234911184

image-20220411234930710

image-20220411234948718

  • 报错检测情况

image-20220425233957353

target 模块中可以看到漏洞详情

image-20220409124402852

  • 插件设置,检测方法默认全开启,回连平台默认Dnslog

image-20220409120720309

image-20220413012818703

  • 主动扫描:当不希望每个 URL 都做被动扫描时,可以将插件关闭(检测方法正常开启),右键请求数据包 -> Extensions -> SpringScan -> doScan即可进行主动扫描:

image-20220430194559458

  • 插件配置可保存

image-20231112032954897

免责声明

本工具仅作为安全研究交流,请勿用于非法用途。如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,本人将不承担任何法律及连带责任。

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools