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

news2024/11/24 11:59:57

今天在漏洞扫描的时候蹦出来一个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,但是是最有效的,个人比较推荐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1550921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA时钟资源详解(2)——Clock-Capable Inputs

FPGA时钟系列文章总览:FPGA原理与结构(14)——时钟资源https://ztzhang.blog.csdn.net/article/details/132307564 目录 一、概述 1.1 为什么使用CC 1.2 如何使用CC 二、Clock-Capable Inputs 2.1 SRCC 2.2 MRCC 2.3 其他用途 2.3.1…

Day23 代码随想录(1刷) 二叉树

669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代…

安踏,步入“高端化”的甜蜜陷阱

文丨黄小艺 2023年3月14日,徐阳重回安踏担任CEO的第二天,就颇为急切地拉了一场高层会议。 面对在场的安踏老人们,徐阳提了两个很终极的问题,“是什么让过去30年的安踏获得了成功?”“未来30年,如果安踏想…

mysql80-DBA数据库学习1-数据库安装

掌握能力 核心技能 核心技能 mysql部署 官网地址www.mysql.com 或者www.oracle.com https://dev.mysql.com/downloads/repo/yum/ Install the RPM you downloaded for your system, for example: yum install mysql80-community-release-{platform}-{version-number}.noarch…

智慧公厕的技术融合策略

智慧公厕是迎合现代城市发展需要的一项重要基础设施,其设计的技术融合策略在实现公共厕所泛在感知、互通互联、协同构筑智慧城市等方面起到了关键作用。本文将以智慧公厕源头实力厂家广州中期科技有限公司,大量精品案例现场实景实图实例,从物…

NetCore3.1 Controller中直接返回JObject对象抛出异常解决方案

问题描述 在NetCore 3.1的Web项目中,Controller有一个方法直接返回JObject对象时,抛出了异常 S y s t e m . N o t S u p p o r t e d E x c e p t i o n : T h e c o l l e c t i o n t y p e ′ N e w t o n s o f t . J s o n . L i n q . J O b j …

FID离子流采集硬件方案设计

一、原理简介 氢离子火焰检测器(Flame Ionization Detector, FID)是气相色谱仪中常用的一种检测器,主要用于检测有机化合物。它的工作原理基于在高温氢气/空气火焰中,有机化合物会发生离子化放出电子的过程。 1、FID的基本结构 燃烧器: 内部有一个小型燃烧池,燃烧池顶端有一个…

GA遗传算法和ALNS算法的区别(我的APS项目七)

博主用最简单的方式告诉你遗传算法是什么,估计这是网上最简单的遗传算法入门教程了。首先我们先带入一个问题,我们要去9大城市旅游,想知道每个城市走一遍,总路程最短的出行顺序是什么? OK,题目我们已经明确…

由浅到深认识Java语言(38):I/O流

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

【前端学习——js篇】5.事件循环

详细:https://github.com/febobo/web-interview 5.事件循环 js是一种单线程语言,同一时间内只能做一件事情,为了避免单线程阻塞的方法就是事件循环。 在javascript当中,所有的任务都可以分为: 同步任务:按…

Java Swing游戏开发学习19

内容来自RyiSnow视频讲解 这一节讲的是**Entity ArrayList(Render Order Revised)**实体数组列表(渲染顺序修改)。 前言 由于NPC和player的实体碰撞区域比他们本身的大小要小,所以会造成一个bug,当前的绘制顺序是,NP…

进程的基础知识

1).进程:一个正在运行中的程序; 2).PCB:进程控制块,进程描述符(PID:进程唯一的标识符) 进程控制块是用一个结构体struct task_struct来实现; 3).进程的状态: 就绪,阻塞,运行; 时间片轮转调度; 时间片轮转调度是一种最古老,最简单,最公平且使用最广的…

一文即可帮助你认识进程和线程~

本文的重点:什么是:进程、进程调度、线程和他们之间的联系。主讲概念知识,不讲代码实现 目录 一、认识进程 1.什么是进程 2.进程的信息 3.进程调度(***) 4.进程调度的基本过程 二、线程 1.线程的引入 2.什么是线程 3.进程于线程的联…

鸿蒙开发之ArkUI组件常用组件图片和文本

ArkUI即方舟开发框架是HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面开发。 开发文档地址 &…

【功能实现】新年贺卡(蓝桥)

题目分析: 想要实现一个随机抽取功能 功能拆解:题目给了数组,我们采用生成随机数的方式,随机数作为数组的索引值访问数组的值。 并返回获取到的值,将获取到的值插入到页面中。 document.addEventListener(DOMConten…

Diffusion添加噪声noise的方式有哪些?怎么向图像中添加噪声?

添加噪声的方式大致分为两种,一种是每张图像在任意timestep都加入一样的均匀噪声,另一种是按照timestep添加不同程度的噪声 一、在任意timestep都加入一样的noise batch_size 32x_start torch.rand(batch_size,3,256,256) noise torch.randn_like(x_…

【spring】@Autowired注解学习

Autowired介绍 Spring框架是Java领域中一个非常重要的企业级应用开发框架,它提供了全面的编程和配置模型,旨在帮助开发者更快速、更简单地创建应用程序。在Spring框架中,Autowired是一个非常重要的注解,它用于实现依赖注入&#…

保研线性代数机器学习基础复习1

1.什么是代数(algebra)? 为了形式化一个概念,构建出有关这个概念的符号以及操作符号的公式。 2.什么是线性代数(linear algebra)? 一项关于向量以及操作向量的公式的研究。 3.举一些向量的例子&#x…

我的编程之路:从非计算机专业到Java开发工程师的成长之路 | 学习路线 | Java | 零基础 | 学习资源 | 自学

小伙伴们好,我是「 行走的程序喵」,感谢您阅读本文,欢迎三连~ 😻 【Java基础】专栏,Java基础知识全面详解:👉点击直达 🐱 【Mybatis框架】专栏,入门到基于XML的配置、以…

C语言运算符和表达式——赋值运算符

目录 变量的定义 赋值运算符 赋值表达式 如何给变量赋值 变量的定义 声明变量的名字和类型 变量的类型决定了 *占用内存空间的大小 *数据的存储形式 *合法的表数范围 *可参与的运算种类 *变量名标识了内存中的一个存储单元 问题:未被初始化的变量的值是什么&a…