Nacos2.4.3新版漏洞利用方式总结
字数 1940 2025-08-22 12:22:24

Nacos 2.4.3 新版漏洞利用方式深度分析

1. 漏洞背景

Nacos 是一个动态服务发现、配置和服务管理平台,广泛应用于微服务架构中。在 Nacos 2.4.3 版本中,存在多个安全漏洞和配置问题,可能导致未授权访问、权限绕过甚至远程代码执行。

2. 认证机制分析

2.1 过滤器链分析

Nacos 的认证机制主要通过以下过滤器实现:

  1. HttpRequestContextFilter

    • 获取请求头信息
    • 为后续过滤器提供请求上下文
  2. AuthFilter

    • 核心认证过滤器
    • 获取 URI 和 token
    • 实现权限控制逻辑
    • 认证流程:
      • 如果请求头存在 JWT 秘钥,进入下一个过滤器
      • 如果配置 nacos.core.auth.enable.userAgentAuthWhite=true,可通过伪造 User-Agent 绕过认证
      • 获取 URI 并从 map 中匹配路径:
        • 如果 map 中没有匹配到路径,进入下一个过滤器
        • 如果匹配到路径,检查 @Secured 注解:
          • @Secured 注解:直接进入下一个过滤器
          • @Secured 注解:验证 token(获取 IP 和 accessToken,用 JWT 秘钥解密)
  3. ParamCheckerFilter

    • 处理参数,过滤恶意字符
    • 通过 @Extractor 注解获取需要检测的参数
    • 使用 checkParamInfoList 检测参数合规性

2.2 认证绕过条件

  1. 配置 nacos.core.auth.enable.userAgentAuthWhite=true 时,可通过伪造 User-Agent 绕过认证
  2. 查找未被 @Secured 注解的路由接口

3. 未授权访问漏洞

3.1 未授权接口列表

以下接口在未正确配置认证时可能被未授权访问:

  1. 命名空间相关:

    • http://[target]:8848/nacos/v1/console/namespaces
    • http://[target]:8848/nacos/v1/console/namespaces?show=all&namespaceId=
  2. 集群操作相关:

    • http://[target]:8848/nacos/v2/ns/operator/switches
    • http://[target]:8848/nacos/v2/ns/operator/metrics?onlyStatus=false
  3. 健康检查:

    • http://[target]:8848/nacos/v1/ns/health/checkers
  4. 日志级别修改(PUT请求):

    • http://[target]:8848/nacos/v1/ns/ops/log
    • 参数:logName=naming-push&logLevel=INFO

3.2 SQL注入潜在风险

虽然大部分 SQL 查询使用预编译处理,但存在潜在风险点:

  1. 接口 /nacos/v1/ns/instance/statuses?key=DEFAULT_GROUP@@1'
    • @Extractor 注解未获取 key 参数
    • key 参数绕过检测
    • 虽然未实际执行 SQL,但存在潜在风险

4. CVE-2021-29442 漏洞利用

4.1 利用条件

  1. 使用 Derby 数据库
  2. 配置 nacos.config.derby.ops.enabled=true

4.2 漏洞利用步骤

  1. 通过 Derby SQL 接口执行 SELECT 语句
  2. 利用条件竞争进行文件上传
  3. 使用 SELECT 加载恶意包实现命令执行

5. 漏洞防御建议

  1. 强制开启认证

    • 确保 nacos.core.auth.enabled=true
    • 避免默认无认证状态
  2. 安全配置

    • 避免设置 nacos.core.auth.enable.userAgentAuthWhite=true
    • 除非必要,否则禁用 nacos.config.derby.ops.enabled
  3. 网络隔离

    • 将 Nacos 服务部署在内网
    • 配置防火墙规则限制访问来源
  4. 版本升级

    • 及时更新到最新安全版本
    • 关注官方安全公告
  5. 日志监控

    • 监控未授权访问尝试
    • 特别关注对敏感接口的访问

6. 总结

Nacos 2.4.3 版本存在多种安全风险,主要问题包括:

  1. 默认未开启认证机制
  2. 存在认证绕过可能性(User-Agent 伪造)
  3. 多个未授权访问接口
  4. Derby 数据库相关命令执行漏洞(CVE-2021-29442)

管理员应按照防御建议进行安全配置,确保服务安全运行。开发人员应注意接口的安全注解使用,避免遗漏 @Secured@Extractor 注解导致安全风险。

Nacos 2.4.3 新版漏洞利用方式深度分析 1. 漏洞背景 Nacos 是一个动态服务发现、配置和服务管理平台,广泛应用于微服务架构中。在 Nacos 2.4.3 版本中,存在多个安全漏洞和配置问题,可能导致未授权访问、权限绕过甚至远程代码执行。 2. 认证机制分析 2.1 过滤器链分析 Nacos 的认证机制主要通过以下过滤器实现: HttpRequestContextFilter 获取请求头信息 为后续过滤器提供请求上下文 AuthFilter 核心认证过滤器 获取 URI 和 token 实现权限控制逻辑 认证流程: 如果请求头存在 JWT 秘钥,进入下一个过滤器 如果配置 nacos.core.auth.enable.userAgentAuthWhite=true ,可通过伪造 User-Agent 绕过认证 获取 URI 并从 map 中匹配路径: 如果 map 中没有匹配到路径,进入下一个过滤器 如果匹配到路径,检查 @Secured 注解: 无 @Secured 注解:直接进入下一个过滤器 有 @Secured 注解:验证 token(获取 IP 和 accessToken,用 JWT 秘钥解密) ParamCheckerFilter 处理参数,过滤恶意字符 通过 @Extractor 注解获取需要检测的参数 使用 checkParamInfoList 检测参数合规性 2.2 认证绕过条件 配置 nacos.core.auth.enable.userAgentAuthWhite=true 时,可通过伪造 User-Agent 绕过认证 查找未被 @Secured 注解的路由接口 3. 未授权访问漏洞 3.1 未授权接口列表 以下接口在未正确配置认证时可能被未授权访问: 命名空间相关: http://[target]:8848/nacos/v1/console/namespaces http://[target]:8848/nacos/v1/console/namespaces?show=all&namespaceId= 集群操作相关: http://[target]:8848/nacos/v2/ns/operator/switches http://[target]:8848/nacos/v2/ns/operator/metrics?onlyStatus=false 健康检查: http://[target]:8848/nacos/v1/ns/health/checkers 日志级别修改(PUT请求): http://[target]:8848/nacos/v1/ns/ops/log 参数: logName=naming-push&logLevel=INFO 3.2 SQL注入潜在风险 虽然大部分 SQL 查询使用预编译处理,但存在潜在风险点: 接口 /nacos/v1/ns/instance/statuses?key=DEFAULT_GROUP@@1' @Extractor 注解未获取 key 参数 key 参数绕过检测 虽然未实际执行 SQL,但存在潜在风险 4. CVE-2021-29442 漏洞利用 4.1 利用条件 使用 Derby 数据库 配置 nacos.config.derby.ops.enabled=true 4.2 漏洞利用步骤 通过 Derby SQL 接口执行 SELECT 语句 利用条件竞争进行文件上传 使用 SELECT 加载恶意包实现命令执行 5. 漏洞防御建议 强制开启认证 确保 nacos.core.auth.enabled=true 避免默认无认证状态 安全配置 避免设置 nacos.core.auth.enable.userAgentAuthWhite=true 除非必要,否则禁用 nacos.config.derby.ops.enabled 网络隔离 将 Nacos 服务部署在内网 配置防火墙规则限制访问来源 版本升级 及时更新到最新安全版本 关注官方安全公告 日志监控 监控未授权访问尝试 特别关注对敏感接口的访问 6. 总结 Nacos 2.4.3 版本存在多种安全风险,主要问题包括: 默认未开启认证机制 存在认证绕过可能性(User-Agent 伪造) 多个未授权访问接口 Derby 数据库相关命令执行漏洞(CVE-2021-29442) 管理员应按照防御建议进行安全配置,确保服务安全运行。开发人员应注意接口的安全注解使用,避免遗漏 @Secured 和 @Extractor 注解导致安全风险。