SpringBoot Actuator 未授权访问漏洞

发布于:2025-07-11 ⋅ 阅读:(54) ⋅ 点赞:(0)

一、漏洞原理

       Spring Boot Actuator 是 Spring Boot 框架提供的监控与管理模块,通过暴露 HTTP 端点(如 /health/env)或 JMX 接口,支持开发者实时获取应用运行状态(如内存使用、线程池状态、数据库连接等)。默认配置下,部分端点存在未授权访问风险,攻击者可通过直接访问这些端点获取敏感信息,甚至执行恶意操作。

二、漏洞成因

  1. 默认配置不安全

    • Spring Boot 1.x 版本默认开启多个高风险端点(如 /env/heapdump),2.x 版本虽优化了默认配置,但仍可能因误配置(如显式暴露所有端点)导致漏洞。
    • 示例:在 application.properties 中配置management.endpoints.web.exposure.include=* 会暴露所有端点。
  2. 端点路径可预测
           Actuator 端点路径标准化(如 /actuator/env),攻击者可通过自动化工具快速枚举接口。

  3. 信息聚合风险
       多个端点的组合利用可推导出系统架构、数据库凭据、内部 API 等关键信息。例如:

    • /env 端点可能泄露数据库密码、API 密钥。
    • /trace 端点可能记录 HTTP 请求头(含会话标识符)。
    • /heapdump 端点可能包含内存快照(含敏感数据)。

三、漏洞影响

  1. 敏感信息泄露
    • 攻击者可获取应用程序配置、运行时环境、日志内容等,用于识别系统弱点并发起进一步攻击。
    • 示例:通过 /env 端点获取 MySQL 数据库密码,进而访问数据库。
  2. 系统破坏
    • 攻击者可修改配置、篡改数据、重启应用或关闭数据库连接,导致服务中断。
    • 示例:通过 /shutdown 端点(需显式启用)关闭应用。
  3. 远程代码执行(RCE):若系统使用 Jolokia 库(通过 /jolokia 端点暴露 JMX),攻击者可远程执行任意代码,获取服务器权限。

四、漏洞检测

  1. 识别 Spring Boot 应用:通过默认图标(绿色树叶)或报错页面(如 404 页面显示 Spring Boot 默认错误信息)判断。
  2. 枚举 Actuator 端点:使用工具(如 SpringBoot-Scan)扫描常见端点路径:
    /actuator/autoconfig
    /actuator/beans
    /actuator/env
    /actuator/health
    /actuator/info
    /actuator/mappings
    /actuator/metrics
    /actuator/threaddump
    /actuator/heapdump
    /actuator/jolokia
  3. 验证未授权访问:直接访问端点(如 http://target.com/actuator/env),若返回敏感信息则存在漏洞。

五、修复方案

  1. 配置安全策略
    • 引入 Spring Security:在 pom.xml 中添加依赖并配置认证:
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-security</artifactId>
      </dependency>
      在 application.properties 中启用安全配置:
      management.security.enabled=true
      security.user.name=admin
      security.user.password=强密码
  2. 禁用高风险端点
    • 显式禁用敏感端点(如 /env/heapdump):
      management.endpoints.web.exposure.exclude=env,heapdump,threaddump
    • 或完全禁用 Actuator:
      management.server.port=-1
  3. 限制访问 IP 或端口:通过防火墙规则或 Nginx 配置限制 Actuator 端口的访问来源。
  4. 使用 HTTPS 加密通信:确保 Actuator 端点仅通过 HTTPS 访问,防止数据截获。
  5. 更新依赖库:定期升级 Spring Boot 及相关依赖至最新版本,修复已知漏洞。
  6. 日志审计与监控:启用日志记录,监控异常访问行为(如频繁访问 /env 端点)。

六、防护建议

  1. 最小化暴露原则:仅启用必要的 Actuator 端点(如 /health/metrics),避免暴露敏感信息。
  2. 定期安全测试:使用工具(如 OWASP ZAP)扫描 Actuator 端点,检测未授权访问风险。
  3. 代码审查与培训:审查配置文件,确保无硬编码凭证或不安全配置;对开发人员进行安全培训,提高安全意识。
  4. 应急响应机制:一旦发现漏洞利用行为,立即隔离受影响系统,修复漏洞并通知相关方。

 结语     

最有意义的事

是把说过的话变成现实

!!!


网站公告

今日签到

点亮在社区的每一天
去签到