跳到主要内容

Consul 未授权 KV 读取与快照利用

HashiCorp Consul 默认在 8500 端口提供 HTTP API,并在 8600/udp 提供 DNS 接口。未启用 ACL 时,任何人都能递归读取全部 KV 存储——其中常存服务配置、数据库密码与功能开关;/v1/snapshot 甚至能下载包含证书与 CA 私钥的集群快照。

仅限授权环境

读取与下载目标 Consul 数据仅在授权测试或靶场环境进行。


服务识别

curl http://<target>:8500/v1/agent/self

返回版本与配置信息即说明没有 ACL 拦截。8600/udp 是 DNS 接口,需发送合法 DNS 查询(dig -p 8600)才有响应,普通端口扫描看不出服务身份。


方法 A:递归拉取 KV

curl http://<target>:8500/v1/kv/?recurse

值为 base64 编码,用 base64 -d 解码后查看。KV 中常见内容:

KV 内容价值
服务配置内部地址、端口、账号
数据库密码直接复用到对应服务
功能开关判断安全机制是否启用

方法 B:下载集群快照

curl -o snapshot.bin http://<target>:8500/v1/snapshot

快照内含证书与 CA 私钥等敏感材料,拿到后可作为进一步伪造身份与建立信任的基础。

方法 C:KV 作为离线载荷中转站

拥有 KV 写权限时,可把它当作离线载荷中转站:大值分块存放到多个 key,内网主机之间经 KV 交换数据,规避直接的点对点连接。


复核要点

  • /v1/agent/self 结果记录 Consul 版本与配置,判断后续可用能力。
  • KV 递归结果全部解码后逐条查看,注意嵌套路径中的凭据。
  • 快照文件属于高敏感材料,留档并安全存放。

防御建议

  1. 启用 ACL,默认策略拒绝匿名读取。
  2. HTTP API 只绑定 127.0.0.1,必要时经反代加认证暴露。
  3. 启用 gossip 加密。
  4. 快照接口加鉴权,下载行为纳入审计。