burp靶场--访问控制【越权】
【Burp系列】超全越权漏洞实验总结
https://portswigger.net/web-security/access-control/lab-unprotected-admin-functionality
1. 访问控制【越权】
https://portswigger.net/web-security/access-control#what-is-access-control
### 什么是访问控制:
访问控制是对谁或什么被授权执行操作或访问资源的限制的应用。在 Web 应用程序的上下文中,访问控制依赖于身份验证和会话管理:
身份验证可确认用户的真实身份。
会话管理可识别同一用户正在发出哪些后续 HTTP 请求。
访问控制确定是否允许用户执行他们尝试执行的操作。
损坏的访问控制很常见,并且通常会带来严重的安全漏洞。访问控制的设计和管理是一个复杂且动态的问题,它将业务、组织和法律约束应用于技术实现。访问控制设计决策必须由人类做出,因此出错的可能性很高。
实验1:不受保护的管理功能
### 实验要求:
该实验室有一个不受保护的管理面板。
通过删除用户来解决实验室问题carlos。### 实验操作:
robots.txt通过附加实验室 URL 转到实验室并查看/robots.txt。请注意,该Disallow行公开了管理面板的路径。
在 URL 栏中,替换/robots.txt为/administrator-panel以加载管理面板。
删除carlos。

管理面板不受凭据保护:


实验2:未受保护的管理功能和不可预测的 URL
### 实验要求:
该实验室有一个不受保护的管理面板。它位于不可预测的位置,但该位置已在应用程序中的某处公开。
通过访问管理面板并使用它删除用户来解决本实验carlos。
### 实验操作:
使用 Burp Suite 或 Web 浏览器的开发人员工具查看实验室主页的源代码。
请注意,它包含一些公开管理面板 URL 的 JavaScript。
加载管理面板并删除carlos.


实验3:通过请求参数控制用户角色【cookie参数伪造垂直越权】
### 实验要求:
该实验室有一个管理面板/admin,位于 ,它使用可伪造的 cookie 来识别管理员。
通过访问管理面板并使用它删除用户来解决本实验carlos。
您可以使用以下凭据登录您自己的帐户:wiener:peter### 实验操作:
浏览/admin并发现您无法访问管理面板。
浏览至登录页面。
在 Burp Proxy 中,打开拦截并启用响应拦截。
完成并提交登录页面,并在 Burp 中转发生成的请求。
观察响应设置了 cookie Admin=false。将其更改为Admin=true.
加载管理面板并删除carlos.
某些应用程序在登录时确定用户的访问权限或角色,然后将此信息存储在用户可控制的位置,如隐藏字段、cookie或预设查询字符串参数。应用程序根据提交的值做出后续访问控制决策
例如:
https://insecure-website.com/login/home.jsp?admin=true
https://insecure-website.com/login/home.jsp?role=1
这种方法从根本上讲是不安全的,因为用户可以简单地修改值并获得对他们未被授权的功能(如管理功能)的访问权限





实验4:用户角色可以在用户配置文件中修改【垂直越权】
### 实验要求:
该实验室的管理面板位于/admin。只有 a 为 2 的登录用户才能访问它roleid。
通过访问管理面板并使用它删除用户来解决本实验carlos。
您可以使用以下凭据登录您自己的帐户:wiener:peter### 实验操作:
使用提供的凭据登录并访问您的帐户页面。
使用提供的功能更新与您的帐户关联的电子邮件地址。
请注意,响应包含您的角色 ID。
将电子邮件提交请求发送到Burp Repeater,添加"roleid":2到请求正文中的JSON中,然后重新发送。
请注意,响应显示 your roleid已更改为 2。
浏览/admin并删除carlos.




实验5:由请求参数控制的用户ID【水平越权】
### 实验要求:
该实验室在用户帐户页面上存在水平提权漏洞。
要解决该实验,请获取用户的 API 密钥carlos并将其作为解决方案提交。
您可以使用以下凭据登录您自己的帐户:wiener:peter### 实验操作:
使用提供的凭据登录并转到您的帐户页面。
请注意,URL 的“id”参数中包含您的用户名。
将请求发送到 Burp Repeater。
将“id”参数更改为carlos。
检索并提交 的 API 密钥carlos。


实验6:用户ID由请求参数控制,用户ID不可预测
### 实验要求:
该实验室在用户帐户页面上存在水平提权漏洞,但使用 GUID 来识别用户。
要解决该实验室问题,请找到 的 GUID carlos,然后提交他的 API 密钥作为解决方案。
您可以使用以下凭据登录您自己的帐户:wiener:peter### 实验操作:
查找 的博客文章carlos。
单击carlos并观察 URL 包含他的用户 ID。记下此 ID。
使用提供的凭据登录并访问您的帐户页面。
将“id”参数更改为保存的用户 ID。
检索并提交 API 密钥。

记录下用户id:
userId=61e346b1-dc08-4a1f-b0e5-d59a126ecb0a



实验7:请求参数控制用户ID,重定向时数据泄露
### 实验要求:
该实验室包含一个访问控制漏洞,其中敏感信息在重定向响应正文中泄露。
要解决该实验,请获取用户的 API 密钥carlos并将其作为解决方案提交。
您可以使用以下凭据登录您自己的帐户:wiener:peter### 实验操作:
使用提供的凭据登录并访问您的帐户页面。
将请求发送到 Burp Repeater。
将“id”参数更改为carlos。
请注意,虽然响应现在将您重定向到主页,但它的正文包含属于 的 API 密钥carlos。
提交 API 密钥。


实验8:用户ID由请求参数控制,密码泄露
### 实验要求:
该实验室的用户帐户页面包含当前用户的现有密码,并预先填充了屏蔽输入。
要解决该实验,请检索管理员的密码,然后使用它来删除用户carlos。
您可以使用以下凭据登录您自己的帐户:wiener:peter### 实验操作:
使用提供的凭据登录并访问用户帐户页面。
将 URL 中的“id”参数更改为administrator。
查看 Burp 中的响应并观察到它包含管理员的密码。
登录管理员帐户并删除carlos。



实验9:不安全的直接对象引用
### 实验要求:
本实验将用户聊天日志直接存储在服务器的文件系统上,并使用静态 URL 检索它们。
通过找到用户的密码carlos并登录其帐户来解决实验室问题。###
选择实时聊天选项卡。
发送消息,然后选择查看记录。
查看 URL 并观察记录是文本文件,其文件名包含递增的数字。
将文件名更改为1.txt并查看文本。注意聊天记录中的密码。
返回实验室主页面并使用窃取的凭据登录。




使用凭据登陆:carlos:z608sgq5p1rcy2k6x94v

实验10:基于 URL 的访问控制可以被规避
### 实验要求:
该网站在 处有一个未经身份验证的管理面板/admin,但前端系统已配置为阻止对该路径的外部访问。然而,后端应用程序是建立在支持X-Original-URL标头的框架之上的。
要解决该实验,请访问管理面板并删除用户carlos### 使用操作:
尝试加载/admin并观察是否被阻止。请注意,响应非常简单,表明它可能来自前端系统。
将请求发送到 Burp Repeater。将请求行中的 URL 更改为/并添加 HTTP 标头X-Original-URL: /invalid。观察应用程序返回“未找到”响应。这表明后端系统正在处理来自X-Original-URL标头的 URL。
将标头的值更改X-Original-URL为/admin。请注意,您现在可以访问管理页面。
要删除carlos,请添加?username=carlos到实际查询字符串中,并将X-Original-URL路径更改为/admin/delete。







实验11:基于方法的访问控制可以被规避
### 实验要求:
本实验部分基于 HTTP 请求方法实现访问控制。您可以通过使用凭据登录来熟悉管理面板administrator:admin。
要解决该实验室问题,请使用凭据登录wiener:peter并利用有缺陷的访问控制来提升自己成为管理员。### 实验操作:
使用管理员凭据登录。
浏览到管理面板,升级carlos并将 HTTP 请求发送到 Burp Repeater。
打开私人/隐身浏览器窗口,然后使用非管理员凭据登录。
尝试通过将非管理员用户的会话 cookie 复制到现有的 Burp Repeater 请求中来重新升级carlos该用户,并观察响应显示“未经授权”。
将方法从 更改为POST并POSTX观察到响应更改为“缺少参数”。
GET通过右键单击并选择“更改请求方法”将 请求转换为使用该方法。
将用户名参数更改为您的用户名并重新发送请求
登陆管理员,获得提升权限的api接口:



将wiener登陆后的请求包发送到repeater,使用管理员提升用户权限的接口,使用username=wiener&action=upgrade做完
post参数发送请求,此时cookie的身份是wiener.


使用get方法绕过,提升权限:


实验12:多步骤流程,一步无访问控制
### 实验要求:
该实验室的管理面板包含有缺陷的用于更改用户角色的多步骤流程。您可以通过使用凭据登录来熟悉管理面板administrator:admin。
要解决该实验室问题,请使用凭据登录wiener:peter并利用有缺陷的访问控制来提升自己成为管理员。### 实验操作:
使用管理员凭据登录。
浏览到管理面板,升级carlos并将确认 HTTP 请求发送到 Burp Repeater。
打开私人/隐身浏览器窗口,然后使用非管理员凭据登录。
将非管理员用户的会话 cookie 复制到现有的 Repeater 请求中,将用户名更改为您的用户名,然后重播。



获得提升权限功能的api接口:


将提权的流程1数据包发送到repeater,修改cookie为wiener,username=wiener 发现提权失败:

将提升权限第二个步骤的数据包发到repeater,替换cookie为wiener,302跟随重定向成功提升wiener的权限。

实验13:基于Referer的访问控制
### 实验要求:
本实验根据 Referer 标头控制对某些管理功能的访问。您可以通过使用凭据登录来熟悉管理面板administrator:admin。
要解决该实验室问题,请使用凭据登录wiener:peter并利用有缺陷的访问控制来提升自己成为管理员。### 实验操作:
使用管理员凭据登录。
浏览到管理面板,升级carlos并将 HTTP 请求发送到 Burp Repeater。
打开私人/隐身浏览器窗口,然后使用非管理员凭据登录。
浏览/admin-roles?username=carlos&action=upgrade并观察到,由于缺少 Referer 标头,该请求被视为未经授权。
将非管理员用户的会话 cookie 复制到现有的 Burp Repeater 请求中,将用户名更改为您的用户名,然后重播。

google浏览器:crtl+shift+n:打开一个无痕浏览器:wiener:peter登陆


注意:refer参数:这说明鉴定权限的参数不是cookie,而是refer值:是否为:target_site/admin


参考:
### portswigger官方访问控制【越权】:
https://portswigger.net/web-security/access-control/lab-unprotected-admin-functionality
### 【Burp系列】超全越权漏洞实验总结
https://mp.weixin.qq.com/s/hlmC6sMpwT5G5qSV8-4y5A
### owasp
https://owasp.org/www-project-web-security-testing-guide/stable/
### PayloadsAllTheThings
https://github.com/swisskyrepo/PayloadsAllTheThings
相关文章:
burp靶场--访问控制【越权】
【Burp系列】超全越权漏洞实验总结 https://portswigger.net/web-security/access-control/lab-unprotected-admin-functionality 1. 访问控制【越权】 https://portswigger.net/web-security/access-control#what-is-access-control ### 什么是访问控制: 访问控…...
C#使用DateTime.Now静态属性动态获得系统当前日期和时间
目录 一、实例 1.源码 2.生成效果 二、相关知识点 1.Thread类 (1)Thread.Sleep()方法 (2)Thread(ThreadStart) (3)IsBackground (4)Invoke( ) 2.CreateGrap…...
华为机考入门python3--(0)模拟题2-vowel元音字母翻译
分类:字符串 知识点: 字符串转list,每个字符成为list中的一个元素 list(string) 字符串变大小写 str.upper(), str.lower() 题目来自【华为招聘模拟考试】 # If you need to import additional packages or classes, please import …...
【轮式平衡机器人】——角度/速度/方向控制分析软件控制框架
轮式平衡机器人具有自不稳定性,可类比一级倒立摆系统的控制方法,常见有反馈线性化方法、非线性PID控制、自适应控制、自抗扰控制,还有改进的传统缺乏对外界干扰和参数改变鲁棒性的滑模变结构控制。我们采用较为简单的双闭环PID控制实现平衡模…...
HYBBS 表白墙网站PHP程序源码 可封装成APP
源码介绍 PHP表白墙网站源码,可以做校园内的,也可以做校区间的,可封装成APP。告别QQ空间的表白墙吧。 安装PHP5.6以上随意 上传程序安装,然后设置账号密码,登陆后台切换模板手机PC都要换开启插件访问前台。 安装完…...
【设计模式】适配器和桥接器模式有什么区别?
今天我探讨一下适配器模式和桥接模式,这两种模式往往容易被混淆,我们希望通过比较他们的区别和联系,能够让大家有更清晰的认识。 适配器模式:连接不兼容接口 当你有一个类的接口不兼容你的系统,而你又不希望修改这个…...
C语言应用层程序热补丁
一、热补丁简介 一个正在运行的程序,要是有某函数或某流程有问题,需要修改,有两个方式: 1.通过设置LD_PRELOAD把需要的库重新定向,但这种方式需要重启正在运行的程序。 2.通过修改可执行文件某个函数指向的地址&…...
【代码随想录+力扣hot100】双指针
文章目录 27. 移除元素思路:代码: 26. 删除有序数组中的重复项代码:思路一:重复元素必相邻思路二:从第一个位置开始考虑快慢指针 977.有序数组的平方思路:代码: 283. 移动零代码:思路…...
【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(三):性能优化策略
关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第三部分:性能优化策略,子节点表示追问或同级提问 读写分离 分布式数据库的…...
qnx 上screen + egl + opengles 最简实例
文章目录 前言一、qnx 上的窗口系统——screen二、screen + egl + opengles 最简实例1.使用 addvariant 命令创建工程目录2. 添加源码文件3. common.mk 文件4. 编译与执行总结参考资料前言 本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上…...
python基础学习-02
基本的程序设计模式 任何的程序设计都包含IPO,它们分别代表如下: I:Input 输入,程序的输入 P:Process 处理,程序的主要逻辑过程 O:Output 输出,程序的输出 因此如果想要通过计算…...
服务调用Ribbon,LoadBalance,Feign
服务调用Ribbon、Fegin Ribbon实现负载均衡的原理 1:LoadBalancerAutoConfiguration这个类,这个类主要做的就是把LoadBalancer拦截器封装到RestTemplte拦截器集合里面去。 2:然后在代码里面调用restTemplate.getForObject或者其他方法的时候&…...
一条sql是如何运行的
在我们平时使用sql的时候,基本是基于黑盒的使用方式,在客户端输入一条sql语句,然后回显想要的数据,对于mysql server端内部如何运行的以及与存储引擎如何交互的不得而知。 通过下面一幅图,大致描述客户端和服务端交互…...
SystemC学习笔记(三) - 查看模块的波形
简述 波形在Simulation/Emulation中地位十分重要,尤其是在研发初期,只能通过波形来查看软件hang住的位置。 对于TLM来说,查看波形一般是指查看pvbus上的transaction,而对于SystemC本身来说,查看波形就是使用Gtkwave或…...
计算机网络(第六版)复习提纲5
SS2.2 有关信道的几个基本概念 2.通信模型 三个主要部分:信源、信道、信宿 3.通信方式: a)术语:消息(传递的内容)、数据(传递的形式)、信号(数据表现形式,有模拟信号和数字信号两种&…...
JavaScript 学习笔记(WEB APIs Day3)
「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. JavaScript 学习笔记(Day1) 2. JavaSc…...
Springboot自动装配:三个注解、Selector、spring.factories文件、@ConditionalOnProperty注解
借鉴: 这个链接是包含run方法进来debug看整个过程的,建议先看:https://www.cnblogs.com/starsray/p/15580915.html https://blog.csdn.net/fengxiandada/article/details/130080828 Springboot自动装配 1.创建springboot应用 如何创建一个s…...
软件工程应用题汇总
绘制数据流图(L0/L1/L2) DFD/L0(基本系统模型) 只包含源点终点和一个处理(XXX系统) DFD/L1(功能级数据流图)在L0基础上进一步划分处理(XXX系统) 个人理解 DFD/L2(在L1基础上进一步分解后的数据流图) 数据…...
P1789 【Mc生存】插火把(C语言)
首先,我们可以先用数组来储存地图(建议用int,我试过bool会RE) 每次读入火把和萤石的坐标 接着把能照亮的地方标记起来 最后用计数器统计会生成怪的地方有钻石的话还怕怪吗 最后,上代码 #include<stdio.h> i…...
计算机网络(第六版)复习提纲6
SS2.3 导引型传输媒体 1.三类位非导引型传输媒体 a)双绞线:两根铜线平行会相互干扰,垂直干扰最小,双绞线近似垂直,绞合度越高,可用的数据传输率越高。 i.无屏蔽双绞线UTP(便宜) ii.屏蔽双绞线&a…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
