当前位置: 首页 > news >正文

[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,但是是最有效的,个人比较推荐。

相关文章:

  • 【计算机考研】408到底有多难?
  • im-system 第九章
  • 7.3*3卷积核生成
  • 机器学习——聚类算法-层次聚类算法
  • hive 、spark 、flink之想一想
  • 使用Spring Cloud Gateway构建API网关,实现路由、过滤、流量控制等功能。
  • H5小程序视频方案解决方案,实现轻量化视频制作
  • 从根本上优雅地解决 VSCode 中的 Python 模块导入问题
  • 阿里云部署宝塔,设置了安全组还是打不开。
  • 递归算法 分析json字符串,自制简易表达式
  • 校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!
  • Microsoft VBA Excel 单元格 重复元素 去重
  • 利用python脚本,根据词条爬取百度图片(爬虫)
  • 基于 YAML 接口自动化测试框架设计
  • 设计模式——行为型——策略模式Strategy
  • @jsonView过滤属性
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • canvas 五子棋游戏
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • GraphQL学习过程应该是这样的
  • Java多线程(4):使用线程池执行定时任务
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • SAP云平台里Global Account和Sub Account的关系
  • Terraform入门 - 1. 安装Terraform
  • 百度地图API标注+时间轴组件
  • 测试如何在敏捷团队中工作?
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 阿里云ACE认证学习知识点梳理
  • ​iOS实时查看App运行日志
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ###STL(标准模板库)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (07)Hive——窗口函数详解
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (java)关于Thread的挂起和恢复
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)母版页和相对路径
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @Transactional类内部访问失效原因详解
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • []指针
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [DAU-FI Net开源 | Dual Attention UNet+特征融合+Sobel和Canny等算子解决语义分割痛点]
  • [EFI]英特尔 冥王峡谷 NUC8i7HVK 电脑 Hackintosh 黑苹果efi引导文件