阿一网络安全实战演练之利用 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 以解决实验室问题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker安装】Ubuntu系统下离线部署Docker环境教程

【Docker安装】Ubuntu系统下离线部署Docker环境教程 前言一、本次实践介绍1.1 本次实践规划1.2 本次实践简介二、检查本地环境2.1 检查操作系统版本2.2 检查内核版本2.3 更新软件源三、卸载Docker四、下载安装包4.1 创建目录4.2 官网下载五、部署Docker环境5.1 解压安装包5.2 复…

Web Image scr图片从后端API获取基本实现

因系统开发中需求,会有页面显示图片直接从后端获取后显示,代码如下: 后端: /*** 获取图片流* param response* param fileName*/RequestMapping(value"getImgStream",method RequestMethod.GET)public void getImgStr…

Yearning开源SQL审核平台本地Linux系统部署与远程登录语句审核

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 本文主要介绍在 Linux 系统简单部署 Yearning 并结合 cpolar 内网穿透工具实现远程访问,破除…

Java基础入门15:算法、正则表达式、异常

算法(选择排序、冒泡排序、二分查找) 选择排序 每轮选择当前位置,开始找出后面的较小值与该位置交换。 选择排序的关键: 确定总共需要选择几轮:数组的长度-1。 控制每轮从以前位置为基准,与后面元素选择…

Typescript在AI产品中应用越来越广泛

AI产品中的应用 TypeScript 在 AI 产品中的应用逐渐增多,主要得益于其提供的类型安全、面向对象编程和模块化等特性,这些特性使得开发者能够构建可维护、可扩展和高性能的应用程序。 首先,TypeScript 作为 JavaScript 的超集,通…

15.基于session实现登录 前端项目部署

前端项目nginx部署 nginx配置文件 worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/json;sendfile on;keepalive_timeout 65;server {listen 8080;server_name localhost;# 指定前端项目所…

线性DP(动态规划)

文章目录 数字三角形思路代码 最长上升子序列1思路代码 最长公共子序列思路代码 其实和背包一样,都不固定,这种类型的题每一道题都需要自己从之前的经验中去摸索。 数字三角形 题目链接 思路 只能从左上或者右上走过来,用一个二维数组&am…

python-A+B again

[题目描述] 小理有一个非常简单的问题给你,给你两个整数 A 和 B,你的任务是计算 AB。输入格式: 输入共 2∗T1 行。 输入的第一行包含一个整数 T 表示测试实例的个数,然后 2∗T 行,分别表示 A 和 B 两个正整数。注意整数…

计算机网络面试题汇总

文章目录 计算机网络基础计算机网络体系结构(网络分层模型)OSI 七层模型是什么?每一层的作用是什么?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议为什么网络要分层,分层的好处?常见网络协议有哪些,每一层常见协议有哪些?应用层有哪些常见的协…

mysql5.7安装

1.创建一个software文件 2.先下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 3安装源包 rpm -ivh mysql-community-release-el7-5.noarch.rpm 可能会报错 改成命令 rpm -ivh mysql-community-release-el7-5.noarch.rpm --nodeps…

目标检测 | yolov6 原理和介绍

前言:目标检测 | yolov5 原理和介绍 后续: 1.简介 YOLOv6是由美团视觉智能部研发的一款目标检测框架,专注于工业应用,致力于提供极致的检测精度和推理效率。相较于YOLOv4和YOLOv5,YOLOv6在网络结构方面进行了深入优化…

在LabVIEW中高效读取大型CSV文件的方法

当尝试使用“读取分隔的电子表格VI”从大型CSV文件(数百MB)中读取数据时,可能会遇到内存已满错误。这是因为该VI会一次性读取整个文件并将其转换为数值数组,导致占用大量内存。 解决方案 可以使用“从文本文件VI读取”来部分读取…

技术探索之android项目结构

在新建项目时会自动生成很多文件,需要知道项目结构,我们需要编辑的文件的位置: app: 项目的代码资源都在其中,是我们工作的核心目录 build : 编译生成文件。生成的apk就在build/outputs/apk/debug里。apk在虚拟机里就…

MySQL——内置函数

时间函数 select * from msg where date_add(sendtime, interval 2 minute) > now(); 理解: ------------------------------|-----------|-------------|------------------ 初始时间 now() 初始时间2min 字符串 length函数返回字符串长度,以字节为…

【docker】docker数据卷与网络部署服务

Docker 网络模式 选择网络模式 Host Mode (主机模式) 特点: 容器与宿主机共享网络命名空间操作: docker run --nethost ... Container Mode (容器模式) 特点: 容器与指定容器共享网络命名空间操作: docker run --netcontainer:<container-id-or-name> ... None Mode (无…

营业额统计

文章目录 概要整体架构流程技术细节小结 概要 营业额统计是商业活动中一个非常重要的环节&#xff0c;它可以帮助企业了解自身的经营状况&#xff0c;并为决策提供依据。 需求分析以及接口设计 营业额统计是基于折现图来展现&#xff0c;并且按照天来展示的。实际上&#xf…

机器学习(1)--数据可视化

文章目录 数据可视化作用可视化方法实现可视化 总结 数据可视化 数据可视化是将数据以图形、图像、动画等视觉形式表示出来&#xff0c;以便人们能够更直观地理解、分析和交流数据中的信息。 作用 一个整理的好好的数据&#xff0c;我们为什么要将其可视化呢&#xff1f;将它…

苹果macOS 15 Sequoia投屏功能 实现Mac上iPhone桌面管理

8月14日消息&#xff0c;苹果最新的 iOS 18 和 macOS 15 Sequoia 测试版为 iPhone 投屏功能带来了重大更新。用户可以直接在 Mac 上管理 iPhone 桌面。 iPhone 镜像功能 macOS Sequoia最大的更新是带来了iPhone 镜像功能&#xff0c;这个功能能让给 Mac 用户将 iPhone 的屏幕镜…

异质性空间自回归模型 (HSAR)及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 七、代码运行结果 一、引言 在空间计量经济学中&#xff0c;异质性空间自回归模型&#xff08;Heterogeneous Spatial Autoregressive Model&#xff0c;HSAR&#xff09;是一种…

C#去掉文件夹或文件名非法字符

实现有输入字符串创建文件夹的功能&#xff0c;需要检查字符串中是否包含不能在文件夹中使用的非法字符 。C#中如果需要生成文件路径&#xff0c;有时会抛出“文件路径中出现非法字符”的异常&#xff0c;这时我们就会找到这个非法的字符串&#xff0c;然后Replace替换掉。net类…