警告:以下内容仅用于安全研究与授权测试,未经许可的攻击行为属于违法行为。
一、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 堆内存的完整快照,包含了应用运行时的所有对象。攻击者可通过以下步骤利用:
-
获取 Heapdump :
直接访问
GET /actuator/heapdump下载heapdump.hprof文件。 -
分析工具:
-
jvisualvm:JDK 自带工具,可直观浏览堆内对象。
-
JDumpSpider :专用工具,可自动化提取敏感信息。
bashjava -jar JDumpSpider.jar heapdump.hprof
-
-
提取信息 :
从堆转储中可提取到数据库连接串、第三方服务密钥、用户会话数据等明文敏感信息,为后续攻击提供弹药。
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 结构,是攻击者的"攻击地图"。
-
信息收集:
- 发现所有接口、请求方法、参数和返回值。
- 识别敏感接口,如文件上传、用户管理、内部服务调用等。
-
自动化测试:
- 将 Swagger 文档导入 Postman 或其他测试工具,生成自动化测试用例。
- 对所有接口进行未授权访问测试、参数篡改测试、文件上传漏洞测试等。
-
攻击面扩展:
- 利用泄漏的接口进行暴力破解、越权访问。
- 发现未授权的文件上传接口,尝试上传恶意文件实现 RCE。
- 结合 Actuator 泄漏的信息,构造更精准的攻击 Payload。
三、安全案例:JVM 泄漏与接口自动化
3.1 JVM 信息泄漏链
一个典型的攻击链如下:
- 访问
/actuator/env,发现数据库密码被部分脱敏,但获取了服务版本和组件信息。 - 访问
/actuator/heapdump下载堆转储文件。 - 使用 JDumpSpider 分析 heapdump,提取出明文的数据库密码、AWS 密钥和内部 API 地址。
- 利用这些信息直接登录数据库,或调用内部 API 进行进一步破坏。
3.2 接口自动化攻击
- 访问 Swagger 文档,导出所有接口定义。
- 使用脚本或工具(如 Postman Runner)对所有接口进行自动化扫描。
- 测试发现一个未授权的
/api/upload接口,成功上传 JSP Webshell。 - 结合从 heapdump 中获取的信息,提权并控制整个服务器。
四、总结与实战要点
- Actuator 是 Spring Boot 应用的"信息宝库",
heapdump和env是最高价值的攻击目标。 - Swagger 是应用的"攻击蓝图",泄漏的接口信息可极大降低攻击难度。
- 在渗透测试中,应优先检查这两个组件的暴露情况,它们往往是突破边界的关键入口。
参考链接: