web渗透测试----18、访问控制和权限提升

article/2025/10/5 19:39:30

文章目录

  • 一、什么是访问控制?
  • 二、什么是访问控制安全模型?
    • 1、程序访问控制
    • 2、自由访问控制(DAC)
    • 3、强制访问控制(MAC)
    • 4、基于角色的访问控制(RBAC)
  • 三、垂直访问控制
    • 1、敏感功能可直接访问
    • 2、基于参数的访问控制方法
    • 3、平台配置错误导致访问控制中断
  • 四、水平访问控制
    • 1、水平访问控制
    • 2、水平到垂直访问控制
  • 五、不安全的直接对象引用(IDOR)
    • 1、直接引用数据库对象的IDOR漏洞
    • 2、直接引用静态文件的IDOR漏洞
  • 六、上下文相关的访问控制
    • 1、多步骤流程中的访问控制漏洞
    • 2、基于引荐来源的访问控制
    • 3、基于位置的访问控制
  • 七、如何防止访问控制漏洞


一、什么是访问控制?

访问控制(或授权)是对谁(或什么)可以执行尝试的操作或访问他们所请求的资源的约束条件的应用。在Web应用程序的上下文中,访问控制取决于身份验证和会话管理:

身份验证可以识别用户并确认他们就是他们所说的身份。
会话管理标识该用户正在发出哪些后续HTTP请求。
访问控制确定是否允许用户执行他们尝试执行的操作。

从用户的角度来看,访问控制可以分为以下几类:

1、垂直访问控制
2、水平访问控制
3、上下文相关的访问控制


二、什么是访问控制安全模型?

访问控制安全模型是一组独立于技术或实现平台的访问控制规则的正式定义。访问控制安全模型是在操作系统,网络,数据库管理系统以及后台,应用程序和Web服务器软件中实现的。这些年来,已经设计了各种访问控制安全模型,以使访问控制策略与业务或组织规则以及技术变化相匹配。

1、程序访问控制

通过编程访问控制,用户特权矩阵存储在数据库或类似数据库中,并且参考该矩阵以编程方式应用访问控制。这种访问控制方法可以包括角色或组或单个用户,流程的集合或工作流,并且可以非常精细。

2、自由访问控制(DAC)

使用任意访问控制,将根据用户或指定的用户组来限制对资源或功能的访问。资源或功能的所有者可以向用户分配或委派访问权限。该模型非常精细,具有对单个资源或功能以及用户的访问权限。因此,模型的设计和管理可能变得非常复杂。

3、强制访问控制(MAC)

强制访问控制是一种访问控制的集中控制系统,其中限制了对象对某些对象(文件或其他资源)的访问。值得注意的是,与DAC不同,资源的用户和所有者不具备委派或修改其资源访问权限的能力。该模型通常与基于军事许可的系统相关联。

4、基于角色的访问控制(RBAC)

使用基于角色的访问控制,可以定义命名角色,并为其分配访问权限。然后,将用户分配给单个或多个角色。RBAC提供了对其他访问控制模型的增强管理,如果设计得当,则可以提供足够的粒度以在复杂应用程序中提供可管理的访问控制。例如,采购员可以定义为对采购分类帐功能和资源的子集具有访问权限的角色。当员工离开或加入组织时,访问控制管理将简化为定义或撤消采购文员角色的成员资格。

当有足够的角色来适当地调用访问控制,但又没有太多的角色使模型过于复杂且难以管理时,RBAC最为有效。


三、垂直访问控制

垂直访问控制是一种机制,用于限制低权限用户对高权限用户敏感功能的访问。
使用垂直访问控制,不同类型的用户可以访问不同的应用程序功能。例如,管理员可能能够修改或删除任何用户的帐户,而普通用户无权访问这些操作。垂直访问控制可以是安全模型的更细粒度的实现,这些模型旨在执行业务策略,例如职责分离和最低特权。

1、敏感功能可直接访问

例如:管理功能可能是从管理员的欢迎页面链接的,而不是从用户的欢迎页面链接的。但是,用户可能直接通过直接浏览到相关的管理URL就能访问管理功能。

1.1、一个网站可能在以下URL上托管敏感功能:https://xxx.xxx/admin,任何用户都可以访问此目录,不仅是在其用户界面中具有指向该功能链接的管理用户。在某些情况下,管理URL可能会在其他位置公开,例如robots.txt文件https://xxx.xxxx.com/robots.txt
即使未在任何地方公开该URL,攻击者也可以爆工具获取敏感功能的位置。

示例:

在这里插入图片描述

1.2、在某些情况下,敏感功能并没有得到严格的保护,通过给它一个不太可预测的URL来隐藏它,仅隐藏敏感功能无法提供有效的访问控制。

例如,考虑一个在以下URL上承载管理功能的应用程序:https://xxx.xxx.com/administrator-panel-yb556
攻击者可能无法直接猜测到该URL。但是,该应用程序仍可能会将URL泄露给用户。例如,URL可能会在JavaScript中公开,该JavaScript根据用户的角色构造用户界面:

<script>
var isAdmin = false;
if (isAdmin) {...var adminPanelTag = document.createElement('a');adminPanelTag.setAttribute('https://insecure-website.com/administrator-panel-yb556');adminPanelTag.innerText = 'Admin panel';...
}
</script>

如果他们是管理员用户,此脚本将向用户的UI添加链接。但是,包含URL的脚本对于所有用户都是可见的。

2、基于参数的访问控制方法

某些应用程序在登录时确定用户的访问权限或角色,然后将此信息存储在用户可控制的位置,例如隐藏字段,cookie或预设查询字符串参数。该应用程序根据提交的值做出后续的访问控制决策。
例如:
https://insecure-website.com/login/home.jsp?admin=true https://insecure-website.com/login/home.jsp?role=1

这种方法从根本上来说是不安全的,因为用户可以简单地修改值并获得对未经授权的功能(例如管理功能)的访问权限。

2.1、用户角色由请求参数控制
在这里插入图片描述
登录抓包,我们发现,使用非管理员账号进行登录时,cookie中Admin参数为false,尝试更改为true。
2.2、可以在用户配置文件中修改用户角色

3、平台配置错误导致访问控制中断

3.1、某些应用程序通过基于用户角色限制对特定URL和HTTP方法的访问来在平台层实施访问控制。例如,应用程序可能会配置如下规则:DENY: POST, /admin/deleteUser, managers

对于规则管理者组中的用户,此规则拒绝POST对URL上的/admin/deleteUser方法的访问。在这种情况下,各种事情都会出错,从而导致访问控制绕过。

某些应用程序框架支持各种非标准HTTP请求头,这些请求头可用于覆盖原始请求中的URL,例如X-Original-URLX-Rewrite-URL。如果网站使用严格的前端控件来限制基于URL的访问,但是应用程序允许通过请求标头覆盖URL,则可以使用如下请求来绕过访问控制:

POST / HTTP/1.1
X-Original-URL: /admin/deleteUser
...

示例:规避基于URL的访问控制
①在链接尾部加上/admin尝试访问,访问失败,burpsuite抓包显示如下。
在这里插入图片描述
②去掉admin,并加上请求头X-Original-URL: /invalid重新访问,观察到该应用程序返回"Not found"响应,表示后端系统正在处理X-Original-URL标头中的URL 。
在这里插入图片描述
③将X-Original-URL标头的值更改为/admin,现在可以访问管理页面了。响应包的HTML文件正好是管理员页面的文件。
在这里插入图片描述

3.2、与请求中使用的HTTP方法有关的替代攻击可能会出现。上面的前端控件基于URL和HTTP方法限制访问。某些网站在执行操作时可以使用其他HTTP请求方法。如果攻击者可以使用GET(或其他)方法对受限URL执行操作,则他们可以绕过在平台层实现的访问控制。
示例:规避基于方法的访问控制


四、水平访问控制

1、水平访问控制

1.1、当用户能够访问相同权限等级的另一个用户的资源时,则为水平访问控制。
用户通常可以使用如下所示的URL访问自己的帐户页面:https://insecure-website.com/myaccount?id=123。现在,如果攻击者将id参数值修改为另一个用户的参数值,则攻击者可能访问另一个用户账户的相关资源。
示例:用户ID由请求参数控制
①登录wiener用户,发现使用get请求直接传递。在这里插入图片描述
②将用户名wiener更改为另一个用户carlos,发送请求,成功。在这里插入图片描述

1.2、在某些应用程序中,可利用参数没有可预测的值。例如,应用程序可以使用全局唯一标识符(GUID)来代替用户,而不是递增数字。在这里,攻击者可能无法猜测或预测另一个用户的标识符。但是,属于其他用户的GUID可能会在引用用户的应用程序的其他位置公开,例如用户消息或评论。
示例:用户ID由请求参数控制,具有不可预测的用户ID
①查看文章,发现carlos用户的userid使用get方式传递:https://ac951f7a1eecd6fd806f20e200c60050.web-security-academy.net/blogs?userId=4082d03d-33bc-427d-904b-c233b8327273
②使用wiener账号登录系统
在这里插入图片描述
③将wiener的userid替换为carlos的userid,可查看carlos的相关信息
在这里插入图片描述

1.3、在某些情况下,应用程序会检测到何时不允许用户访问资源,并将重定向返回到登录页面。但是,包含重定向的响应可能仍然包含属于目标用户的一些敏感数据,因此攻击仍然成功。
示例:用户ID由请求参数控制,重定向中存在数据泄漏
①使用wiener账号登录系统,并访问账户页面
在这里插入图片描述
②将id参数更改为carlos,获取到carlos的系统信息。
在这里插入图片描述

2、水平到垂直访问控制

通过损害权限较高的用户,可以将横向特权升级攻击转变为纵向特权升级。例如,水平越权可能允许攻击者获取或者修改属于另一个用户的密码。如果攻击者以管理员用户为目标并破坏了他们的帐户,则他们可以获得管理员权限,因此可以进行垂直越权。

例如,攻击者使用针对水平越权来访问另一个用户的帐户页面:https://xxx.xxx/myaccount?id=456

如果目标用户是应用程序管理员,则攻击者将获得对管理帐户页面的访问权限。该页面可能会公开管理员的密码或提供更改密码的方法,或者可能提供对特权功能的直接访问。

示例:用户ID由带有密码公开的请求参数控制
①使用wiener账号登录系统,https://acea1f7a1fd796b980d72bdc00570080.web-security-academy.net/my-account?id=wiener,账号名使用id参数传递。
②将id更改为administrator,响应包中存在administrator用户的密码
在这里插入图片描述


五、不安全的直接对象引用(IDOR)

IDOR属于越权漏洞的子类。
当应用程序使用用户提供的输入直接访问对象并且攻击者可以修改输入以获得未经授权的访问时,就会发生IDOR 。常见得IDOR漏洞是用户控制的参数值用于直接访问资源或功能。

1、直接引用数据库对象的IDOR漏洞

该URL通过customer_number=132355参数从数据库检索信息来访问客户帐户页面:https://insecure-website.com/customer_account?customer_number=132355
如果此时系统没有任何防御措施,那么通过修改customer_number参数,是可以直接查看其他访客得文件的记录。这是一个IDOR漏洞导致水平特权升级的示例。
攻击者可能会通过绕过访问控制将用户更改为具有其他权限的用户,从而执行水平和垂直越权。

2、直接引用静态文件的IDOR漏洞

当敏感资源位于服务器端文件系统上的静态文件中时,经常会出现IDOR漏洞。例如,一个网站可能使用递增的文件名将聊天消息记录保存到磁盘,并允许用户通过访问如下URL来查看这些记录:https://insecure-website.com/static/12144.txt

在这种情况下,攻击者可以通过修改文件名以获取用户凭据和其他敏感数据。


六、上下文相关的访问控制

依赖于上下文的访问控制根据应用程序的状态或用户与应用程序的交互来限制对功能和资源的访问。上下文相关的访问控制可防止用户以错误的顺序执行操作。例如,零售网站可能会阻止用户在付款后修改购物车中的内容。

1、多步骤流程中的访问控制漏洞

许多网站通过一系列步骤来实现重要功能。例如,用于更新用户详细信息的管理功能可能涉及以下步骤:
1、加载表单,其中包含特定用户的详细信息。
2、提交更改。
3、查看更改并确认。

有时,网站将对其中某些步骤实施严格的访问控制,而忽略其他步骤。假设访问控制已正确应用于第一步和第二步,但未正确应用于第三步。实际上,该网站假定用户只有完成了正确控制的第一步后,才可以进入第3步。在这里,攻击者可以跳过前两个步骤并直接使用所需参数提交对第三步的请求,从而获得未经授权的功能访问。

2、基于引荐来源的访问控制

某些网站的访问控制基于HTTP Referer请求头,Referer一般为请求来源地址。
例如,假设某个应用程序对主管理页面(/admin)实施了访问控制,但是对于子页面(例如/admin/deleteUser仅检查Referer标头)未进行访问控制,如果Referer标头包含主/adminURL,则允许该请求。
在这种情况下,由于Referer攻击者可以完全控制标头,因此攻击者可以伪造对敏感子页面的直接请求,提供所需的Referer标头,从而获得未经授权的访问。

3、基于位置的访问控制

一些网站根据用户的地理位置对资源实施访问控制。例如,这可以适用于适用业务限制的银行应用程序或媒体服务。这些访问控制通常可以通过使用Web代理,VPN或操作客户端地理定位机制来规避。


七、如何防止访问控制漏洞

通常,可以采用深度防御方法并应用以下原则来防止访问控制漏洞:

1、切勿仅依靠混淆来进行访问控制。
2、除非打算公开访问资源,否则默认情况下将拒绝访问。
3、尽可能使用单个应用程序范围的机制来执行访问控制。
4、在代码级别,开发人员必须声明每个资源允许的访问,并默认拒绝访问。
5、彻底审核和测试访问控制,以确保它们按设计工作。


参考:https://portswigger.net/

http://chatgpt.dhexx.cn/article/cvnDimhK.shtml

相关文章

WEB>SSRF(URL Bypass,数字IP Bypass,302跳转Bypass,DNS重绑定Bypass)

目录 一、URF Bypass 二、 数字IP Bypass 三、302跳转 Bypass 四、 DNS重绑定Bypass 一、URF Bypass 题目&#xff1a; 解题思路&#xff1a; 1.根据上图提示构造 urlhttp://notfound.ctfhub.com127.0.0.1/flag.php 2.访问得到flag 二、 数字IP Bypass 题目&#xff1a…

Oxeye在Harbour中发现了几个高危 IDOR 漏洞

Oxeye安全研究团队在Harbor(由云本地计算基金会(CNCF)和VMWare开发的开源构件注册中心)中发现了几个高严重性不安全的直接对象引用(IDOR)漏洞。 该公司解释说&#xff0c;尽管Harbor已在大多数HTTP端点上实施了基于角色的访问控制 (RBAC)&#xff0c;但仍发现了这五个缺陷。 …

Lab: Insecure direct object references:不安全的直接对象引用

靶场内容&#xff1a; 该实验室将用户聊天记录直接存储在服务器的文件系统上&#xff0c;并使用静态 URL 检索它们。 通过找到用户的密码carlos并登录他们的帐户来解决实验室问题。 漏洞分析&#xff1a; 这个就是在网站里面将聊天记录存储在文件里而其他用户又可以访问这个文件…

Webgoat--访问控制缺陷

不安全的直接对象引用 &#xff08;IDOR水平权限越权&#xff09; 定义 不安全的直接对象引用&#xff08;IDOR&#xff09;允许攻击者绕过网站的身份验证机制&#xff0c;并通过修改指向对象链接中的参数值来直接访问目标对象资源&#xff0c;这类资源可以是属于其他用户的数…

开源API越权漏洞检测系统推荐:IDOR_detect_tool

相信大部分读者跟我一样&#xff0c;每天都在写各种API为Web应用提供数据支持&#xff0c;那么您是否有想过您的API是否足够安全呢&#xff1f; Web应用的安全是网络安全中不可忽视的关键方面。我们必须确保其Web应用与后台通信的安全&#xff0c;以防止数据泄露&#xff0c;因…

漏洞挖掘丨敏感信息泄露+IDOR+密码确认绕过=账户劫持

获得账户auth_token 目标网站是一个工作招聘门户网站&#xff0c;测试保密原因暂且称其为redacted.com。一开始&#xff0c;我登录以应聘者身份去测试CSRF或某些存储型XSS&#xff0c;但没什么发现。接下来&#xff0c;我就想到了越权测试&#xff08;IDOR&#xff09;&#xf…

挖洞经验丨敏感信息泄露+IDOR+密码确认绕过=账户劫持

本文中涉及到的相关漏洞已报送厂商并得到修复&#xff0c;本文仅限技术研究与讨论&#xff0c;严禁用于非法用途&#xff0c;否则产生的一切后果自行承担。 今天分享的这篇Writeup是作者在HackerOne上某个邀请测试项目的发现&#xff0c;目标网站存在不安全的访问控制措施&…

Redis 4.x/5.x IDOR漏洞复现

Redis 4.x/5.x 未授权访问漏洞 Redis未授权访问在4.x/5.0.5以前版本下&#xff0c;我们可以使用master/slave模式加载远程模块&#xff0c;通过动态链接库的方式执行任意命令。 漏洞复现 最近碰到ctf的题目是通过ssrf和redis的未授权访问打入内网getshell&#xff0c;想着用…

win2008r2用户账户控制什么意思_敏感信息泄露+IDOR+密码确认绕过=账户劫持

今天分享的这篇Writeup是作者在HackerOne上某个邀请测试项目的发现&#xff0c;目标网站存在不安全的访问控制措施&#xff0c;可以利用其导致的敏感信息泄露(auth_token) 密码重置限制绕过&#xff0c;以越权(IDOR)方式&#xff0c;实现网站任意账户劫持(Takeover)。整个测试过…

IDOR漏洞接管Facebook页面,获1万6千美金奖励

印度小哥的自拍有点曝光过度了啊 Facebook能给出这么高的奖励&#xff0c;好棒啊 发现Facebook零日漏洞&#xff0c;获得10万7千元人民币奖励 安全研究人员发现Facebook存在零日漏洞&#xff01;可以接管Facebook的任何页面。 Facebook几乎是中小企业推广自家产品的最高效…

会话Cookie中的IDOR导致批量帐户泄露

如果你熟悉IDOR是什么&#xff0c;你将知道它可以在url&#xff0c;请求正文&#xff0c;GET或POST请求等任何地方&#xff0c;也可以在cookie中。 当我注意到Cookie中有一个被称为shoppingID会话Cookie的事件时&#xff0c;In试图重现CSRF问题。 在仔细查看了cookie的价值之…

学习笔记-IDOR

IDOR 整个部分结构大部分基于乌云的几篇密码找回、逻辑漏洞类文章,在其基础上记录和归纳 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 大纲 认证绕过 未授权访问身份认证绕过密码重置验证码突破Ticket_Trick …

tryhackme圣诞挑战2021-Advent of Cyber 3-day1-IDOR漏洞,不安全的访问控制漏洞

文章目录 第一天IDOR漏洞是什么&#xff1f;通常出现的地方查询get请求post的表单的值cookies 挑战初探挑战的问题 第一天 货物系统出现了问题&#xff0c;让我们想办法进行修复! IDOR漏洞是什么&#xff1f; Insecure Direct Object Reference&#xff0c;不安全的直接对象…

IDOR漏洞

IDOR漏洞 一、概述 IDOR&#xff0c;Insecure Direct Object reference&#xff0c;即"不安全的直接对象引用"&#xff0c;场景为基于用户提供的输入对象进行访问时&#xff0c;未进行权限验证&#xff0c;是一类访问控制漏洞。在OWASP API安全前10名的API漏洞中排名…

IDORs:它们是什么,你如何测试它们?

它是什么 IDOR&#xff1a;不安全的直接对象引用 照片由Muhannad Ajjan在Unsplash上拍摄 这些类型的漏洞源于访问控制问题。我们将用另一整章来讨论这些类型的漏洞。IDOR 一词因出现在 OWASP 前 10 名中而广受欢迎&#xff0c;但实际上它只是另一种类型的访问控制问题。IDOR …

什么是IDOR(不安全的直接对象引用)

自从2010年开始&#xff0c;不安全的直接对象引用&#xff08;IDOR&#xff09;就已经成为了OWASP Top 10 Web应用安全风险中影响程度排名第四的安全漏洞了。 IDOR将允许一名授权用户获取其他用户的信息&#xff0c;意指一个已经授权的用户通过更改访问时的一个参数&#xff0…

Opencv—— 拟合直线

概念 最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的。 最小二乘法就是通过最小化误差的平方和&#xff0c;使得拟合对象无限接近目标对象。在图像处理中主要用于拟合线&#xff0c;通过求采样点距离误差最小的线&#xff0c;可以是直…

用线性回归拟合直线

#代码如下 //vDataX x点的坐标 //vDataY y点的坐标 //srcStart 要计算的x点 //outStart 输出的对应Y值 bool CalcLineFit(double srcStart, std::vector<double> vDataX,std::vector<double> vDataY, double& outStart) {double s_x_ag 0, e_x_ag 0;double…

梯度下降法拟合直线

给定300个样本点(x, y)。拟合直线&#xff1a; 设直线方程为y w*x b 其中&#xff1a;x&#xff0c;y是给定的样本点&#xff0c;作为训练集。w和b是待拟合的参数。 该问题可以转化为&#xff0c;优化函数 f(w, b) y - w*x - b 使用平方损失&#xff0c;转化为优化&…

OpenCV实战系列——拟合直线

OpenCV实战——拟合直线 0. 前言1. 直线拟合2. 完整代码相关链接 0. 前言 在某些计算机视觉应用中&#xff0c;不仅要检测图像中的线条&#xff0c;还要准确估计线条的位置和方向。本节将介绍如何找到最适合给定点集的线。 1. 直线拟合 首先要做的是识别图像中可能沿直线对…