【文章转载】黑客攻击 API 时攻击可预测的 GUID

admin 2024年12月3日13:42:39评论22 views字数 6664阅读22分12秒阅读模式

点击蓝字 关注我们

如果您花费大量的时间去破解 API,您会注意到许多的端点使用全局唯一标识符 (GUID) 来命名系统中的数据。虽然 GUID 是确保数据唯一性的好方法,但它们也可以是可预测的。

在本文中,我将向您展示如何利用可预测的 GUID 来攻击这个 API。我使用这种方法访问到了未授权且受保护的数据,并曾经使用它完成过帐户的接管。

因此,让我们深入了解妖魔化开发人员的黑暗艺术......并展示错误生成GUID会怎样导致一些有趣攻击对于这个API。

一个黑客的GUID入门

【文章转载】黑客攻击 API 时攻击可预测的 GUID

我们明白了......

所以在我们开始之前,我需要澄清一些事情......

GUID 与 UUID

如果执行此操作的时间足够长,则会看到在 API 中引用 ID 时使用的术语 GUID 和 UUID。有人说它们代表不同的东西。还有人说,这同样是血腥的。

那么谁是对的呢?

GUID 名称是 Microsoft 定义的行业标准,用于提供在任何上下文中唯一的参考编号。UUID 是一个术语,代表通用唯一标识符。同样,GUID 代表全局唯一标识符。

所以基本上,同一件事有两个术语。在 API 世界中,它们可以互换使用。在Microsoft的世界里呆了几十年,我称它们为GUID。

你可以随心所欲地称呼它们。

那么什么是 GUID?

GUID 是以等于 128 位的数字序列构造的。ID 以十六进制字符表示,这意味着它使用数字 0 到 9 和字母 A 到 F。十六进制数字分为 32 个十六进制字符,带有四个连字符:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX .

GUID 应该是唯一的和随机的。如果使用得当,它们可以。然而,开发人员经常犯一个错误,它打破了这一点,并使它们变得可预测......导致我们可以在进攻中利用的各种问题。

如何预测 GUID

根据 RFC 4122,GUID 具有特定的结构,我们可能会滥用该结构来泄露有关目标的特定信息。这又回到了向后兼容性和版本控制的世界。

你看,当原始规范发布时,UUID 的第一个版本是基于时间的,并使用系统的工件来生成唯一的值。这些工件包括:

  • 当前时间
  • 启动时随机生成的“时钟序列”,但在 GUID 之间保持不变
  • “节点 ID”,根据系统的 MAC 地址生成

它看起来像这样:

【文章转载】黑客攻击 API 时攻击可预测的 GUID

您可以在https://datatracker.ietf.org/doc/html/rfc4122#section-4.2.2阅读完整的GUID V1的详细信息。

所以事情是这样的。版本信息存储在 GUID 的第 13 个字符中。这是第二个连字符/破折号后面的字符。因此,如果第 13 个字符是一个1,则您知道 该API 可能容易受到可预测 GUID 的攻击。

实际上,可以解码现有的 v1 GUID 并提取生成系统将自行生成的 GUID 列表所需的大多数必要工件。换句话说,我们可以利用这种可预测性来计算目标系统在任何给定时间将产生什么,从而为我们提供了利用它来竞标的机会。

想象一下,网上银行转账需要审批流程。请求资金转账时,系统会生成包含新 GUID 的唯一链接,并将其发送给审批者。只需单击一下,即可获得批准。

如果我们可以在侦察过程中捕获单个 GUID,并且可以确定 API 服务器的时间,那么我们就拥有了伪造自己的审批链接以破坏业务逻辑所需的一切,并允许我们批准自己的恶意传输。

认为这种情况不可行吗?那么现代无密码 Web 应用程序登录系统呢?还是密码重置功能,遵循使用唯一 URL 链接的安全编码建议?您可以通过这种方式攻击许多现实世界的场景。只需查找使用 v1 GUID 表示唯一事务的位置。

好了,现在你已经了解了如何攻击可预测的 GUID。让我们针对实际的 API 目标进行练习,看看它的实际效果。

攻击你的第一个可预测 GUID在这个API中

【文章转载】黑客攻击 API 时攻击可预测的 GUID

真可爱。。。想抚摸吗??

我们当然不是邪恶的。因此,当我说我们要攻击一个真正的 API 时,我有点自由。但请坚持在这里。在 Internet 上发布的 API 上练习此操作将帮助您了解这一切是如何协同工作的。

所以要友善。

有问题的 API 是 https://uuid.openkm.com/api/version1 的 UUID 生成器。对该端点的GET请求将始终返回 v1 GUID。

为了帮助你应对这种可预测性攻击,我在 GitHub 上发布了一个名为 guid_reaper.py 的gist。GUID Reaper 是一个基于我编写的 guidtool 的 python 脚本,可让您快速转储 v1 GUID 并生成自己的一组可预测的 GUID 以用于目标。

我们将使用 GUID Reaper 来解码从 API 返回的唯一标识符,然后使用它来查看我们是否可以预测 API 将生成的下一个 GUID 之一。

和我在一起?那好吧......我们走吧!

步骤 1:从 API 捕获第一个 GUID

我们不需要在这里花哨。让我们简单地使用 curl 并带回:

$ curl https://uuid.openkm.com/api/version1
【文章转载】黑客攻击 API 时攻击可预测的 GUID
使用 curl 调用 API

步骤 2:使用 GUID Reaper 解码 GUID

现在,我们有了第一个 GUID,请通过 GUID Reaper 运行它,以解码我们需要的所有位:

$ ./guid_reaper -d 907886f0-50a4-11ed-8caf-00163e9b33ca
【文章转载】黑客攻击 API 时攻击可预测的 GUID
使用 GUID Reaper 解码 GUID

我们肯定有一个 v1 GUID,现在有来自目标的节点 ID、MAC 地址和时钟序列。

第 3 步:计算攻击者和受害者系统之间的时间漂移

因此,我们几乎拥有了能够构建自己的可预测 GUID 所需的一切。但是,我们仍然需要弄清楚一个小神器。这就是 API 服务器认为现在是什么时间,它与我们自己的系统相比如何?

大多数 API 端点都在包含 Date 标头的 Web 服务器上运行。因此,如果我们也传递 -i 参数来转储响应标头,我们通常可以在 curl 期间获取服务器的时间戳。我实际上通过了 -is,因为我喜欢在静音/安静模式下运行 curl。

它最终看起来像这样:

$ curl -is https://uuid.openkm.com/api/version1
【文章转载】黑客攻击 API 时攻击可预测的 GUID
调用 API 并获取响应标头

如果我们要解码新的 GUID,我们应该看到时间戳与 GUID 所包含的内容映射:

$ ./guid_reaper.py -d d5b0f250-50a6-11ed-8caf-00163e9b33ca
【文章转载】黑客攻击 API 时攻击可预测的 GUID
使用 GUID Reaper 解码以比较日期

如您所见,日期匹配。但这与我自己的系统相比如何?

我们可以简单地在请求完成时转储本地时间戳并进行比较。为了完成此操作,我还将插入一个 printf 调用,在 curl 命令后添加一个换行符,以确保我的日期显示在自己的行上。我还将在 date 中使用 -u 选项,以便它返回一个 UTC 日期,以便它们更容易比较。

它看起来像这样:

$ curl -is https://uuid.openkm.com/api/version1; printf 'n'; date -u
【文章转载】黑客攻击 API 时攻击可预测的 GUID
curl和date更有趣

正如你所看到的,API 服务器的时间和我自己的时间之间大约有 5 秒的偏差。每当我们在系统上生成用于 API 服务器的 GUID 时,我们都需要考虑到这一点。

知道时间偏差在下一步中很重要。

步骤 4:使用 GUID Reaper 生成我们自己的 GUID

若要生成自己的 GUID 以用于 API,我们只需向 GUID Reaper 传递要预测其 GUID 的操作的日期,以及以前从目标捕获的 GUID。您可以使用 -t 参数来执行此操作。

GUID Reaper 已经有一个 2 秒的滑动窗口,这意味着在生成一组 GUID 时,它将在我们指定的时间之前 2 秒和之后 2 秒生成 ID。但是,由于我知道系统之间存在 5 秒的漂移,因此我想对此进行解释。

下面是它可能看起来像一个示例:

./guid_reaper.py -t '2022-10-20 21:04:03' d5b0f250-50a6-11ed-8caf-00163e9b33ca > guidlist.txt

GUID Reaper 获取传入的捕获的 GUID,并计算 id 生成的精度。许多系统都具有毫秒的亲和力,这意味着如果您查看转储 GUID 的时间戳,它的末尾有 4 个零。这很有帮助,因为它减少了我们需要生成的必要候选 ID。对于此 API,这意味着使用 2 秒的滑动窗口来考虑漂移,将有 4,000 个可能的 GUID 可供尝试。当然,所需的精度越高,候选名单就越大。

步骤 5:使用候选列表暴力破解 API 端点

因此,针对此 API 执行此步骤有点困难。通常,可以使用生成的文本文件作为 Burp Intruder 的输入,并触发依赖于 GUID 的请求。例如,如果这是对密码重置链接的攻击,我们可以触发 GET 请求并相应地构造 URL 和查询参数。

由于我们无法真正做到这一点,我想做的只是在我查询 API 之前简单地演示如何生成列表,然后 grep 查找我生成的列表中返回的 GUID 以证明它有效。

该命令如下所示:

$ ./guid_reaper.py -t '2022-10-20 21:04:03' d5b0f250-50a6-11ed-8caf-00163e9b33ca > guidlist.txt ; head -n 1 guidlist.txt; tail -n 1 guidlist.txt; printf 'n'; curl -is https://uuid.openkm.com/api/version1
【文章转载】黑客攻击 API 时攻击可预测的 GUID
GUID Reaper

注意到 3 个 GUID 了吗?前两个表示 GUID Reaper 生成的第一个和最后一个 GUID。最后一个 GUID 是 API 返回的 GUID。当我们浏览guidlist.txt文件时......是的。。。它就在那里。

得分!

现在,为了处理时间偏差,我使用了一个新概念。我知道 GUID Reaper 有一个 2 秒的偏差,并且我的系统与 API 服务器相差 5 秒。所以我在下午 2:04 在我的系统上运行了它,但将时间参数设置为下午 2:04:03(格林威治标准时间 21:04:03)。这确保了本地生成的候选和在 Web 服务器上生成的候选者处于同一时间范围内。

提示:如果您不想在脑海中对时间偏差进行这种数学运算,只需同步您的本地时钟以匹配攻击前服务器的时钟即可。

结论

【文章转载】黑客攻击 API 时攻击可预测的 GUID

所以你有它。如果发现在终结点中使用 v1 GUID 的目标 API,并且该终结点依赖于该 GUID 作为其业务逻辑的一部分,则有机会对其进行预测并对其进行 pwn。

你可以用它来发挥真正的创意。我会把它留给你的脑海去思考和看到所有的可能性。

喜欢您正在阅读的内容并想继续改进您的 API 黑客技术?查看我的 API 黑客资源终极指南中的一些内容。

这个文章"黑客攻击可预测的 GUID" 首先出现在Dana Epp的博客上发出。

这是来自 Dana Epp 博客的安全博客网络联合博客,由 Dana Epp 撰写。阅读原文:https://danaepp.com/attacking-predictable-guids-when-hacking-apis

文章来源

https://securityboulevard.com/2022/11/attacking-predictable-guids-when-hacking-apis/

以下是solar安全团队近期处理过的常见勒索病毒后缀:
出现时间 病毒名称 相关文章
2020/01 .mkb
【病毒分析】揭秘.mkp后缀勒索病毒!Makop家族变种如何进行可视化加密?
2024/05 .moneyistime
【病毒分析】使用中文勒索信及沟通:MoneyIsTime 勒索家族的本地化语言转变及其样本分析
2024/09/29 .lol
【病毒分析】全网首发!全面剖析.LOL勒索病毒,无需缴纳赎金,破解方案敬请期待下篇!
【工具分享】.LOL勒索病毒再也不怕!完整破解教程分享+免费恢复工具首发
2024/06/21 .MBRlock
【病毒分析】假冒游戏陷阱:揭秘MBRlock勒索病毒及其修复方法
2024/06/01 .steloj
【病毒分析】Steloj勒索病毒分析
2024/05/27 .TargetOwner
【病毒分析】技术全面升级,勒索赎金翻倍,新版本TargetOwner勒索家族强势来袭?
2024/05/17 .Lockbit 3.0
【病毒分析】Lockbit家族Lockbit 3.0加密器分析【成功案例】RDP暴露引发的蝴蝶效应:LockBit组织利用MSF工具及永恒之蓝漏洞进行勒索入侵                             【成功案例】lockbit家族百万赎金不必付!技术手段修复被加密的数据库,附溯源分析报告                               【病毒分析】繁体勒索信暗藏玄机!要价50万RMB赎金的Lockbit泄露版分析
2024/05/13 .wormhole
【病毒分析】Wormhole勒索病毒分析
2024/04/09 .bianlian
【病毒分析】新兴TOP2勒索软件!存在中国受害者的BianLian勒索软件解密原理剖析
2024/03/20 .locked
【病毒分析】locked勒索病毒分析
2024/03/11 .Live1.5
【病毒分析】独家揭秘LIVE勒索病毒家族之1.5(全版本可解密)
2024/03/08 .Live2.0
【病毒分析】独家揭秘LIVE勒索病毒家族之2.0(全版本可解密)
2024/03/06 .Elbie
【病毒分析】phobos家族Elbie变种加密器分析报告
2024/03/01 .lvt
【病毒分析】交了赎金也无法恢复--针对国内某知名NAS的LVT勒索病毒最新分析
2024/02/26 .2700
【病毒分析】phobos家族2700变种加密器分析报告 【成功案例】某集团公司的Phobos最新变种勒索病毒2700解密恢复项目
2024/01/18 ._locked
中国人不骗中国人?_locked勒索病毒分析
2024/01/15 .faust
【病毒分析】phobos家族faust变种加密器分析
2024/01/15 .DevicData
【病毒分析】DevicData勒索病毒分析
2024/01/02 .jopanaxye
【成功案例】某集团公司的Phobos最新变种勒索病毒jopanaxye解密恢复项目
2023/12/01 .live1.0
【病毒分析】独家揭秘LIVE勒索病毒家族之1.0(全版本可解密)
2023/09/05 .CryptoBytes
【独家破解】揭秘境外黑客组织的20美元锁机病毒:深度逆向分析+破解攻略!赎金?给你付个🥚
2023/08/28 .mallox
【病毒分析】mallox家族malloxx变种加密器分析报告
2023/08/02 .rmallox
【病毒分析】mallox家族rmallox变种加密器分析报告
【成功案例】间隔数月双团伙先后利用某ERP0day实施入侵和勒索的解密恢复项目
2023/01/10 .DevicData-Pa2a9e9c
【病毒分析】DevicData家族扩散:全球企业和机构成为勒索病毒头号攻击目标!
2023年初 .halo
【病毒分析】全网首发!以国内某安全厂商名字为后缀的勒索病毒分析
2021/05/01 .mallox
【病毒分析】Mallox家族再进化:首次瞄准Linux,勒索新版本全面揭秘!
2021年1月初 .babyk
【病毒分析】BabyK加密器分析-Windows篇 
【病毒分析】Babyk加密器分析-NAS篇 
【病毒分析】 Babyk加密器分析-EXSI篇 
【病毒分析】Babuk家族babyk勒索病毒分析 
【成功案例】利用多款国产内网渗透工具勒索数十台虚拟机的babyk解密恢复项目
2020/05/18 .consultraskey-F-XXXX
【成功案例】解决浙江xx电子有限公司的勒索病毒
2019/05/01 .src
【病毒分析】Phobos家族新变种 .SRC深度分析:揭示持续演变的勒索新威胁
勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。
而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。
如果您想了解有关勒索病毒的最新发展情况,或者需要获取相关帮助,请关注“solar专业应急响应团队”。

原文始发于微信公众号(solar应急响应团队):【文章转载】黑客攻击 API 时攻击可预测的 GUID

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月3日13:42:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【文章转载】黑客攻击 API 时攻击可预测的 GUIDhttps://cn-sec.com/archives/3450188.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息