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

news2024/11/18 8:13:26

所需知识

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

  • 如何确定用户输入是否包含在服务器端的 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 以解决实验室问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

终极解决CondaValueError: Malformed version string ‘~’: invalid character(s)问题

conda 创建环境时出现: Solving environment: failed CondaValueError: Malformed version string ‘~’: invalid character(s)以下两种方法都不行时: 原因一: 添加的镜像源中,清华镜像源是https(错误)&a…

软件测试 - 测试分类(静态测试、动态测试、白盒测试、黑盒测试、灰盒测试、单元测试、集成测试、系统测试、验收测试等)

一、为什么要对软件测试进⾏分类? 软件测试是软件⽣命周期中的⼀个重要环节,具有较⾼的复杂性,对于软件测试,可以从不同的⻆度 加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理…

R语言管道操作详解-高效编程

引言 R语言是一种广泛应用于统计分析和图形表示的编程语言和软件环境。随着数据分析和数据科学的发展,R语言的管道操作符已经成为提高代码可读性和效率的重要工具。本文将详细介绍R语言中的管道操作符,包括它们的用途、语法和一些实用的示例。 目录 引…

手写签名怎么变成电子签名?

教大家一个快速生成有效电子签名的方法!(有效电子签名即通过正轨平台绑定了CA数字证书、防伪防盗的签名) 1.登录【微签】,点击【自己签】。 2.点【添加文件】,上传需要签名的电子文件(格式不限)…

一起学习LeetCode热题100道(46/100)

46.二叉树展开为链表(学习) 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历…

Affine Transformations仿射变换

什么是仿射变换 仿射变换(Affine Transformation)是数学和计算机图形学中的一种线性变换,它包括了平移、旋转、缩放、剪切等操作。仿射变换保留了几何图形的“仿射性质”,即平行线在变换后仍然平行,线性组合在变换后仍…

电机预测性维护模组

设备简介 本模组为了对电机进行预测性运维而开发,可以采集电机的 3 路加速度振动传感器、3 路电流(电机供电互感器输出信号)、1 路转速(电机转速)、8 路温度(PT100 温度传感器)。 模组计算振动…

一文带你看懂安全生产管理系统

通过集成多种先进技术和设备,实现对企业安全生产全过程的智能化、精细化管理。系统分为五个核心层面,各层面相互协作,共同确保企业的安全生产。 1. 数据采集层 设备终端:利用防爆终端、防爆平板、无线传感器、电子标签、定位设备、…

WinForm DataGridView整行选中并且checkbox勾选

WinForm DataGridView选中行设置 文章目录 WinForm DataGridView选中行设置添加checkbox列列和选中行效果选中行代码 添加checkbox列 列和选中行效果 选中行代码 public Basic_configuration(){InitializeComponent();...........//添加鼠标事件this.dataGridView_basic.CellMo…

node.js: mssql2019 sequelize6 es6+ ORM in vscode and WebStorm 2023.1

mssql: insert into [dbo].[tutorials]([title],[description],[published],[createdAt],[updatedAt]) values(N涂聚文,N涂聚文,0,2025-05-04,2025-05-04); go insert into [dbo].[tutorials]([title],[description],[published],[createdAt],[updatedAt]) values(Ngeovindu,N…

实战OpenCV之图像的属性

基础入门 图像的属性指的是描述图像基本信息的数据,包括但不限于:图像的尺寸、颜色通道数、像素数据类型等。这些属性对于图像处理非常重要,因为它们直接关系到如何正确地读取、处理和存储图像。常见的图像属性包括: 尺寸&#xf…

WandB 简明教程【Weights Bias】

在机器学习实验领域,调整超参数类似于微调复杂机器的旋钮和刻度盘。这些参数通常很微妙但至关重要,能够显著影响我们模型的性能和行为。WandB(权重和偏差 ) 是一个强大的在线工具集,旨在简化模型训练、评估和分析的过程。 随着我…

TCP shutdown 之后~

目录 摘要 1 API 2 shutdown(sockfd, SHUT_WR) 3 shutdown(sockfd, SHUT_WR) 4 kernel 是怎么做的? 附 摘要 通过 shutdown() 关闭读写操作,会发生什么?具体点呢,考虑两个场景: 场景一:C 发送数据完毕…

VBA技术资料MF184:图片导入Word添加说明文字设置格式

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

C ++初阶:C++入门级知识点

🍺0.前言 言C之言,聊C之识,以C会友,共向远方。各位博友的各位你们好啊,这里是持续分享C知识的小赵同学,今天要分享的C知识是C入门知识点,在这一章,小赵将会向大家展开聊聊C入门知识…

基于Mediapipe的手势识别系统 | OpenCV | Mediapipe | C++ | QT | Python | C# | Unity

基于Mediapipe的手势识别系统 OpenCV、Mediapipe C (QT)、Python (PyCharm)、C# (Visual Studio) Unity 3D 登录界面 图片手势识别 视频文件手势识别 摄像头实时手势识别 演示视频 基于Mediapipe的手势识别系统

UDP和TCP协议段格式分析

目录 UDP协议 特点 UDP协议的缓冲区 UDP协议段格式 TCP协议 特点 如何理解TCP是传输控制协议? TCP协议段格式 四位首部长度 16位窗口大小 32位序号 32位确认序号 TCP/IP四层模型: UDP协议 UDP(User Datagram Protocol &#xff…

十大护眼落地灯品牌哪款好?十大护眼落地灯品牌

十大护眼落地灯品牌哪款好?根据国际市场的研究数据表明,我国在日常生活中对电子产品的依赖度极高,每天看电子产品的时间超过8小时,出现眼睛酸痛、干涩、视觉疲劳的人群也不再少数,而给眼睛带来伤害的除了电子产品中所含…

界面控件DevExpress ASP.NET Web Forms v24.1最新版本系统环境配置要求

本文档包含有关安装和使用 DevExpress ASP.NET Web Forms控件的系统要求的信息。 点击获取DevExpress v24.1正式版 .NET Framework DevExpress ASP.NET Web Forms控件支持以下.NET框架版本。 如果您需要 DevExpress 产品的早期版本,请直接戳这里联系我>> …

MySQL中的EXPLAIN的详解

一、介绍 官网介绍: https://dev.mysql.com/doc/refman/5.7/en/explain-output.htmlhttps://dev.mysql.com/doc/refman/8.0/en/explain-output.htmlexplain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句&#xff…