【BP靶场portswigger-服务端7】访问控制漏洞和权限提升-11个实验(全)(上)

本文涉及的产品
访问控制,不限时长
简介: 【BP靶场portswigger-服务端7】访问控制漏洞和权限提升-11个实验(全)(上)

一、访问控制


1、定义:


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


(1)身份验证可识别用户并确认他们的身份

(2)会话管理标识该用户正在发出哪些后续HTTP请求

(3)访问控制确定是否允许用户执行他们尝试执行的操作


2、危害


1、破坏访问控制是一种常见的安全漏洞,通常是严重的安全漏洞。访问控制的设计和管理是一个复杂的动态问题,它将业务、组织和法律的约束应用于技术实现。访问控制设计决策必须由人而不是技术来做出,并且出错的可能性很高。


2、从用户的角度来看,访问控制可分为:垂直访问控制、水平访问控制、上下文相关的访问控制


3、垂直访问控制


1、原理:垂直访问控制是限制对其他类型用户不可用的敏感功能的访问的机制。


————


2、危害:利用垂直访问控制,不同类型的用户可以访问不同的应用程序功能。如管理员可以修改或删除任何用户的帐户,而普通用户则无权执行这些操作。垂直访问控制可以是安全模型的更细粒度的实现,这些安全模型被设计用于强制执行业务策略,如职责分离和最小特权。


4、水平访问控制


1、原理:水平访问控制是将对资源的访问限制到被特别允许访问那些资源的用户的机制。


————


2、危害:通过水平访问控制,不同的用户可以访问同一类型的资源子集。例如,银行应用程序将允许用户查看交易并从自己的帐户进行支付,但不允许任何其他用户的帐户。


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


1、原理:上下文相关的访问控制根据应用程序的状态或用户与应用程序的交互来限制对功能和资源的访问。


————


2、危害:上下文相关的访问控制可防止用户以错误的顺序执行操作。如零售网站可能会阻止用户在付款后修改其购物车的内容。


二、破坏访问控制的示例


1、纵向权限提升


如果用户可以访问不允许其访问的功能,则这是垂直权限提升。如一个非管理员用户实际上可以访问一个管理页面,在那里他们可以删除用户帐户,那么这就是垂直权限提升


2、不受保护的功能


1、最基本的情况是,当应用程序不对敏感功能实施任何保护时,会出现垂直权限提升。如管理功能可能从管理员的欢迎页面链接,而不是从用户的欢迎页面链接。然而用户可能仅仅能够通过直接浏览到相关的管理URL来访问管理功能


2、示例:


如某个网站可能在以下URL上托管敏感功能:


https://insecure-website.com/admin


事实上,任何用户都可以访问该功能,而不仅仅是在其用户界面中具有指向该功能的链接的管理用户。在某些情况下,管理URL可能会在其他位置公开,如robots.txt文件:


https://insecure-website.com/robots.txt


即使URL没有在任何地方公开,攻击者也可以使用单词列表强行找到敏感功能的位置


涉及实验:


实验1:不受保护的管理功能


3、隐藏的接口


在某些情况下,敏感功能没有得到可靠的保护,而是通过提供一个不可预测的URL来隐藏:所谓的模糊安全。仅仅隐藏敏感功能并不能提供有效的访问控制,因为用户仍然可能以各种方式发现模糊的URL。


如在以下URL承载管理功能的应用程序:


https://insecure-website.com/administrator-panel-yb556


这可能无法被攻击者直接猜到。但应用程序仍可能将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:不受保护的管理功能,URL不可预测


实验1:不受保护的管理功能


本实验有一个未受保护的管理面板。


通过删除用户carlos解决实验


part1:


将/robots. txt加到URL后查看robots.txt文件


Disallow行显示了管理面板的路径


d652628a5e754d1caa67eb4734e20fbe.png


part2:


在主URL后加上/administrator-panel以加载管理面板


0316031880e5431090def67ad8ffaede.png


删除carlos完成实验


4076320fe6c44cbb9811dda57a44d79f.png


401393f857264ffda7bed879bd86c24c.png


实验2:不受保护的管理功能,URL不可预测


本实验有一个未受保护的管理面板。它位于一个不可预测的位置,但该位置在应用程序中的某个地方公开。


通过访问管理面板并使用它删除用户carlos来解决实验


part1:


使用Burp Suite或Web浏览器的开发工具查看实验主页的源代码。


(Ctrl+U查看源码)注意到它包含一些JavaScript,公开了管理面板的URL


会有一个是否是admin的检测


检测成功则跳转

7357eef02f40427a83243c96f25a2046.png


part2:


加载管理面板并删除carlos


98a031f530c442af9153c2fd45b725ef.png


f8d3f6e6adce4cfaadda07f893d0558b.png

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


1、某些应用程序在登录时确定用户的访问权限或角色,然后将此信息存储在用户可控制的位置,如隐藏字段、cookie或预设查询字符串参数。应用程序根据提交的值做出后续访问控制决策


例如:
https://insecure-website.com/login/home.jsp?admin=true
https://insecure-website.com/login/home.jsp?role=1


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


2、涉及实验:


实验3:由请求参数控制的用户角色


实验4:可以在用户配置文件中修改用户角色


实验3:由请求参数控制的用户角色


本实验在/admin下有一个管理面板,用于识别使用可伪造Cookie的管理员。


通过访问管理面板并使用它删除用户carlos来解决实验


已有账号:wiener:peter


part1:


浏览到/admin,发现您无法访问管理面板


77e4c0e21a494362b655b9602c9f90cd.png

part2:


在Burp代理监听(完整的登陆流程中,在HTTP历史记录中可以发现有一个admin身份的验证)

8908bf2f48454bf8810e2913770fd0ee.png



使用BP拦截并将cookie Admin=false改为Admin=true


(第二个跳转到/my-account的数据包)


8a30a791f9d343ca90b0434a6d2cda4c.png

改为true后关闭拦截,完成并提交登录页面


每次点击的时候都拦截请求


87f5fa3370df463ca47cf9af31908176.png


每一步都要修改为true


4dc98bcdc6a845f898fdaf8e9dbb5b15.png


part3:


完成实验


点击删除,然后再改为true


7497c12a2e8d44f191fd568ffdc90f08.png


c59f65ca989d43da8a34067c4bf2fadf.png

实验4:可以在用户配置文件中修改用户角色


本实验在/admin下有一个管理面板。只有角色标识为2的登录用户才能访问。


通过访问管理面板并使用它删除用户carlos来解决实验


已有账号:wiener:peter


part1:


使用提供的凭据登录并访问您的帐户页面

使用提供的功能更新与帐户关联的电子邮件地址(有一个更新接口,尝试更新其他内容)


7b1b49f559e64f2897ea5ca8de98fcd2.png

更新邮箱,并查看数据包


cdd64027560e4250a34d8b52888da618.png


查看返回的数据包发现我们只修改了这么多参数中的其一


d30fd8bb6ee949e6868da78e1b87aab8.png


part2:


将电子邮件提交请求发送到repeater重发


5cdf58fc089a423890cc43d1289adf87.png


增加参数将”roleid“:2添加到请求正文的JSON中,响应中已变为2


153d08ca2ceb45b3839bad1dd9a1ff06.png


part3:


完成实验

浏览到/admin并删除carlos


a47d0cdbb61746a8b362dbb4f1e6dc30.png



e3a443e85f37402e84b7ab441e3189cb.png


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


1、一些应用程序通过基于用户角色限制对特定URL和HTTP方法的访问,在平台层强制执行访问控制。


如应用程序可能配置如下规则:
DENY: POST, /admin/deleteUser, managers


规则拒绝访问后URL上的方法/admin/deleteUser,适用于管理员组中的用户(在这种情况下,各种事情都可能出错,导致访问控制绕过)


2、一些应用程序框架支持各种非标准HTTP头,这些头可用于覆盖原始请求中的URL


如X-Original-URL和X-Rewrite-URL


如果网站使用严格的前端控制来限制基于URL的访问,但应用程序允许通过请求标头覆盖URL,则可能使用如下请求绕过访问控制:


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


3、另一种攻击可能与请求中使用的HTTP方法有关。上述前端控件根据URL和HTTP方法限制访问。某些网站在执行操作时允许使用其他HTTP请求方法。如果攻击者可以使用GET(或其他)方法对受限URL执行操作,那么他们就可以绕过在平台层实现的访问控制。


4、涉及实验:


实验10:可以绕过基于URL的访问控制

实验11:可以绕过基于方法的访问控制


实验10:可以绕过基于URL的访问控制


此网站在/admin处有一个未经身份验证的管理面板,但前端系统已配置为阻止对该路径的外部访问。但后端应用程序构建在支持X-Original-URL标头的框架上。


要解决实验问题,访问管理面板并删除用户carlos


已有账号:wiener:peter


part1:


尝试加载/admin并观察是否被阻止


(响应非常简单,表明可能来自前端系统)

87358a93a18748f0a218a825f29737c4.png

part2:


发送请求到repeater


将请求行中的URL更改为/并添加HTTP标头X-Original-URL:/invalid


注意到应用程序返回“未找到”响应(表明后端系统正在处理来自X-Original-URL头的URL)


d8d014ffc4274e338944e8cd20e57356.png


将X-Original-URL标头的值更改为/admin,并放包

6db79c9238644d9a893b8e3184772ad1.png

然后退回主页,现在可以访问管理页面了

1d6741b75a5d4ca5b96ef1bcf7e5a80a.png



part3:

要删除用户卡洛斯(可能要等很久)


添加?username=carlos设置为真实的的查询字符串,并将X-Original-URL路径更改为/admin/delete


?username=carlos
X-Original-URL:/admin/delete


(抓一个包修改,或者重发后刷新)

b22deb4388e740d8a01dda73d43027f8.png



实验完成

f0a1f0df07154e3bbfa41e33f981bcf6.png


实验11:可以绕过基于方法的访问控制


本实验部分基于HTTP请求方法实现访问控制,可以通过使用凭据administrator:admin登录来熟悉管理面板(利用有缺陷的访问控制将自己提升为管理员)


已有账号:wiener/peter


part1:


使用管理员凭据登录(administrator:admin)


71d61d28f6e443eab784c9e80c9da1c7.png


浏览到管理面板,提升carlos,然后将HTTP请求发送到Burp Repeater



f5cb27dd38564de7a57b3032661f32fb.png


c70f55b2fd584f398d8be07e7185dba7.png

part2:

打开一个私有/匿名浏览器窗口,然后使用非管理员凭据登录(wiener/peter)

31c4a1d913a4402998a3a2c033073430.png


尝试通过将非管理员用户的会话cookie复制到现有的BurpRepeater请求中来重新提升卡洛斯,并观察到响应显示为“Unauthorized”(未经授权)

a9aa960dea9f4fb4992ac4d1d75025db.png


将方法从POST更改为POSTX,并观察响应更改为“missing parameter”(缺少参数)

4fb0d1bbd79149638892008530bd676a.png


通过右键单击并选择“更改请求方法”,将请求转换为使用GET方法

98bc4026fb32420e84c2ba539c939222.png



8195cbfe902c4e2cb284a90ce8d7613b.png


part3:


将username参数更改为我们的用户名并重新发送请求(wiener)

019ae8fd5704482fa3bdb9e32c0f0836.png


(如果没完成实验,就刷新一下页面)


fc800326bc4e43b797220ab9e141f4a0.png


5、横向权限提升


1、原理:当用户能够访问属于另一个用户的资源而不是他们自己的资源时,就会出现横向权限提升。如一个员工应该只能访问自己的雇佣和工资单记录,但实际上也可以访问其他员工的记录,那么这就是横向权限提升。


2、水平权限提升攻击可能使用与垂直权限提升类似的利用方法。


如用户通常可以使用如下URL访问自己的帐户页面:
https://insecure-website.com/myaccount?id=123
(如果攻击者将id参数值修改为另一个用户的值,那么攻击者就可能获得对另一个用户的帐户页面以及相关数据和函数的访问权限)


涉及实验:


实验5:由请求参数控制的用户ID


3、在某些应用程序中,可利用参数不具有可预测的值。如应用程序可以使用全局唯一标识符(GUID)来标识用户,而不是使用递增的数字。在这里,攻击者可能无法猜测或预测其他用户的标识符。但属于其他用户的GUID可能会在引用用户的应用程序中的其他地方公开,例如用户消息或评论

————


涉及实验:


实验6:用户ID由请求参数控制,用户ID不可预测


4、在某些情况下,应用程序会检测到用户何时不被允许访问资源,并返回到登录页的重定向。但包含重定向的响应仍可能包含属于目标用户的某些敏感数据,因此攻击仍会成功。

————


涉及实验:


实验7:用户ID由请求参数控制,重定向时发生数据泄漏  


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
3月前
|
安全 网络安全 数据安全/隐私保护
【专栏】IT 知识百科:访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限
【4月更文挑战第28天】访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限。ACL工作原理包括定义规则、匹配规则和执行操作。标准ACL基于源IP过滤,扩展ACL则提供更多筛选条件。时间及用户基础的ACL提供更细化的控制。优点在于增强安全性和精细管理,但管理复杂性和性能影响也是挑战。未来,ACL将趋向智能化和自动化,与更多安全技术结合,以提升网络安全。**
273 0
|
2月前
|
Java 数据安全/隐私保护
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
24 0
|
3月前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
572 3
|
3月前
|
存储 数据安全/隐私保护 C++
第十五章:C++访问控制权限、继承和多态详解
第十五章:C++访问控制权限、继承和多态详解
250 0
|
8月前
|
分布式计算 DataWorks MaxCompute
在DataWorks中进行数据访问控制权限申请
在DataWorks中进行数据访问控制权限申请
100 1
|
10月前
|
安全 网络安全 数据安全/隐私保护
修复ICMP权限许可和访问控制漏洞
修复ICMP权限许可和访问控制漏洞
369 0
|
安全 数据安全/隐私保护
JeeSite 访问控制权限
JeeSite 访问控制权限
183 0
|
数据安全/隐私保护
访问控制列表 扩展ACL+命名ACL+实战小实验
访问控制列表 扩展ACL+命名ACL+实战小实验
102 0
访问控制列表 扩展ACL+命名ACL+实战小实验
|
存储 安全 API
【BP靶场portswigger-服务端7】访问控制漏洞和权限提升-11个实验(全)(下)
【BP靶场portswigger-服务端7】访问控制漏洞和权限提升-11个实验(全)(下)
859 0
【BP靶场portswigger-服务端7】访问控制漏洞和权限提升-11个实验(全)(下)
|
Java 数据安全/隐私保护 开发者
Java 包及访问控制权限
学习内容: 掌握包的定义及使用。 掌握Java新特性一一静态导入。 了解Java中的常用系统包。 掌握jar命令的使用。 掌握Java中的4种访问权限。 掌握Java语言的命名规范。
137 0
Java 包及访问控制权限