Zookeeper未授权访问测试问题
前言
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
zookeeper未授权访问是指安装部署之后默认情况下不需要任何身份验证,从而导致zookeeper被远程利用,导致大量服务级别的信息泄露。
默认使用端口:2181、2182。
探测Zookeeper服务开放
如使用nmap探测某个目标地址是否运行Zookeeper服务,探测2181端口开放。
root@kali:~#nmap-Pn-p2181xx.xx.xx.xx StartingNmap7.80(https://nmap.org)at2019-10-2101:56EDT Nmapscanreportforxx.xx.xx.xx.static.sz.js.chinamobile.com(xx.xx.xx.xx) Hostisup(0.016slatency). PORTSTATESERVICE 2181/tcpopeneforward Nmapdone:1IPaddress(1hostup)scannedin0.22seconds
批量探测仅需修改一下对应的目标地址即可。
获取信息
conf命令
输出相关服务配置的详细信息,端口、数据路径、日志路径、session超时时间,最大连接数等。
root@kali:~#echoconf|ncxx.xx.xx.xx2181 clientPort=2171 dataDir=/opt/data/zookeeper/data/version-2 dataLogDir=/opt/data/zookeeper/data/version-2 tickTime=2000 maxClientCnxns=0 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=0
cons命令
列出所有连接到当前服务器的客户端/会话的详细信息。
root@kali:~#echocons|ncxx.xx.xx.xx2181|more /10.23.46.40:11958[1](queued=0,recved=27317,sent=27317,sid=0x1000000e029b16e,lop=PING,est=1571277639586,to=40000,lcxid=0x33,lzxid=0x286a720,lresp=2435779043,llat=0,minlat=0,avglat=0,maxlat=397) /10.23.46.39:9688[1](queued=0,recved=27316,sent=27316,sid=0x1000000e029b17c,lop=PING,est=1571277641790,to=40000,lcxid=0x33,lzxid=0x286a71c,lresp=2435777895,llat=0,minlat=0,avglat=0,maxlat=560)
dump命令
输出未处理的会话和临时节点,leader节点有效。
root@kali:~#echodump|ncxx.xx.xx.xx2181|more SessionTrackerdump: SessionSets(21): 0expireatThuJan2912:38:08CST1970: 0expireatThuJan2912:38:10CST1970: 3expireatThuJan2912:38:12CST1970: 0x1000000e01f0013 0x1000000e029fdde 0x1000000e029fe05 2expireatThuJan2912:38:14CST1970: 0x1000000e02a4235 0x1000000e01f00e9 31expireatThuJan2912:38:16CST1970: 0x1000000e01f067a 0x1000000e02a423c 0x1000000e01f0008 0x1000000e029fdf4 ...
非leader节点看不到什么相关信息。
envi命令
输出服务器的详细信息。
root@kali:~#echoenvi|ncxx.xx.xx.xx2181 Environment: zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03,builton06/29/201804:05GMT host.name=c1b69852-ac24-11e8-88d9-a4bf01306d06 java.version=1.7.0_80 java.vendor=OracleCorporation java.home=/usr/java/jdk1.7.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=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-getinstallzookeeper ... #root@kali:~#cd/usr/share/zookeeper/bin/ #root@kali:/usr/share/zookeeper/bin#ls zkCleanup.shzkCli.shzkEnv.shzkServer.sh
连接目标
使用-server参数指定目标即可连接。
root@kali:/usr/share/zookeeper/bin#./zkCli.sh-serverxx.xx.xx.xx:2181 Connectingtoxx.xx.xx.xx:2181 WelcometoZooKeeper! JLinesupportisenabled [zk:xx.xx.xx.xx:2181(CONNECTING)0]
...已连接
获取系统相关信息
root@kali:/usr/share/zookeeper/bin#./zkCli.sh-serverxx.xx.xx.xx:2181 Connectingtoxx.xx.xx.xx:2181 WelcometoZooKeeper! JLinesupportisenabled [zk:xx.xx.xx.xx:2181(CONNECTING)0] WATCHER:: WatchedEventstate:SyncConnectedtype:Nonepath:null [zk:xx.xx.xx.xx:2181(CONNECTED)0]ls/ [service,pms,DsMaster,Resource,monitor_lock,zookeeper] [zk:xx.xx.xx.xx:2181(CONNECTED)1]get/ cZxid=0x0 ctime=WedDec3119:00:00EST1969 mZxid=0x0 mtime=WedDec3119:00:00EST1969 pZxid=0x4c0 cversion=4 dataVersion=0 aclVersion=0 ephemeralOwner=0x0 dataLength=0 numChildren=6 [zk:xx.xx.xx.xx:2181(CONNECTED)2]get/service cZxid=0x2 ctime=ThuAug3002:58:40EDT2018 mZxid=0x2 mtime=ThuAug3002:58:40EDT2018 pZxid=0x1cb884d cversion=7 dataVersion=0 aclVersion=0 ephemeralOwner=0x0 dataLength=0 numChildren=3 [zk:xx.xx.xx.xx:2181(CONNECTED)3]getAcl/ 'world,'anyone :cdrwa
修复方案
1、设置防火墙策略限制IP访问【建议采取此种方案】
2、不要将zookeeper暴露在外网
3、设置用户认证和ACL
参考
zookeeper未授权访问
http://vic.pub/zookeeper-未授权访问/
总结
以上所述是小编给大家介绍的Zookeeper未授权访问测试问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!