【JavaEE安全】Spring Boot 安全实战:Actuator 监控泄漏与 Swagger 接口利用

警告:以下内容仅用于安全研究与授权测试,未经许可的攻击行为属于违法行为。


一、Spring Boot Actuator:监控端点与信息泄漏

1.1 Actuator 核心端点与风险

Actuator 提供了一系列生产环境监控端点,若暴露不当,会导致严重的信息泄漏。以下是高风险端点的利用价值:

端点 请求方法 安全风险 利用价值
/actuator/env GET 极高 泄漏配置属性,包括数据库密码、API Key 等敏感信息(部分会被*替换)。
/actuator/heapdump GET 极高 下载 JVM 堆转储文件,可提取明文密码、密钥、接口信息等。
/actuator/httptrace GET 泄漏历史 HTTP 请求,包含用户 Cookie、Session 等,可导致会话劫持。
/actuator/mappings GET 泄漏所有路由映射信息,帮助攻击者发现未公开接口。
/actuator/logfile GET 直接访问应用日志文件,可能包含业务逻辑、错误堆栈和敏感数据。
/actuator/shutdown POST 极高 未授权访问可直接关闭应用程序,导致服务中断。

1.2 开发配置与风险点

依赖引入
xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
暴露配置(风险操作)

application.yml 中暴露所有端点,这是最常见的风险配置:

yaml 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*"  # 暴露所有端点

1.3 Heapdump 利用实战

Heapdump 文件是 JVM 堆内存的完整快照,包含了应用运行时的所有对象。攻击者可通过以下步骤利用:

  1. 获取 Heapdump

    直接访问 GET /actuator/heapdump 下载 heapdump.hprof 文件。

  2. 分析工具

    • jvisualvm:JDK 自带工具,可直观浏览堆内对象。

    • JDumpSpider :专用工具,可自动化提取敏感信息。

      bash 复制代码
      java -jar JDumpSpider.jar heapdump.hprof
  3. 提取信息

    从堆转储中可提取到数据库连接串、第三方服务密钥、用户会话数据等明文敏感信息,为后续攻击提供弹药。

1.4 可视化 Admin 界面

Actuator 可配合 Spring Boot Admin 实现图形化监控,但同样存在风险:

  • Server 端 :引入依赖并使用 @EnableAdminServer 注解开启。
  • Client 端:配置 Server 地址进行注册。
  • 风险:若未配置认证,攻击者可通过 Admin 界面直接查看所有端点信息,甚至操作应用。

二、Swagger:接口文档与攻击面扩展

2.1 Swagger 版本与配置

依赖引入
  • 2.9.2 版本
xml 复制代码
<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>
  • 3.0.0+ 版本
xml 复制代码
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-boot-starter</artifactId>
  <version>3.0.0</version>
</dependency>
路径匹配配置

为确保 Swagger 正常工作,需在 application.yml 中配置路径匹配策略:

yaml 复制代码
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

2.2 访问路径

Swagger 版本 访问路径
2.x http://ip:port/swagger-ui.html
3.x http://ip:port/swagger-ui/index.html

2.3 安全利用:从文档到攻击

Swagger 文档泄漏了应用的 API 结构,是攻击者的"攻击地图"。

  1. 信息收集

    • 发现所有接口、请求方法、参数和返回值。
    • 识别敏感接口,如文件上传、用户管理、内部服务调用等。
  2. 自动化测试

    • 将 Swagger 文档导入 Postman 或其他测试工具,生成自动化测试用例。
    • 对所有接口进行未授权访问测试、参数篡改测试、文件上传漏洞测试等。
  3. 攻击面扩展

    • 利用泄漏的接口进行暴力破解、越权访问。
    • 发现未授权的文件上传接口,尝试上传恶意文件实现 RCE。
    • 结合 Actuator 泄漏的信息,构造更精准的攻击 Payload。

三、安全案例:JVM 泄漏与接口自动化

3.1 JVM 信息泄漏链

一个典型的攻击链如下:

  1. 访问 /actuator/env,发现数据库密码被部分脱敏,但获取了服务版本和组件信息。
  2. 访问 /actuator/heapdump 下载堆转储文件。
  3. 使用 JDumpSpider 分析 heapdump,提取出明文的数据库密码、AWS 密钥和内部 API 地址。
  4. 利用这些信息直接登录数据库,或调用内部 API 进行进一步破坏。

3.2 接口自动化攻击

  1. 访问 Swagger 文档,导出所有接口定义。
  2. 使用脚本或工具(如 Postman Runner)对所有接口进行自动化扫描。
  3. 测试发现一个未授权的 /api/upload 接口,成功上传 JSP Webshell。
  4. 结合从 heapdump 中获取的信息,提权并控制整个服务器。

四、总结与实战要点

  • Actuator 是 Spring Boot 应用的"信息宝库",heapdumpenv 是最高价值的攻击目标。
  • Swagger 是应用的"攻击蓝图",泄漏的接口信息可极大降低攻击难度。
  • 在渗透测试中,应优先检查这两个组件的暴露情况,它们往往是突破边界的关键入口。

参考链接

相关推荐
鸽鸽程序猿2 小时前
【JavaEE】【SpringAI】聊天模型
java·java-ee
zmj3203242 小时前
CSMS VS ISMS管理体系
安全·网络安全·信息安全
德迅云安全-小潘2 小时前
智能风暴:2026年网络安全进入“AI对攻”时代
人工智能·安全·web安全
子一!!2 小时前
JavaEE初阶第一课时==计算机与系统讨论==
java·java-ee
xuansec2 小时前
【JavaEE安全】Java反射机制:核心原理、实战应用与安全风险管控
java·安全·java-ee
xuansec2 小时前
【JavaEE安全】Spring Boot 安全实战:从路由响应到 MyBatis 注入与 Thymeleaf SSTI
spring boot·安全·java-ee
Bruce_Liuxiaowei2 小时前
[特殊字符]OpenClaw爆火背后的安全冷思 MEMORY.md与SKILL.md:安全架构与最佳实践
人工智能·安全·ai·agent·安全架构·智能体
于眠牧北2 小时前
分布式环境在@Transation注解下锁释放问题
spring boot·redis·分布式
珠海西格2 小时前
红区蔓延的底层逻辑:分布式光伏爆发与配电网短板的“时空错配”
大数据·服务器·分布式·安全·架构