# 深夜挖洞小记:一个“不合群”的请求如何撕开高严重性 IDOR 那是一个挖洞之夜,所有尝试都像石沉大海。我连续点了好几个小时,把各种请求塞进 Burp Suite,来回往 Repeater 里丢,结果全是空手而归。目标看起来干净得很,没有明显的攻击面,没有奇奇怪怪的功能,没有任何东西能让我觉得“就是这儿了”。说实话,我当时已经准备关掉 Burp 收工了。 然后我开始筛选带参数的请求。 有个接口引起了我的注意: ```http POST /api/v1/shopifyOrder/history乍一看没什么特别的。就是另一个 API 请求而已。但再仔细一瞧,总觉得哪里不对劲。这个请求接收一个customerId,但整个请求里居然没有任何Authorization头。没有 Bearer token,没有 session 校验,就一个客户标识符躺在请求体里,仿佛应用程序完全信任发送请求的那个人。
这感觉……未授权。
请求体长这样:
{"customerId":"gid://shopify/Customer/9189799788709"}凌晨两点的我:
“要是把这个 ID 改了会怎样?”
于是我注册了第二个账号,拿到它的客户标识符。然后替换掉原来的值,重新发送请求。
砰。
响应的数据里,直接返回了另一个用户的信息。
- 邮箱地址
- 姓名
- 订单记录
那一刻我以为自己搞错了什么。总会有那么一瞬间,你会觉得这个漏洞太明显了,明显到不像是真的。于是我又测了一次。结果一样。再测一次。还是同样的结果。
现在有意思的不只是 IDOR 本身。在进一步测试的过程中,我注意到这些标识符遵循的是可预测的递增模式,而不是随机的 UUID。我脑子里紧接着冒出下一个想法:
“能不能批量爬?”
于是我启动了 Burp Intruder。
- 一百次请求
- 两百次
- 三百次
- 四百多次请求
依然没有被封禁。
依然没有限流。
依然没有任何速率限制。
这个接口就像什么都没发生一样,一直在不停地返回数据。到这一步,问题已经从“有人能访问另一个客户的数据”升级成了“有人能以自动化方式大规模拉取数据”。
好像觉得还不够似的,错误处理也跑来添乱。触发畸形请求时,返回的堆栈信息里直接暴露了内部的服务器文件路径。单看这一点算不上什么严重问题,但绝对是那种让攻击者嘴角上扬的“附赠惊喜”。
最终的报告里包含:未授权接口、IDOR 概念验证、客户数据泄露、缺少限流机制,以及堆栈信息路径泄露。最终该漏洞被评定为CVSS 7.5(高风险)。
有意思的是,整个过程并没有什么花哨的利用手法。没有绕过链条,没有竞争条件,没有冷门框架漏洞。整个发现,仅仅是因为我在机械地翻 Burp 请求时,有一个请求看起来稍微有点“不合群”。
这大概是我最喜欢漏洞挖掘的一点:有时候,发现漏洞和空手而归之间的区别,真的就只是在合上电脑之前,多花了一分钟的好奇心。
原文链接:https://medium.com/@kanishkdadhich123/how-i-discovered-a-high-severity-idor-on-an-e-commerce-platform-f13a316aa71c