Advent of Cyber 2025:第5天 IDOR this IDOR that | TryHackMe

发布: (2025年12月14日 GMT+8 02:47)
5 min read
原文: Dev.to

Source: Dev.to

Setup

  • 如果你的机器上运行着 OpenVPN Connect,只启动 Target 框。
  • 否则,同时启动两个框。
  • 在浏览器中打开挑战链接,并使用 Task 2 中提供的凭据登录。

什么是 IDOR?

**不安全直接对象引用(Insecure Direct Object Reference,IDOR)**是一种授权漏洞。
当系统存在 IDOR 漏洞时,攻击者可以通过修改 HTTP 请求参数来访问本不该访问的资源。

  • 水平特权提升 – 访问其他用户的账户。
  • 垂直特权提升 – 执行仅限更高权限用户(例如管理员)才能进行的操作。

IDOR 属于水平特权提升的一种形式。

请参考 TryHackMe(THM)文档了解更多关于 IDOR 的内容。
注意:“导航到 Storage 选项卡并展开 Local Storage 下拉框”的实际操作是 Inspect → Storage → Local storage,在浏览器开发者工具中完成。

相关问题

利用 view_accounts 参数中发现的 IDOR,哪个父账户的 user_id 拥有 10 个子账户?

  1. 打开浏览器的开发者工具(Inspect)。
  2. 前往 Storage → Local storage
  3. 展开下拉框,找到以 http:/10.48… 开头的条目。
  4. 检查存储的数据,找到拥有 10 个子账户的父账户并记录其 user_id

使用 Burp Suite

初始步骤

  1. 在 AttackBox 中打开 Target 选项卡并点击 Open Browser
  2. 若出现错误,点击右上角的 Settings 图标并重试。
  3. 浏览器打开后,粘贴 Target 框的 URL 并正常登录。
  4. 页面可能会因为 Burp 的拦截功能而“永远加载”。
  5. 在 Burp Suite 中,进入 Proxy → Intercept 并切换 Intercept is on

拦截请求

  • 在打开开发者工具的情况下刷新页面,以查看 HTTP 请求。
  • 找到加载子数据的请求(例如,点击子卡片上的眼睛或编辑图标触发的请求)。
  • 当 Burp 暂停该请求时,你可以修改参数(如更改 user_id),然后转发请求以查看响应。

查找子账户的出生日期

任务: 使用 base64md5 子端点,找出出生于 2019‑04‑17 的子账户的 id_number

  1. 在仪表盘上,点击某个子账户的 edit 图标。
  2. Burp 会暂停请求;如有需要,修改负载后再转发。
  3. 如果 UI 中未显示出生日期,使用浏览器开发者工具检查响应体——日期会出现在那里。

使用 Intruder 自动化

  1. 在 Burp 中,暂停子账户视图请求后,选中相关部分并选择 Send to Intruder
  2. Intruder 选项卡中,创建一个负载列表(例如数字 120)。
  3. 添加 Payload Processing 任务:Base64 Encode
  4. 启动攻击。
  5. 在结果中搜索 2019‑04‑17 日期。我的测试中,child_id:1x 返回了正确的出生日期。

Bonus Question 1

使用 /parents/vouchers/claim 端点,找出在 2025 年 11 月 20 日有效的优惠券。

  • 这些优惠券使用 UUID version 1,其中包含时间戳信息。
  • 通过为 2025 年 11 月 20 日 20:00 – 24:00 UTC 之间的每一分钟生成 UUID v1,可以暴力破解出正确的优惠券。

生成 UUID v1 值

你可以让 AI(例如 Claude)生成使用 uuid npm 包的 JavaScript 代码,以在指定时间范围内为每一分钟生成 UUID v1。示例提示:

Generate JavaScript code using the `uuid` npm package to create UUID v1 values for every minute between 20:00 and 24:00 UTC on 20 November 2025.

在本地运行脚本,将生成的 UUID 逐个发送到 claim voucher 请求(通过 Burp),并寻找返回 200 且声明成功的响应。

正确的优惠券(THM 答案): 22643e00-c655-11f0-ac99-026ccdf7d769

Bonus Question 2

使用 /parents/vouchers/claim 端点,找出在 2025 年 11 月 20 日有效的优惠券。(重新表述)

  • 生成 UUID 列表后,将每个 UUID 作为 voucher 参数发送到声明请求。
  • 在 Burp 结果中筛选 status 200 且包含成功声明信息的条目。

TryHackMe 返回的有效优惠券为:

22643e00-c655-11f0-ac99-026ccdf7d769

正确的优惠券和你生成的优惠券会共享相同的时间戳前缀,验证了 UUID‑v1 时间攻击的原理。


欢迎在下方留言分享你的观察或其他实现思路。

Back to Blog

相关文章

阅读更多 »