越权漏洞(IDOR:不安全的直接对象引用)挖掘技巧及实战案例全汇总

Insecure Direct Object reference (IDOR) 不安全的直接对象引用,基于用户提供的输入对象直接访问,而未进行鉴权,这个漏洞在国内...

1、漏洞理解

Insecure Direct Object reference (IDOR) 不安全的直接对象引用,基于用户提供的输入对象直接访问,而未进行鉴权,这个漏洞在国内被称作越权漏洞。

IDOR 其实在越权(Broken Access Control)漏洞的范畴之内,严格来说越权的含义更广一些。它可以说是逻辑漏洞,也可以说是一个访问控制问题,细分的话可以将其分为 URL 层访问控制和数据层访问控制。

2、挖掘技巧

1)关注功能

检查任何涉及的敏感 ID 功能处替换:包括普通的增删改查、上传、共享及密码重置,密码更改,帐户恢复等处的 id 值,不同功能处影响也不一样:

P1 - 账户接管,访问非常重要的数据(如信用卡)

P2 - 更改 / 删除其他用户的公共数据,访问私人 / 公共重要数据(如门票,发票,付款信息)

P3 - 访问 / 删除 / 更改私人数据(有限的个人信息:姓名,地址等)

P4 - 访问任何不重要的数据

2)漏洞分类

a、简单:直接标识符

关注 “id”,“user_id”,“value”,“pid”,“post_id” 等参数处、目录处,关注任何场景每一个可能决定用户权限的参数值。通过加和减 1 提交整数值,看是否可以看到本不该看到的数据,若返回 403 拒绝访问很可能说明没有漏洞。

b、复杂:随机标识符

遇到某些参数使用哈希值(如 UUIDs),可以尝试解码编码值,或寻找参数值泄露(特定返回包或页面源代码), 测试时通常创建两个账号并替换参数值,查看是否可以操作成功,若参数过多可使用 comparer 模块筛选处不同参数:

3)越权访问

广义上讲,越权就是 “看到当前用户本不该看到的数据,执行本不该执行的操作”。

用户间越权:

比较管理员和普通用户、用户之间存在权限差异处,包括:

1、 GET:抓取对目录及类名的请求(URL 层)

2、 POST:关注任何请求 / API,具体的方法(数据层)

单用户内部越权:

1、 灰化按钮,审查元素绕过前端检验

2、 单业务处上下条数据之间是否存在权限差异(编辑 / 查看)

3、 多业务是否公用方法可以篡改权限或数据

4)更多

结合 HPP(传送门),self-xss 等漏洞将低危漏洞升级为高危漏洞。

3、实战案例

1)微软找回密码 IDOR

微软招聘网站通过邮箱找回密码处,ID 未进行用户权限校验,导致通过提交攻击者邮箱和遍历 id 方式重置任意用户密码。

2)雅虎任意评论删除

雅虎评论删除 url 地址为:

https://tv.yahoo.com/_xhr/contentcomments/delete_comment/

参数为:

comment_id=139967299182-588b2cdd&content_id=485d5605ea9&crumb=DcUNKWnp7%2F8

其中 comment_id 代表不同用户的 id,使用另一个账户 victim 登录并评论,抓取 comment_id 并替换,返回 200 的 json 数据:

但再次尝试其他评论时,却返回 401 鉴权失败:

经过反复测试,发现只有攻击者是第一个评论者时才能删除后面的任意评论,开发者遗漏了对第一个评论者的鉴权验证。

3)Twitter 信用卡删除 IDOR

Twitter 支付方法页面中信用卡的删除功能,URL 如下:

https://ads.twitter.com/accounts/[account id]/payment_methods

进行删除操作时会发送 ajax 的 post 请求为:

请求报文只有两个参数,重点是了解参数代表的含义:account 指 Twitter 账户 id,id 指绑定的信用卡 id,同样的操作,登录另一个 Twitter 账户获取账户 id 和绑定的信用卡 id,进行替换,页面响应是 “403 forbbiden”,但实际卡已经删除。

类似的还有 YouTube 的任意评论移动漏洞,价值 3k 美元,漏洞发生在其他人在你的视频下评论,点击查看:

请求数据包为:

需关注的参数是 comment 和 video,含义较明显,依旧尝试替换 id,如果将 VIDEO_ID 更改为任何其他视频 ID,会出现错误;但如果保持 VIDEO_ID 不变只改变 COMMENT_ID,其他的评论将会出现在你的视频下。

4、防护手段:

任何一个端点 / 接口 / 请求都应该进行鉴权操作,有效的验证机制为将参数中的每个关键 id 都和当前登录用户身份及权限进行校验,即使是系统已有相关鉴权操作,也很容易遗漏某些细节。

本文分享自微信公众号 - 卓文见识(zhuowenjianshi),作者:Jayway

原文地址 cloud.tencent.com