小迪安全 · 第 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文件中配置

相关推荐
非凡ghost3 小时前
Topaz Video(人工智能视频增强软件)
人工智能·windows·学习·音视频·软件需求
西西学代码3 小时前
《Flutter实战笔记》
笔记
小韩博3 小时前
小迪第40天:安全开发-JavaEE应用&SpringBoot框架&JWT身份鉴权&打包部署JAR&WAR
spring boot·安全·web安全·java-ee
重生之我在番茄自学网安拯救世界3 小时前
网络安全中级阶段学习笔记(十):upload靶场实战(17关以及问题解决)
笔记·学习·网络安全·文件上传漏洞·图片木马
爱吃香蕉的阿豪3 小时前
NET Core中ConcurrentDictionary详解:并发场景下的安全利器及服务端实践
安全·http·.netcore·高并发
汽车通信软件大头兵4 小时前
信息安全--安全XCP方案
网络·安全·汽车·uds
老猿讲编程4 小时前
【车载信息安全系列2】车载控制器中基于HSE的多密钥安全存储和使用
网络·安全
唐僧洗头爱飘柔95275 小时前
【软考:程序员(03)】如何考得程序员证书?本片知识点:文件目录、目录结构、文件路径、文件命名规则、系统安全、用户权限、作业调度、用户界面
安全·系统安全·文件管理·用户界面·用户权限·作业调度算法·文件命名规则
宵时待雨5 小时前
C语言笔记归纳20:文件操作
c语言·开发语言·笔记·算法