freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

挖洞经验 | 如何发现更多的IDOR漏洞(越权漏洞)
clouds 2019-12-29 15:00:18 713274

我非常喜欢搞IDOR漏洞,它通常被称为不安全的直接对象引用或是越权,一般来说它的发现手段相对简单,利用方式也不太难,但是对网站业务的危害影响却比较严重。就我来说,我此前发现的一些高危漏洞大部份都属于IDOR漏洞范畴之内。今天我们就来谈谈如何发现更多的IDOR漏洞。

IDOR漏洞介绍

IDOR,Insecure Direct Object reference,即"不安全的直接对象引用",场景为基于用户提供的输入对象进行访问时,未进行权限验证。IDOR漏洞其实在越权(Broken Access Control)漏洞的范畴之内,也可以说是逻辑漏洞,或是访问控制漏洞,国内通常被称为越权漏洞。具体可点此参考

然而,IDOR漏洞并不像增减和切换数字ID号那样简单,随着应用程序的功能变得越来越复杂,它们引用资源的方式也形式多样,这也意味着简单的数字形式的IDOR漏洞在大多数网络应用中变得越来越少。IDOR在Web应用中会以不同的方式体现出来,除了通常的简单数字ID号之外,这里我们再来讨论几个值得注意的点。

去意想不到的地方寻找IDOR漏洞

别忘了编码或是哈希过的ID号

当我们面对的是一个编码ID时,总有可能用某种方法来把这个编码ID进行解码。如果Web应用使用的是哈希或随机的ID编码,此时我们就要看看这个ID是否是可猜测的。有时Web应用使用的是一些不充分信息熵的算法(algorithms that produce insufficient entropy),其实经过仔细分析后,我们是可以去预测ID号的。比如,我们可以注册几个账户去分析这种ID号的具体生成模式,然后就得总结得到其它用户ID号的生成方法。

另外,也可以通过其它的API接口中来窥探一些泄露的随机或编码ID,比如Web应用的一些公开页面,如用户资料信息页面、referer链接等。

比如,如果我找到一个API接口,它的功能是允许用户通过一个编码会话ID获取到属于自己的一些详细私信内容,其请求格式如下:

GET /api_v1/messages?conversation_id=SOME_RANDOM_ID

乍一看,其中的的会话ID(conversation_id)非常长,而且是随机的字母数字组合序列,但是之后我发现,可以使用用户ID号去获取属于每个用户对应的一个会话列表!如下所示:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

而在这个会话列表中就包含了属于用户的会话ID号(conversation_id),又因为用户ID(user_id)可以在每个用户的资料页面中公开找到,因此,组合利用这两个ID号,我就能通过接口/api_v1/messages去读取任意用户和私信会话内容了!

如果无法猜测,可以尝试创建

比如,如果对象引用号(object reference IDs)无法预测,可以看看能有什么操作来影响这种ID号的创建或链接过程。

给Web应用提供一个请求ID,哪怕它没作要求

如果Web应用在请求动作中没有ID号要求,那么可以尝试给它添加一个ID号看看会发生什么。比如添加一个随机ID号、用户ID、会话ID,或是其它的对象引用参数,观察服务端的响应内容。如下列请求接口用于显示当前用户所属的私信会话内容:

GET /api_v1/messages

那要是把它换成这种样式,会不会显示出其它用户的会话内容?

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

使用HTTP参数污染方法(HPP,HTTP parameter pollution)

用HTTP参数污染方式针对同一参数去给它多个不同的值,这样也是可以导致IDOR漏洞的。因为Web应用可能在设计时不会料想到用户会为某个参数提交多个不同值,因此,有时可能会导致Web后端接口的访问权限绕过。虽然这种情况非常少见,我也从来没遇到,但从理论上来说,它是有可能实现的。如以下请求接口:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID

如果对它发起请求失败,那么我们可以尝试发起另外如下的请求:

GET /api_v1/messages?user_id=YOUR_USER_ID&user_id=ANOTHER_USERS_ID

或是这种请求:

GET /api_v1/messages?user_id=ANOTHER_USERS_ID&user_id=YOUR_USER_ID

又或是换成这种把参数列表化的请求:

GET /api_v1/messages?user_ids[]=YOUR_USER_ID&user_ids[]=ANOTHER_USERS_ID

使用盲IDOR法(Blind IDORs)

有些场景下,易受IDOR漏洞影响的接口不会直接响应出来请求查询的信息,但它们可以导致Web应用在其它方面泄露信息,如导出文件、邮件或是文本提醒等。

改变请求方法

如果某个请求方法无效,那么可以试试其它方法,如GET, POST, PUT, DELETE, PATCH…等,一个通常的技巧就是用PUT和POST进行互换,原因在于服务端的访问控制措施不够完善。

改变请求文件的类型

有时,切换请求文件的类型可能会导致Web服务端在授权处理上发生不同,如在请求URL后加上一个.json,看看响应结果如何。

如何提高IDOR漏洞的危害性

严重性IDOR优先

这里,找IDOR漏洞时首先要考虑的是其对目标网站关键业务的影响程度,所以,读写型IDOR漏洞都属于高危型IDOR漏洞。

按照状态改变型state-changing (可写型) IDOR漏洞来看,其导致的密码可重置、密码可更改或账户恢复等操作都会对目标网站关键业务造成严重影响,而那种更改邮件订阅设置的IDOR漏洞影响就较低。

而对于状态不可改变型non-state-changing(可读型)IDOR漏洞来看,我们就要去关注它其中对敏感信息的处理操作,比如,对用户私信会话的处理、对用户敏感信息的处理,或是非公开内容的处理。考虑Web应用中哪些功能会处理这些数据,然后有目标的去查找类似IDOR漏洞。

存储型XSS(Stored-XSS)

如果把可写型IDOR和self-XSS(需要受害者交互的XSS)结合,那么就有可能形成针对某个特定用户的存储型XSS(Stored-XSS)。它的用武之处在哪呢?比如,如果你发现了一个可以更改另外一个用户购物车列表的IDOR漏洞,实际来说,该IDOR漏洞危害并不高,充其量只会引起受害者的一些麻烦,但如果把它和self-XSS配合利用的话,在某个用户提交点,就能通过IDOR把XSS利用代码传递给受害者浏览器端,最后的效果是,它就形成了针对特定受害用户且无需交互的存储型XSS了!

好吧,就聊这么多了,希望大家批评指正。

*参考来源:medium,clouds 编译整理,转载请注明来自 FreeBuf.COM

# 越权漏洞 # IDOR漏洞
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 clouds 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
挖洞经验
clouds LV.9
I'm a robot , don't talk to me , code to me.
  • 348 文章数
  • 612 关注者
挖洞经验 | 获取国际象棋对战网站Chess.com五千万用户信息
2021-02-24
挖洞经验 | 多种针对开启HTTP PUT方法的漏洞利用
2021-02-23
挖洞经验 | 以账户更新方式实现某大公司网站普通用户到管理员的提权
2021-02-22
文章目录