网安系列【18】之SpringBoot漏洞
文章目录
- Spring
- Actuator端点信息
- 框架特征及发现
- 框架特征
- 框架识别
- 漏洞利用
- 获取敏感信息
- 获取被*号脱敏的密码明文
- Getshell
Spring
- Spring是javaweb里常见的组件,好用的漏洞主要是Spring BootActuators 反序列化。
- Spring Boot 基本上是 Spring 框架的扩展。Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系 统某些监控指标进行查看、统计等。
- 在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息。
Actuator端点信息
端点路径 | 功能描述 |
---|---|
/autoconfig | 提供自动配置报告,记录哪些自动配置条件通过,哪些未通过 |
/configprops | 描述配置属性(包含默认值)如何注入到 Bean 中 |
/beans | 描述应用程序上下文中全部的 Bean 及其关系 |
/dump | 获取线程活动的快照 |
/env | 获取全部环境属性 |
/env/{name} | 根据名称获取特定的环境属性值 |
/health | 报告应用程序的健康指标,由 HealthIndicator 的实现类提供 |
/info | 获取应用程序的定制信息,由 info 开头的属性提供 |
/mappings | 描述全部的 URI 路径及其与控制器(包含 Actuator 端点)的映射关系 |
/metrics | 报告各种应用程序度量信息,如内存用量和 HTTP 请求计数 |
/metrics/{name} | 报告指定名称的应用程序度量值 |
/shutdown | 关闭应用程序,需将 endpoints.shutdown.enabled 设置为 true (默认 false) |
/trace | 提供基本的 HTTP 请求跟踪信息(如时间戳、HTTP 头等) |
框架特征及发现
框架特征
框架识别
- 小绿叶、404报错。
- 脚本工具:https://github.com/rabbitmask/SB-Actuator。
漏洞利用
获取敏感信息
- 由于actuator会监控站点 mysql、mangodb 之类的数据库服务,所以通过监控信息,可以获得mysql、mangodb等数据库相关信息。主要通过/env路径获取这些服务的配置信息。
获取被*号脱敏的密码明文
条件:
- 目标网站存在
/jolokia
接口 - 目标使用
jolokia-core
依赖 - 目标使用
spring-cloud
依赖
步骤一:找到想要获取的属性名
步骤二:jolokia 调用 org.springframework.cloud.context.environment Mbean 获取明文
Getshell
- 利用反序列化进行getshell(通过修改env配置文件进行xstream反序列化)
- 前置条件:Eureka-Client<1.8.7(多见于Spring Cloud Netflix)
- spring-boot-starter-actuator(/refresh刷新配置需要)
- spring-cloud-starter-netflix-eureka-client (功能依赖)
python3 flask xstream.py flask_xstream.py