访问控制和权限提升漏洞-攻击示例(二)

admin 2025年1月11日13:52:29评论10 views字数 2272阅读7分34秒阅读模式

在本节中,将通过攻击示例场景进一步讨论什么是访问控制安全,描述权限提升和访问控制可能出现的漏洞类型。

垂直提权

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

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

一些应用程序通过基于用户角色限制对特定的URLHTTP方法进行访问控制。

比如,应用程序可能会配置如下规则:

访问控制和权限提升漏洞-攻击示例(二)

这个规则拒绝manager组中的用户对/admin/deleteUser这个URL进行POST方式访问,不过在这种情况下,如果存在漏洞,可能会导致访问控制被绕过。

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

例如:X-Original-URLX-Rewrite-URL

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

访问控制和权限提升漏洞-攻击示例(二)

场景试验-绕过基于URL的访问控制:

https://portswigger.net/web-security/access-control/lab-url-based-access-control-can-be-circumvented

场景说明:

这个试验场景在/admin处有一个未经身份验证的管理面板,但前端系统已经配置了阻止外部对该路径的访问。但是后端应用程序支持X-Original-URL的标头。

试验目的:

要完成这个试验,需要访问管理面板删除carlos用户。

攻击过程:

访问/admin可以看到因为权限问题被禁止访问了

访问控制和权限提升漏洞-攻击示例(二)

将访问/目录的请求发送给Repeater,增加一个HTTP标头,可以注意到有权限访问/admin了:

X-Original-URL: /admin

访问控制和权限提升漏洞-攻击示例(二)

为了删除carlos用户,在请求中增加?username=carlos,并且修改:

X-Original-URL: /admin/delete

发送请求后,用户被删除即可完成试验

访问控制和权限提升漏洞-攻击示例(二)

试验小结:

有些应用会支持非标准的请求头,允许”X-Original-URL"或者"X-Rewrite-URL"覆盖目标URL值,并隐藏真实的地址,此时我们可以指定”X-Original-URL”或者“X-Rewrite-URL“”/console“或者”/admin“,尝试绕过禁止外部访问的限制。

另一种攻击可能与请求中使用的HTTP方法有关,上面提到的前端控件根据URLHTTP方法限制访问,某些网站在执行操作时可能忽略其他HTTP请求方法,如果攻击者可以使用GET(或其他)方法对受限URL执行操作,那么就可以绕过访问控制。

场景试验-绕过基于方法的访问控制:

https://portswigger.net/web-security/access-control/lab-method-based-access-control-can-be-circumvented

场景说明:

这个试验场景部分请求的HTTP方法实现访问控制,可以通过管理员账户administrator:admin登录来熟悉管理面板。

试验目的:

要完成这个试验,需要使用wiener:peter登录并利用缺陷的访问控制来提升自己成为管理员。

攻击过程:

先用管理账号登录,然后在管理面板中把carlos提权,并且将这个请求发送给Repeater

访问控制和权限提升漏洞-攻击示例(二)

登出管理员账号,另外登入wiener账号,将登录后的cookie替换到前面那个请求并发送,可以发现响应返回“未授权”

访问控制和权限提升漏洞-攻击示例(二)

右键点击选择"Change request method"将请求方法改成GET,并将需要提权的用户改成"wiener"并发送,提权成功,完成本试验

访问控制和权限提升漏洞-攻击示例(二)

访问控制和权限提升漏洞-攻击示例(二)

试验小结:

这种试验场景的访问控制策略主要问题是权限划分不够细,导致存在疏漏,像这种场景中的访问控制,通常以白名单的方式来实现可以有效地避免被绕过。

水平提权

当用户能够访问属于另一个用户的资源而不是他们自己该类型的资源时,就会出现水平权限提升。

例如,如果一个员工应该只能访问自己的就业和工资记录,但实际上也可以访问其他员工的记录,那么就属于这种提权漏洞。

水平提权攻击可使用与垂直提权类似的方法,比如用户通常可以使用如下URL访问他们自己的账户页面:

访问控制和权限提升漏洞-攻击示例(二)

如果攻击者将id参数值修改为另一个用户的值,那么攻击者可能会访问另一个用户的账户页面,并获取相关的数据和功能。

场景试验-由请求参数控制的用户ID

https://portswigger.net/web-security/access-control/lab-user-id-controlled-by-request-parameter

场景说明:

这个试验场景在用户账户页面存在水平提权漏洞。

试验目的:

要完成这个试验,需要用wiener:peter这个账户登录,获取用户carlosAPI密钥并提交。

攻击过程:

先用wiener账号登录,登录后刷新一下/my-account,将这个请求发送到Repeater,可以注意到这个请求是带了用户名参数过去访问的

访问控制和权限提升漏洞-攻击示例(二)

Repeater中修改下参数id后面的用户名,再次发送请求,在响应包中可以看到这个用户的API密钥,将密钥复制后在首页上方提交即可完成本试验

访问控制和权限提升漏洞-攻击示例(二)

访问控制和权限提升漏洞-攻击示例(二)

信息泄露漏洞-概念梳理

业务逻辑漏洞-概念梳理

命令注入攻击(上)
目录遍历攻击(上)

份验证漏洞-概念梳理

SQL注入攻击-检索隐藏的数据
HTTP高级请求走私-响应队列中毒
HTTP Host头漏洞攻击-概念梳理

原文始发于微信公众号(H君网安白话):访问控制和权限提升漏洞-攻击示例(二)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月11日13:52:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   访问控制和权限提升漏洞-攻击示例(二)https://cn-sec.com/archives/1200352.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息