Advent of Cyber 2025:第5天 IDOR this IDOR that | TryHackMe
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 个子账户?
- 打开浏览器的开发者工具(
Inspect)。 - 前往 Storage → Local storage。
- 展开下拉框,找到以
http:/10.48…开头的条目。 - 检查存储的数据,找到拥有 10 个子账户的父账户并记录其
user_id。
使用 Burp Suite
初始步骤
- 在 AttackBox 中打开 Target 选项卡并点击 Open Browser。
- 若出现错误,点击右上角的 Settings 图标并重试。
- 浏览器打开后,粘贴 Target 框的 URL 并正常登录。
- 页面可能会因为 Burp 的拦截功能而“永远加载”。
- 在 Burp Suite 中,进入 Proxy → Intercept 并切换 Intercept is on。
拦截请求
- 在打开开发者工具的情况下刷新页面,以查看 HTTP 请求。
- 找到加载子数据的请求(例如,点击子卡片上的眼睛或编辑图标触发的请求)。
- 当 Burp 暂停该请求时,你可以修改参数(如更改
user_id),然后转发请求以查看响应。
查找子账户的出生日期
任务: 使用 base64 或 md5 子端点,找出出生于 2019‑04‑17 的子账户的 id_number。
- 在仪表盘上,点击某个子账户的 edit 图标。
- Burp 会暂停请求;如有需要,修改负载后再转发。
- 如果 UI 中未显示出生日期,使用浏览器开发者工具检查响应体——日期会出现在那里。
使用 Intruder 自动化
- 在 Burp 中,暂停子账户视图请求后,选中相关部分并选择 Send to Intruder。
- 在 Intruder 选项卡中,创建一个负载列表(例如数字
1‑20)。 - 添加 Payload Processing 任务:Base64 Encode。
- 启动攻击。
- 在结果中搜索
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 时间攻击的原理。
欢迎在下方留言分享你的观察或其他实现思路。