[2021]Zookeeper getAcl命令未授权访问漏洞概述与解决

今天在漏洞扫描的时候蹦出来一个zookeeper的漏洞问题,即使是非zookeeper的节点,或者是非集群内部节点,也可以通过nc扫描2181端口,获取极多的zk信息。关于漏洞的详细描述参考apache zookeeper官方概述:CVE-2018-8012: Apache ZooKeeper Quorum Peer mutual authentication


漏洞演示:

这是一个CDP集群,里面有三个物理节点,每个节点各自有一个zk实例,注意看IP。
zk集群
另开一台非集群节点的连接,使用echo conf | nc 10.168.1.28 2181 命令:
other
可以看到非常多的配置和集群信息,除了conf,还有ruok、stat等命令:
ruok

如此多敏感信息暴露在互联网上肯定是很不安全的,解决方式主要有四种:修改默认端口(简单易实现)、配置zookeeper认证用户或修改权限、打补丁(不推荐)、开启防火墙。

1.修改默认端口 :把client的2181修改为其他的端口即可,不过如果是范围扫描,还是会被发现

2.修改认证:这种方法比较折衷,不过我看的方法都是使用setAcl path,最开始我也是使用这种方法,我们一步一步看一下:
首先:使用有zk实例的节点,使用./zkCli.sh -server:ip 进入server,查看权限:
权限
world anyone是最广的权限,相当于Java的public,谁都能访问;cdrwa是具体的权限,相当于Linux的rwx

然后:使用setAcl -R / ip:Acl ,给集群ip开白名单

setAcl -R / ip:10.168.1.28:cdrwa,ip:10.168.1.29:cdrwa,ip:10.168.1.30:cdrwa

再查看权限:
Acl
似乎没问题了?再用集群外的节点监听一下:
在这里插入图片描述
好家伙,看的更仔细了???

我搞了半天,百思不得其解,探索了两个小时,然后试探性了查看单个路径的节点:
zk子节点
然后检查了一会儿,除了两个zk目录下面的文件,其他文件都是没问题了,然后到官网和GitHub,发现这个是一个bug…zk服务端启动后,默认会启动这几个具有world和cdrwa权限的znode,“/” “/zookeeper” “/zookeeper/config"和”/zookeeper/quota"(根据zookeeper的版本不同可能存在不同,并且这几个节点虽然具有world和cdrwa权限,但是是无法删除的。GitHub还出了个补丁…
GitHub issue

除了这种针对匿名用户的,也有使用用户做认证的,不过我还在尝试中。

3.打补丁:不知道上面那个链接的补丁有没有效果,我是用的第四种,开启防火墙策略。

4.开启防火墙:这是比较保守的方法,需要设置繁多的策略,开放端口…允许IP,但是是最有效的,个人比较推荐。

相关推荐

  1. 【Druid 授权访问漏洞解决办法

    2024-03-28 11:52:03       30 阅读
  2. Docker授权访问漏洞

    2024-03-28 11:52:03       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 11:52:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 11:52:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 11:52:03       87 阅读
  4. Python语言-面向对象

    2024-03-28 11:52:03       96 阅读

热门阅读

  1. php程序员如何成为编程高手

    2024-03-28 11:52:03       38 阅读
  2. Vue 实践中的理解

    2024-03-28 11:52:03       38 阅读
  3. Vue 模版编译原理

    2024-03-28 11:52:03       45 阅读
  4. 调用第三方接口:springBoot整合forest

    2024-03-28 11:52:03       48 阅读
  5. 使用vue根据表格内容生成Excel表格并下载

    2024-03-28 11:52:03       41 阅读
  6. 网站建设服务器怎么选

    2024-03-28 11:52:03       47 阅读
  7. 函数 GetMemoryType 的理解

    2024-03-28 11:52:03       41 阅读
  8. linux进程切换

    2024-03-28 11:52:03       45 阅读
  9. 【C语言】RC4 测试代码

    2024-03-28 11:52:03       45 阅读