第50天-SpringBoot监控与接口文档:Actuator与Swagger实战

admin 2026-03-03 06:35:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解SpringBootActuator与Swagger的集成配置与安全风险。重点剖析heapdump泄露及CVE-2022-22947漏洞复现,建议禁用敏感端点并升级组件。针对Swagger,强调生产环境应关闭或加固鉴权以防未授权访问,为开发者提供兼顾便利性与安全性的最佳实践。 综合评分: 86 文章分类: 应用安全,安全建设,漏洞分析,WEB安全


cover_image

第50天-Spring Boot 监控与接口文档:Actuator 与 Swagger 实战

原创

萧瑶 萧瑶

AlphaNet

2026年2月24日 11:04 韩国

在 Spring Boot 应用开发中,生产级监控与自动化接口文档是两个至关重要的环节。

· Actuator 帮助我们在应用运行时监控健康状况、收集指标、追踪 HTTP 请求等。

· Swagger 则让接口文档实时生成并可视化,极大提升前后端协作效率。

本文基于 Spring Boot,深入讲解 Actuator 和 Swagger 的集成、配置、安全风险及防护措施,并附带实际漏洞案例,帮助你全面掌握这两大工具的生产用法。


第一部分:Spring Boot Actuator —— 生产级监控与管理

  1. 什么是 Actuator?

Spring Boot Actuator 是 Spring Boot 提供的生产级功能模块,它通过一系列 HTTP 端点 或 JMX 暴露应用内部状态,包括:

· 健康检查(/actuator/health)

· 指标信息(/actuator/metrics)

· 环境属性(/actuator/env)

· 线程转储(/actuator/threaddump)

· 堆转储(/actuator/heapdump)等

借助这些端点,运维人员可以实时监控应用,开发人员可以快速定位问题。

  1. 快速开始:引入依赖与基础配置

2.1 添加 Maven 依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

2.2 配置暴露的端点

默认情况下,只有 health 和 info 端点通过 HTTP 暴露。若要暴露所有端点(生产环境请谨慎),可如下配置:

application.properties

management.endpoints.web.exposure.include=\*

application.yml

management:

endpoints:

web:

exposure:

include: '\*'

启动应用后,访问 http://localhost:8080/actuator 即可看到所有可用端点。

  1. 端点安全配置:禁用敏感端点

部分端点(如 env、heapdump)可能泄露敏感信息(数据库密码、API密钥等),务必在正式环境禁用或严格保护。

application.properties

management.endpoint.env.enabled=false

management.endpoint.heapdump.enabled=false

application.yml

management:

endpoint:

heapdump:

enabled: false&nbsp; &nbsp; &nbsp; # 禁用 heapdump 端点

env:

enabled: false&nbsp; &nbsp; &nbsp; # 禁用 env 端点

提示:还可以结合 Spring Security 为端点设置访问权限,例如仅允许内网或特定角色访问。

  1. 图形化监控:Spring Boot Admin

Spring Boot Admin 是一个社区项目,提供了可视化的 Web UI 来管理多个 Spring Boot 应用。

· Server 端:作为监控中心,需要添加依赖并启用 @EnableAdminServer。

· Client 端:被监控的应用,向 Server 注册并上报状态。

快速搭建示例

Server 端

<dependency>

<groupId>de.codecentric</groupId>

<artifactId>spring-boot-admin-starter-server</artifactId>

<version>2.7.10</version>

</dependency>

启动类添加 @EnableAdminServer。

Client 端

<dependency>

<groupId>de.codecentric</groupId>

<artifactId>spring-boot-admin-starter-client</artifactId>

<version>2.7.10</version>

</dependency>

配置文件中指定 Admin Server 地址:

spring.boot.admin.client.url: http://localhost:8081
  1. 安全问题深入:heapdump 泄漏与利用

heapdump 端点会生成当前 JVM 堆的转储文件(.hprof),其中可能包含内存中的明文密码、令牌、数据库连接串等敏感信息。攻击者获取该文件后,可使用工具提取关键数据。

常见分析工具

· JDumpSpider:https://github.com/whwlsfb/JDumpSpider

一款专门从堆转储文件中提取敏感信息的工具。

· heapdump_tool:https://github.com/wyzxxz/heapdump_tool

同样用于分析 heapdump,自动提取密码、配置等。

· jvisualvm(JDK 自带):可手动浏览堆对象,但效率较低。

防护建议

· 生产环境务必关闭 heapdump 端点(如上述配置)。

· 如果必须开启,应结合 Security 限制访问 IP 或增加身份验证。

  1. 额外漏洞案例:Spring Cloud Gateway RCE (CVE-2022-22947)

该漏洞利用 Actuator 端点配合 Gateway 动态路由功能,可导致远程代码执行。

漏洞复现环境搭建

  1. 创建 Spring Boot 项目,使用以下版本(漏洞版本):
<spring-boot.version>2.5.2</spring-boot.version>

<spring-cloud.version>2020.0.3</spring-cloud.version>
  1. 添加 Gateway 依赖(漏洞版本 3.1.0):
<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

<version>3.1.0</version>

</dependency>
  1. 启用 Actuator 并暴露 Gateway 端点:
management.endpoints.web.exposure.include=gateway,...
  1. 发送恶意请求 创建含 SpEL 表达式的路由,触发 RCE。

详细复现步骤可参考:https://www.cnblogs.com/qgg4588/p/18104875

防范措施

· 升级 Spring Cloud Gateway 至安全版本(>=3.1.1)。

· 若不需动态路由,可禁用 Actuator 的 gateway 端点。

· 严格限制 Actuator 端点的访问权限。


第二部分:Spring Boot Swagger —— 自动化接口文档

  1. Swagger 简介

Swagger 是一套开源的接口文档工具,它通过注解自动生成 RESTful API 文档,并提供可视化的测试页面(Swagger UI)。在前后端分离开发中,Swagger 能保证文档与代码实时同步,减少沟通成本。

  1. 快速集成 Swagger

2.1 引入依赖

Swagger 2.9.2(较老版本,仍广泛使用)

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.9.2</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.9.2</version>

</dependency>

Swagger 3.0.0(推荐,基于 OpenAPI 3)

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-boot-starter</artifactId>

<version>3.0.0</version>

</dependency>

2.2 配置路径匹配策略

Spring Boot 2.6+ 默认路径匹配策略改为 path-pattern-parser,与 Swagger 不兼容,需修改为 ant-path-matcher:

application.properties

spring.mvc.pathmatch.matching-strategy=ant-path-matcher

application.yml

spring:

mvc:

pathmatch:

matching-strategy: ant\_path\_matcher

2.3 启用 Swagger

· Swagger 2.x:在启动类或配置类上加 @EnableSwagger2。

· Swagger 3.x:可加 @EnableOpenApi,但 starter 已自动配置,通常无需显式注解。

2.4 访问 Swagger UI

· Swagger 2.x:http://ip:port/swagger-ui.html

· Swagger 3.x:http://ip:port/swagger-ui/index.html

  1. 接口测试与安全风险

Swagger 将应用所有接口暴露在 UI 上,方便开发测试的同时,也给攻击者提供了攻击面。常见风险包括:

· 接口未授权访问(如用户登录、后台管理接口)

· 敏感信息泄露(通过接口返回数据结构)

· 文件上传接口被滥用

· 接口参数未做校验,导致 SQL 注入、XSS 等

自动化测试工具

这些工具既可辅助开发测试,也可被攻击者用于扫描接口:

· Apifox / Postman / Reqable:接口调试与自动化测试

· 攻击者可能通过 Swagger UI 获取接口列表,然后针对未授权接口或文件上传等功能发起攻击。

安全建议

· 生产环境关闭 Swagger 暴露:可通过 @Profile(“!prod”) 条件注解或配置 springfox.documentation.enabled=false 控制。

· 若必须在线提供文档,应添加访问权限控制(如 Spring Security 认证)。

· 对所有接口实施严格的权限校验和输入验证。


总结

Spring Boot Actuator 和 Swagger 是开发与运维的利器,但若配置不当,也可能成为系统安全的突破口。

· Actuator 应遵循最小暴露原则,禁用敏感端点,并结合监控系统(如 Spring Boot Admin)统一管理。

· Swagger 在开发环境能极大提升效率,但务必在生产环境关闭或加以保护。

掌握这两大工具的正确用法,才能让 Spring Boot 应用既健壮又安全。


参考资源

· Spring Boot 官方文档

· Spring Boot Actuator 官方指南

· Swagger 与 Spring Boot 集成

· SpringBootVulExploit

· SpringBootVul-GUI


希望这份学习笔记能帮助你在 Spring Boot 开发中更好地应用监控与接口文档技术!如果你有任何疑问或经验分享,欢迎留言讨论。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:AlphaNet 萧瑶 萧瑶《第50天-Spring Boot 监控与接口文档:Actuator 与 Swagger 实战》

评论:0   参与:  0