文章总结: 本文展示了结合IDOR漏洞与OSINT的攻击手法。目标网站存在认证缺失问题,仅需确认号和事件ID即可窃取用户PII。鉴于暴力破解不可行,作者通过搜索社交媒体上的活动徽章照片,扫描二维码获取确认号,并推断事件ID,成功获取受害者敏感信息。该案例揭示了技术漏洞配合人类行为疏忽带来的严重数据泄露风险,建议加强身份验证并提升隐私意识。 综合评分: 88 文章分类: 渗透测试,社会工程学,漏洞分析,数据泄露,WEB安全
0124.距离被曝光仅一步之遥:利用人类行为
原创
Abdallah Ahmed Abdallah Ahmed
Rsec
2026年1月29日 10:06 贵州
本文章仅用网络安全研究学习,请勿使用相关技术进行违法犯罪活动。
声明:本文搬运自互联网,如你是原作者,请联系我们!
类型:奇妙的IDOR
大家好,希望大家一切都好。
今天我要谈谈我在 BBP 中发现的一个漏洞,该漏洞允许远程攻击者获取受害者的以下数据:
- 姓名
- 电子邮件
- 手机号码
- 公司
- 位置
- T 恤尺码
- 以及许多其他与受害者相关的数据。
#
介绍
我在寻找目标的过程中,偶然发现了 sub.target.com 这个网站。
该网络应用程序负责管理与公司相关的事件。
乍一看,这个应用程序似乎静态且乏味,可供测试的功能非常有限。我几乎准备转向下一个目标,但还是决定做最后检查。我开始修改 HTTP 请求头,立刻发现了一个问题。服务器的 CORS 配置错误。
深入探究 CORS 配置错误
服务器的响应具有以下规格:
- Content-Type: Text/HTML -> (无需预检请求)
- Access-Control-Allow-Origin: https://d3do.com
- Access-Control-Allow-Credentials: true
所以下一步就是确定身份验证方法。
注册后,应用程序生成了一个具有以下属性的字符串:
- 11个字符
- 仅包含首字母大写字母和数字(例如: AAAAAAAAA11 )
它与我的帐户关联;称为确认号码(我们稍后会用到它)。
我试图找出确切的身份验证方法,因为身份验证后的请求包含以下内容:
- Cookie(包含多个会话 Cookie)
- x-app-auth:Bearer
因此,我在登录时注意到了这个请求。
POST /some/path HTTP/1.1Host: sub.target.comCookie: <Cookies>x-app-auth: Bearer <token>content-type: application/jsoncreated-by: app-event-id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXapp-user-type: standardhttplogpageloadid: <uuid>httplogrequestid: <uuid>localized-validations: trueReferer: <referer>
{"eventId":"<UUID-of-the-Event>","emailAddress":"[email protected]","confirmationNumber":"<My-Confirmation-Number>","inviteeId":"<User-UUID>"}
此次请求的响应包含了我在注册过程中输入的所有数据,其中包括以下个人身份信息 (PII)。
HTTP/1.1 200 OKContent-Type: application/jsonContent-Length: 6553--SNIP--
{ "validationMessages": [], "regCart": {--SNIP-- "groupRegistration": false, "volumeDiscountsInCartStatusType": "NO_VOLUME_DISCOUNT_IN_CART", "eventRegistrations": [{ "eventRegistrationId": "13c616de-8197-4fa7-8702-9494b72d51ff", "attendee": { "personalInformation": { "contactIdEncoded": "rXX_2SgEQ1G5sTThx2AxXQ", "parentContactId": "00000000-0000-0000-0000-000000000000", "contactId": "ad75ffd9-2804-4351-b9b1-34e1c760315d", "firstName": "duke", "lastName": "dedo", "emailAddress": "[email protected]", "sourceId": "14c04565071f4622aa7db50ea024eacf", "company": "Hacker One", "title": "Bug Hunter", "primaryAddressType": "WORK", "mobilePhone": "+XXXXXXXXXXXX", "showOnMemberDirectoryFlag": false, "customFields": [{ "questionId": "b169c7ab-84a5-4250-8656-18405731dd51", "answers": [{ "answerType": "Choice", "choice": "Egypt" }] }, { "questionId": "5b8cc360-6157-4f33-be53-63ef5632e5fb", "answers": [{ "answerType": "Choice", "choice": "XL" }] }--SNIP--}
我认为这是一个找出身份验证方法的绝佳机会。
为了了解身份验证是如何进行的,我逐个删除了标头和 Cookie, 并等待应用程序返回 401 未授权。
请求突然变成了
POST /some/path HTTP/1.1Host: sub.target.comEvent-Id: <event-uid>Content-Length: number
{"eventId":"<event-uid>","emailAddress":"[email protected]","confirmationNumber":"<My-Confirmation-Number>","inviteeId":"<User-UUID>"}
我仍然没有收到预期的 401 未授权错误。
然后我开始移除参数以更深入地了解这个端点,请求变成了
我仍然可以访问这些数据。
我记下了这项请求,并决定在解决 CORS 问题后再处理它。
由于无法仅凭之前的请求来确定身份验证信息,所以我查看了页面源代码,最终确定是这个 cookie 负责身份验证。
由于应用程序没有指定 cookie 的 SameSite 属性,现代 Web 浏览器的默认行为是将其视为 Lax ,并且 cookie 不会通过跨域使用 javascript 发送。
回到有趣的终点
请求包含以下参数:
- 正文和标题中的 event-uid
- 确认号码
因此,我理所当然地认为,唯一用于区分我的数据的参数是确认号(我们可以将其视为 uuid)。
暴力破解确认号码
和所有人一样,我首先想到的就是暴力破解确认号码,因为它看起来并不长。
我编写了一个脚本来生成符合确认号码条件的列表,并尝试暴力破解确认号码。
几次请求后,我注意到存在速率限制,并且在第 5 次请求时触发了该限制。
HTTP/2 422 Unprocessable Entity...// Other headers...
{ "validationMessages": [ { "severity": "Error", "unLocalizedInternalMessage": "Number of failed attempts exceeded the throttle threshold limit", "localizationKey": "REGAPI.THROTTLE_EXCEEDED", "parametersMap": {}, "subValidationMessageList": [] } ]}
我通过使用 X-Forwarded-For标头成功绕过了它。
此端点存在速率限制绕过和身份验证缺失的问题,因此我将其报告。
#
后退一步
我知道我没能找到任何受害者,而攻击者需要暴力破解
AZ=26+0–9=10->36¹¹
每次发生这样的事,我都会想到,最好的情况也是我的报告会被标记为信息/P4 并关闭;所以我退后了一步。
得知该应用会管理活动后,我很好奇参加过该公司相关活动的人会获得怎样的徽章;于是我就直接在谷歌上搜索了一下。
<company name> event badge
然后我一直往下翻,直到在活动中找到一张有趣的自拍照。
我在自拍中看到了徽章上显示的二维码。
出于好奇,我决定扫描一下,于是我下载了图片,裁剪出二维码,然后扫描了它,令人惊讶的是,二维码的值竟然是确认号码。
单凭确认号码无法获取受害者的个人身份信息 (PII),我需要与此确认号码关联的事件用户 ID (event-uid)。
为了获取准确的事件日期,我从帖子日期中获取了事件日期,如下所示。
然后我用谷歌搜索了
<company-name> event (date of post -1) # if you have attended an event, there's a high chance your posts will be the next daythe search term was > target event may 1
我找到了本次活动的报名页面。
活动已结束,无法注册,但启动购票流程足以让我获取所需的活动 uid。
通过返回到易受攻击的端点并使用
我已成功获取该受害者的个人身份信息!
#
更多受害者
为了找到获取 UUID 的可靠方法,我开始进行开源情报搜集,寻找参加过与该公司相关活动的人员,并通过以下方式成功获取了更多受害者:
- 使用话题标签
第一个受害者的帖子包含一个标签 #very_cool_event ,所以我在 X(推特)的搜索栏中使用它,然后继续滚动查找发布包含他们的徽章和泄露其二维码的照片的人。
- 谷歌搜索
如果只在知名平台的搜索栏里使用话题标签,我会错过很多我不知道的平台(你不知道你不知道的东西);所以为了拓宽我的潜在平台范围,我用了这个笨蛋工具。
intext:#very_cool_event
这让我有机会了解新的平台,甚至想起了一些我当时忘记的知名平台。
- 在谷歌中使用图片进行搜索
当我尝试使用话题标签方法寻找更多受害者时,我发现很多用户只是拍下他们的徽章照片并发布到社交媒体上(没有自拍);所以我拍了一张这样的照片,并用它在谷歌上搜索。
这种方法让我更容易接触到更多受害者。
然后我提交了另一份报告,这份报告被认定为严重问题。
#
总结
综合以上步骤,重现问题的步骤如下:
- 前往社交媒体平台
- 使用与活动相关的标签进行搜索(#示例)
- 向下滚动直到找到带有可扫描二维码的已公开徽章。
- 扫描二维码获取确认号码
- 使用帖子发布日期获取事件 UID
- 使用确认号码和事件 UID 获取此受害者的个人身份信息 (PII)
我还收到了 h1_analyst_sky 的点赞。
仅此而已。
如果您有任何问题或反馈,请随时私信我。
LinkedIn 或 Twitter 。
下次再见!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Rsec Abdallah Ahmed Abdallah Ahmed《0124.距离被曝光仅一步之遥:利用人类行为》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论