小迪安全 · 第 39 课学习笔记

文章目录

  • [🧾 小迪安全 · 第 39 课学习笔记](#🧾 小迪安全 · 第 39 课学习笔记)
    • [1️⃣ Actuator 自动化页面与安全要点](#1️⃣ Actuator 自动化页面与安全要点)
    • 图片展示
      • [💡 基本概念](#💡 基本概念)
      • [🧭 常见 URL 示例(默认路径)](#🧭 常见 URL 示例(默认路径))
      • [⚠️ 常见漏洞与风险](#⚠️ 常见漏洞与风险)
      • [🔧 自动化检测与工具](#🔧 自动化检测与工具)
      • [🧩 防护建议](#🧩 防护建议)
  • [🧩 在 Spring Boot 中关闭敏感 Actuator 端点](#🧩 在 Spring Boot 中关闭敏感 Actuator 端点)
    • [🧱 一、核心思路](#🧱 一、核心思路)
    • [⚙️ 二、在 application.yml 中的安全配置](#⚙️ 二、在 application.yml 中的安全配置)
      • [🧭 说明](#🧭 说明)
    • [🧩 三、使用 application.properties 的等效写法](#🧩 三、使用 application.properties 的等效写法)
    • [🧠 四、可选加强措施(分层防护)](#🧠 四、可选加强措施(分层防护))
    • [✅ 五、效果测试](#✅ 五、效果测试)
    • [✍️ **总结:**](#✍️ 总结:)
    • [2️⃣ Swagger 接口文档与安全要点](#2️⃣ Swagger 接口文档与安全要点)
      • [💡 基本概念](#💡 基本概念)
      • [🎨 界面特征](#🎨 界面特征)
      • [⚠️ 常见安全风险](#⚠️ 常见安全风险)
      • [🧰 关联检测方法](#🧰 关联检测方法)
      • [🧩 防护建议](#🧩 防护建议)
    • [3️⃣ 综合理解](#3️⃣ 综合理解)
    • [🧩 关键思维收获](#🧩 关键思维收获)

🧾 小迪安全 · 第 39 课学习笔记

主题:Spring Boot Actuator 与 Swagger 接口安全分析

时间:自学整理

作者:韩昊川


1️⃣ Actuator 自动化页面与安全要点

图片展示

💡 基本概念

  • Actuator :Spring Boot 提供的监控与管理模块,
    可查看运行状态、环境变量、日志级别、应用信息等。
  • 提供大量HTTP 端点 (endpoint),如:
    • /actuator/health --- 健康状态
    • /actuator/info --- 应用信息
    • /actuator/env --- 系统环境变量
    • /actuator/heapdump --- JVM 堆转储
    • /actuator/threaddump --- 线程转储

这些端点若未做访问控制,将直接暴露敏感数据。


🧭 常见 URL 示例(默认路径)

apl 复制代码
http://<host>:8080/actuator
http://<host>:8080/actuator/health
http://<host>:8080/actuator/env
http://<host>:8080/actuator/heapdump

⚠️ 常见漏洞与风险

漏洞场景 风险说明
未授权访问 / 信息泄露 /env 或 /configprops 中可看到数据库凭据、API 令牌、密钥等。
heapdump 泄露 /heapdump 会生成 JVM 堆快照(.hprof);可被攻击者下载并利用分析工具从中提取密码、JWT Token 等敏感信息。
threaddump 泄露 暴露线程栈、类加载路径、系统路径结构;可推测内部框架版本。

🔧 自动化检测与工具

常见脚本或安全扫描器可以:

  1. 枚举 Actuator 端点;
  2. 自动下载 heapdump 文件;
  3. 分析 .hprof 中的可疑字符串(Token、凭据、URL 等)。

👉 教学中展示了可利用的自动化工具,可快速完成上述操作。

复制代码
1、jvisualvm分析器

需要进行安装
🔗 VisualVM 官网
👉 https://visualvm.github.io/

2、自动化提取:JDumpSpider 提取器 

🧩 防护建议

  • 上线前关闭未使用的端点:

    YAML 复制代码
    management:
      endpoints:
        web:
          exposure:
            exclude: env,heapdump,threaddump
  • 对敏感端点启用认证(如 Spring Security)。

  • 在生产环境中仅开放 /health/info 等必要端点。


🧩 在 Spring Boot 中关闭敏感 Actuator 端点

🧱 一、核心思路

Spring Boot Actuator 把所有端点统一管理。

想屏蔽某些危险的端点(比如 /heapdump/env 之类),

只需在配置文件中调整端点的 暴露策略显式禁用


⚙️ 二、在 application.yml 中的安全配置

yaml 复制代码
management:
  endpoints:
    enabled-by-default: true        # 默认启用全部端点(Spring Boot 2.x/3.x)
    web:
      exposure:
        include: health,info        # 仅暴露健康和基本信息
        exclude: env,heapdump,threaddump,beans,configprops # 明确禁止列出的端点
  endpoint:
    # 显式关闭敏感端点
    env:
      enabled: false
    heapdump:
      enabled: false
    threaddump:
      enabled: false

🧭 说明

  • include 决定哪些端点可以通过 HTTP 访问;未列出则不再公开。
  • exclude 用来排除掉指定端点。
  • endpoint.<name>.enabled: false 会彻底禁用该端点(不仅网页无法访问,管理 API 也不会注册)。

🧩 三、使用 application.properties 的等效写法

properties 复制代码
management.endpoints.web.exposure.include=health,info
management.endpoints.web.exposure.exclude=env,heapdump,threaddump,configprops
management.endpoint.env.enabled=false
management.endpoint.heapdump.enabled=false
management.endpoint.threaddump.enabled=false

🧠 四、可选加强措施(分层防护)

  1. 添加访问鉴权

    通过 Spring Security 限制 /actuator/** 端点。

    java 复制代码
    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                .antMatchers("/actuator/health", "/actuator/info").permitAll()
                .antMatchers("/actuator/**").hasRole("ADMIN")
                .and()
                .httpBasic(); // 简单示例,生产建议使用 Token/OAuth2
        }
    }
  2. 在生产环境禁用 Web 暴露

    yaml 复制代码
    management:
      endpoints:
        web:
          exposure:
            include: []   # 不暴露任何 Web 端点
      server:
        port: 0          # 或单独监听端口,仅内部使用

✅ 五、效果测试

访问路径 状态 说明
/actuator/health 200 可正常访问
/actuator/info 200 可正常访问
/actuator/env 404 已禁用
/actuator/heapdump 404 已禁用
/actuator/threaddump 404 已禁用

✍️ 总结:

只要在配置中排除或禁用敏感端点,就能让 heapdump/env 等路径不可访问;

再配合授权机制,基本可以消除 Actuator 暴露导致的信息泄露风险。


2️⃣ Swagger 接口文档与安全要点

💡 基本概念

  • Swagger UI:自动生成的 API 文档与测试页面。

  • 默认入口一般位于:

    复制代码
    /swagger-ui.html
    /swagger-ui/index.html
    /doc.html            (部分框架使用)
  • 开发阶段常用于:

    • 展示所有 Controller 接口;
    • 描述参数、返回值;
    • 直接在线调试。

🎨 界面特征

  • 网页上列出所有 API 路径、请求方式、说明;
  • 每个接口下方都有 "Try it out" 按钮,可直接发送请求;
  • 输入参数 → 点击执行 → 实时查看响应。

⚠️ 常见安全风险

问题 风险描述
Swagger 未关闭或未鉴权 暴露所有接口信息(包括内部调试接口、管理接口)。
参数结构可直接枚举 便于攻击者批量测试接口、发现敏感接口。
可直接执行危险接口 攻击者可在 Swagger 页面执行敏感操作(如创建用户、删除记录)。

🧰 关联检测方法

  • 访问常规 URL:

    yaml 复制代码
    http://<host>:8080/swagger-ui.html
    http://<host>:8080/swagger-ui/index.html
    http://<host>:8080/v2/api-docs
  • 使用

    Postman:

    • 导入 swagger.json 或 api-docs 文件;
    • 批量调用接口做自动化检测(可验证授权、参数过滤等)。

🧩 防护建议

  • 仅在开发/测试环境启用 Swagger。

  • 配置 Spring Security 或网关鉴权。

  • 项目上线前:

    yaml 复制代码
    springfox:
      documentation:
        swagger-ui:
          enabled: false

    或完全剔除相关依赖。


3️⃣ 综合理解

项目 作用 潜在风险 防护思路
Actuator 监控运行状态、健康检查 端点泄露系统信息、凭据、堆内容 严控暴露端点、启用鉴权
Swagger 生成、测试 API 文档 全接口暴露、业务泄露、越权访问 禁止生产使用或加认证、限制访问来源

🧩 关键思维收获

  1. 接口暴露 = 攻击面增加
  2. 任何调试 / 管理页面都属高敏信息
  3. 审计时要检查这些默认路径是否可访问
  4. 安全检测要结合自动化工具 + 手动验证

✅ "开发者眼中的便利,往往是攻击者眼中的入口。"

审计时从易被忽略的"默认功能"入手,常常能发现高价值的信息泄露。"

补充:

IDEA 中的模块拥有自己的 src 目录,是因为模块代表一个可独立编译的构建单元。
每个模块需要独立的源文件、资源和输出路径,IDEA 因而为它配置src目录结构。

Swagger 就是一个可以自动列出你所有 API 接口、说明它们参数与返回值,并让你直接在网页上点几下就能测试的智能说明书系统。

配置swagger3时,需要在propersties文件中配置

相关推荐
好奇龙猫4 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
沈浩(种子思维作者)4 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
saoys4 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
电子小白1235 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
唯情于酒6 小时前
Docker学习
学习·docker·容器
clorisqqq7 小时前
人工智能现代方法笔记 第1章 绪论(1/2)
人工智能·笔记
charlie1145141917 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
vortex57 小时前
Wfuzz 全面使用指南:Web 应用模糊测试工具详解
网络安全·渗透测试·kali
IT=>小脑虎8 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
#眼镜&8 小时前
嵌入式学习之路2
学习