UUID Insecurities
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
通用唯一标识符 (UUID) 是 用于唯一标识计算机系统中信息的 128 位数字。UUID 在需要唯一标识符而无需中央协调的应用程序中至关重要。它们通常用作数据库键,并可以引用各种元素,如文档和会话。
UUID 旨在唯一且 难以猜测。它们以特定格式结构化,分为五组,表示为 32 个十六进制数字。UUID 有不同的版本,每个版本服务于不同的目的:
UUID v1 是基于时间的,包含时间戳、时钟序列和节点 ID(MAC 地址),但可能会暴露系统信息。
UUID v2 类似于 v1,但包含针对本地域的修改(使用不广泛)。
UUID v3 和 v5 使用命名空间和名称的哈希值生成 UUID,v3 使用 MD5,v5 使用 SHA-1。
UUID v4 几乎完全随机生成,提供高水平的匿名性,但存在轻微的重复风险。
请注意,UUID 的版本和子版本通常出现在 UUID 内的相同位置。例如在: 12345678 - abcd - 1a56 - a539 - 103755193864 xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
M 的位置 表示 UUID 的 版本。在上面的示例中,它是 UUID v1。
N 的位置 表示 UUID 变体。
“三明治攻击”是一种特定类型的攻击,利用 UUID v1 在 Web 应用程序中生成的可预测性,特别是在密码重置等功能中。UUID v1 是基于时间、时钟序列和节点的 MAC 地址生成的,如果攻击者能够获取一些在时间上接近生成的 UUID,这可能使其在某种程度上可预测。
想象一个使用 UUID v1 生成密码重置链接的 Web 应用程序。攻击者可能如何利用这一点来获得未授权访问:
初始设置:
攻击者控制两个电子邮件帐户:`attacker1@acme.com` 和 `attacker2@acme.com`。
目标的电子邮件帐户是 `victim@acme.com`。
执行:
攻击者为第一个帐户(`attacker1@acme.com`)触发密码重置,并收到一个带有 UUID 的密码重置链接,比如 `99874128-7592-11e9-8201-bb2f15014a14`。
紧接着,攻击者为受害者的帐户(`victim@acme.com`)触发密码重置,然后迅速为第二个攻击者控制的帐户(`attacker2@acme.com`)触发。
攻击者收到第二个帐户的重置链接,UUID 为 `998796b4-7592-11e9-8201-bb2f15014a14`。
分析:
攻击者现在有两个在时间上接近生成的 UUID(`99874128` 和 `998796b4`)。考虑到基于时间的 UUID 的顺序特性,受害者帐户的 UUID 很可能落在这两个值之间。
暴力攻击:
攻击者使用工具生成这两个值之间的 UUID,并通过尝试访问密码重置链接(例如,`https://www.acme.com/reset/<generated-UUID>`)来测试每个生成的 UUID。
如果 Web 应用程序没有充分限制速率或阻止此类尝试,攻击者可以快速测试范围内的所有可能 UUID。
获得访问权限:
一旦发现受害者密码重置链接的正确 UUID,攻击者就可以重置受害者的密码并获得未授权访问其帐户的权限。
您可以使用工具自动执行三明治攻击:https://github.com/Lupin-Holmes/sandwich
您可以使用扩展 UUID 检测器 在 Burp Suite 中检测这些类型的 UUID。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)