BAC和IDOR漏洞技巧
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
前言
作为漏洞赏金猎人和渗透测试人员,发现的最有价值的漏洞之一是损坏的访问控制 (BAC)和不安全的直接对象引用 (IDOR).
本文将讨论什么是 BAC 和 IDOR 漏洞、基本测试方法、带有 UUID 的 IDOR、blind类型的IDOR以及自动化相关,前面也写过相关的文章:
正文
什么是 BAC 漏洞?
损坏的访问控制 (BAC:Broken access control ) 是一种由于缺乏适当的验证或身份验证检查,用户可以访问或执行他们不应有权访问的操作的漏洞。
示例
正常情况下: 管理员帐户页面/admin
在前端不可见.
但是普通用户帐户尝试直接访问它并且成功了。
导致普通账户拥有了管理员权限,可以做一些骚操作。
什么是 IDOR 漏洞?
间接对象引用(IDOR)本质上也是一种 BAC 漏洞,是由于使用用户提供的输入作为对对象的直接引用而没有经过适当验证而导致的。
示例
用户A可以通过参数id=101的/account
页面访问自己的帐号设置。
用户A可以像这样增加参数id=102,访问用户B的帐户信息
Blind IDOR
这种很难被注意到,但非常有益。盲 IDOR 是 IDOR 的一种特殊形式,它在 HTTP 响应中不明显,但会在通知电子邮件、SMS 文本消息或导出的文件中泄露。
示例
在任何请求中更改userID。
得到一个200状态码,但没有其他信息。
检查电子邮件通知,看看它是否泄露了任何敏感信息,比如名字和姓氏。
带有 UUID 的 IDOR
在查找 IDOR 时,不仅数字 ID 容易受到影响,在某些情况下,通用唯一标识符 (UUID)也容易受到影响。UUID 是一种加密生成的标识符,使用方式与 ID 类似,但不易被枚举。
示例
-
登录到用户 A并注意 HTTP 请求中的 UUID。注意UUID。
-
登录到用户 B并找到与用户 B 的 UUID相同的请求。
-
换入第 1 步中用户 A 的 UUID,看看它是否有效。如果这行得通,你就快成功了。
-
因为 UUID 通常不容易被暴力破解,所以我们还需要一个元素来完成漏洞利用。
-
查找基于其他输入(如电子邮件地址)来响应UUID的不同HTTP请求。
-
如果第 5 步(上一步)中的 UUID 与第 1 步匹配,那么就成功了!
使用 Auth Analyzer 自动化
如何使用(其实前面有一篇文章已经写的非常详细了: 分享一款越权测试的神器 )
-
复制来自不同用户的会话cookie,并将它们粘贴到Auth Analyzer中。 -
点击Start Analyzer 按钮 -
使用最高权限用户的会话在浏览器中执行操作。 -
查看Auth Analyzer的 matrix,看看是否有请求具有相同的响应。 -
尝试手工验证。 -
如果用户A可以做一些只有用户B才能做的事情,那么就恭喜你找到一个漏洞
往期回顾
原文始发于微信公众号(迪哥讲事):BAC和IDOR漏洞技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论