漏洞挖掘 | Selenium Grid 中的 SSRF

Selenium 网格框架上的基本服务器端请求伪造

最近,我正在阅读漏洞文章看到Peter Jaric写的一篇 Selenium Grid 文章;他解释了 Selenium Grid 框架上缺乏身份验证和安全措施强化的问题。

在网上进行了更多搜索,我发现 Selenium Grid 开箱即用,不提供内置身份验证,并且具有加载脚本的功能,使服务器容易受到服务器端请求伪造攻击。

我决定了解有关 SSRF 攻击的更多信息,并将其应用于我在实验室中构建的 Selenium Grid 测试实例。像往常一样,在开始之前,我们将在深入研究利用部分之前先回顾一下关键概念。

         $_什么是Selenium_Grid?

它是一个质量保证框架,用于跨不同环境自动执行 Web 应用程序 UI 和性能测试的客户端相关测试。它允许在不同的浏览器和操作系统上运行测试,就像测试在不同的机器上运行一样。

Selenium 在测试和自动化领域的主要优势是能够在大量时间内跨多个节点(机器)执行大量测试用例。

该框架有两个主要组件:中心和节点。根据需要可以启动多个节点。

集线器是所有其他机器(节点)订阅的主服务器。节点接收运行 selenium 会话和执行自动化测试所需的所有配置。

图片

🔥$_SSRF:

当攻击者可以代表受影响的易受攻击的服务器发起请求时,就会发生 SSRF。该攻击允许访问内部或外部资源,这些资源可能不会公开或可供除服务器之外的任何用户使用。

该攻击滥用服务器的信任来检索敏感信息,例如:

•网络相关信息,即开放端口和正在运行的服务

•枚举目录并查看其内容

•服务器上的用户列表

•操作系统信息

此外,受攻击的机器可以用作网络上其他机器的枢纽点。

根据应用程序的要求,有多种协议/方案可用于执行 SSRF 攻击。最常见的是:http、ftp 和 file。

图片

$_Attack_Dynamics:

该攻击可概括为 3 个主要步骤:

步骤#1攻击者通过 SSRF 漏洞向受影响的服务器发送请求。

步骤#2服务器收到请求并对自身(内部)或外部资源进行第二次调用以获取请求的内容。

步骤#3一旦响应返回到服务器,它就会将其转发回攻击者。

图片

😈$_Exploitation_Time:

现在我们了解了该漏洞及其影响,让我们回到 Selenium Grid 实例并将我们所学到的知识应用到测试节点上。

📝只有节点容易受到 SSRF 攻击;集线器不受影响。

通过 Web 开发人员工具或 Burp Suite 代理检查应用程序是否存在 SSRF 时,您会发现请求被发送到纯 URL。直接 URL的暴露被认为是我们在执行 SSRF 攻击时可以利用的漏洞。

我们可以将找到的 URL 替换为 localhost(127.0.0.1) 地址或外部资源,以强制服务器代表我们(攻击者)发送请求以获取所需的数据。

让我们对正在运行的节点执行此操作...

单击“创建会话”创建一个新会话,选择要启动的浏览器类型,然后单击“确定”。

如下所示,我有 3 个 Chrome 会话可供测试。

图片

正如我们在文章开头提到的,Selenium 内置了从直接 URL 加载脚本的功能 — WebDrive JS Script 。该框架希望用户加载无需身份验证即可与服务器通信的 JavaScript 代码。 (这使得服务器容易受到 SSRF 攻击)。

为了证明这一点,我单击“加载脚本”并输入“http://www.google.com”,然后单击“发送”。 POST 请求已处理完毕并获得 200 OK 响应。

图片

我点击了“截屏”,我看到服务器处理了我的请求并向 Google 网站发出了外部请求。

图片

然后,我开始使用其他 URL 方案进行测试,看看是否可以检索内部信息。除了http:// 之外,唯一适用于 Selenium 的是 file://

图片

📝注意:使用额外的斜杠来转义正向双斜杠

我能够列出服务器上C盘的目录并获取一些文件的内容.ie主机文件,服务,网络和system.ini

图片

图片

正如我们在上面看到的,我能够滥用加载脚本功能将请求发送到服务器并将结果返回给我。我发现这个漏洞对于侦察目的和横向移动的渗透测试非常方便。

⚡️ $_预防

Selenium 上应该有一个过滤或白名单 URL schemas:// 的安全机制,以保护服务器防止暴露内部/外部信息的请求。

无偿获取网络安全优质学习资料与干货教程

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/882511.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

音视频入门基础:FLV专题(3)——FLV header简介

一、引言 本文对FLV格式的FLV header进行简介,FLV文件的开头就是FLV header。 进行简介之前,请各位先从《音视频入门基础:FLV专题(1)——FLV官方文档下载》下载FLV的官方文档《video_file_format_spec_v10_1.pdf》和…

【第十二章:Sentosa_DSML社区版-机器学习之回归】

目录 12.1 线性回归 12.2 决策树回归 12.3 梯度提升决策树回归 12.4 保序回归 12.5 XGBoost回归 12.6 随机森林回归 12.7 广义线性回归 12.8 LightGBM回归 12.9 因子分解机回归 12.10 AdaBoost回归 12.11 KNN回归 12.12 高斯过程回归 12.13 多层感知机回归 【第十…

基于YOLOv8+LSTM的商超扶梯场景下行人安全行为姿态检测识别

基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别 手扶电梯 行为识别 可检测有人正常行走,有人 跌倒,有人逆行三种行为 跌倒检测 电梯跌倒 扶梯跌倒 人体行为检测 YOLOv8LSTM。 基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别&#xf…

小程序构建npm失败

小程序构建npm失败 项目工程结构说明解决方法引入依赖导致的其他问题 今天在初始化后的小程序中引入TDesign组件库,构建npm时报错。 项目工程结构说明 初始化后的项目中,包含miniprogram文件夹和一些项目配置文件,在project.config.json文件中…

最新简洁大方的自动发卡网站源码/鲸发卡v11.61系统源码/修复版

源码简介: 最新简洁大方的自动发卡网站源码,它就是鲸发卡v11.61系统源码,它是修复版。 说到鲸发卡系统,鲸发卡系统在发卡圈很多人都知道的,它是市面最好发卡系统之一,操作起来简单得很,界面也…

手机在网状态查询接口如何用PHP进行调用?

一、什么是手机在网状态查询接口? 手机在网状态查询接口,即输入手机号码查询手机号在网状态,返回有正常使用、停机、在网但不可用、不在网(销号/未启用/异常)、预销户等多种状态。 二、手机在网状态查询适用哪些场景…

无人机视角下的车辆数据集

车辆数据集 无人机视角下的车辆数据集。数据集为无人机俯拍的真实场景下的车辆机动车数据集。数据集已经标注好,yolo格式,txt标签。数据集已经划分好训练集(20970张图片)验证集(5242张图片)测试集&#xff…

Redis的主从模式、哨兵模式、集群模式

最近学习了一下这三种架构模式,这里记录一下,仅供参考 目录 一、主从架构 1、搭建方式 2、同步原理 3、优化策略: 4、总结: 二、哨兵架构 1、搭建哨兵集群 2、RedisTemplate如何使用哨兵模式 三、分片集群架构 1&#…

Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...

原文链接:https://tecdat.cn/?p37724 在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估…

Golang | Leetcode Golang题解之第430题扁平化多级双向链表

题目: 题解: func dfs(node *Node) (last *Node) {cur : nodefor cur ! nil {next : cur.Next// 如果有子节点,那么首先处理子节点if cur.Child ! nil {childLast : dfs(cur.Child)next cur.Next// 将 node 与 child 相连cur.Next cur.Chi…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…

【计算机基础】用bat命令将Unity导出PC包转成单个exe可执行文件

Unity打包成exe可执行文件 上边连接是很久以前用过的方法,发现操作有些不一样了,并且如果按上述操作比较麻烦,所以写了个bat命令。 图1、导出的pc程序 如图1是导出的pc程序,点击exe文件可运行该程序。 添加pack_project.bat文件 …

大数据Flink(一百二十二):阿里云Flink MySQL连接器介绍

文章目录 阿里云Flink MySQL连接器介绍 一、特色功能 二、​​​​​​​语法结构 三、​​​​​​​​​​​​​​WITH参数 阿里云Flink MySQL连接器介绍 阿里云提供了MySQL连接器,其作为源表时,扮演的就是flink cdc的角色。 一、特色功能 MySQ…

操作系统 | 学习笔记 | | 王道 | 5.3 磁盘和固态硬盘

5.3 磁盘和固态硬盘 5.3.1 磁盘 磁盘结构 磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据 磁道:磁盘的盘面被划分成一个个磁道。这样的一个“圈”就是一个磁道 扇区:一个磁道又被划分成一个个扇区&am…

大数据毕业设计选题推荐-网络电视剧收视率分析系统-Hive-Hadoop-Spark

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

通信工程学习:什么是NFVO网络功能虚拟化编排器

NFVO:网络功能虚拟化编排器 NFVO(Network Functions Virtualization Orchestrator),即网络功能虚拟化编排器,是网络功能虚拟化(NFV)架构中的核心组件之一。NFV是一种将传统电信网络中的网络节点…

从零开始学习Python

目录 从零开始学习Python 引言 环境搭建 安装Python解释器 选择IDE 基础语法 注释 变量和数据类型 变量命名规则 数据类型 运算符 算术运算符 比较运算符 逻辑运算符 输入和输出 控制流 条件语句 循环语句 for循环 while循环 循环控制语句 函数和模块 定…

黑马智数Day3

渲染基础Table列表 封装接口: export function getCardListAPI(params) {return request({url: /parking/card/list,params}) } 具体实现: import { getCardListAPI } from /apis/cardexport default {data() {return {// 请求参数params: {page: 1,pa…

乌克兰因安全风险首次禁用Telegram

据BleepingComputer消息,乌克兰国家网络安全协调中心 (NCCC) 以国家安全为由,已下令限制在政府机构、军事单位和关键基础设施内使用 Telegram 消息应用程序。 这一消息通过NCCC的官方 Facebook 账号对外发布,在公告中乌…

【小程序】uniapp自定义图标组件可动态更换svg颜色

组件描述 通过图标名称加载对应svg,size参数调整图标大小,color参数调整图标颜色 解决思路: 存svg获svg,对象方式正则替换svg的fill值,不改变源文件,通过base64直接加载缓存svg源文件,避免重…