SecureBank(每周一题)
题目是一个简单的转账系统,只有两个路由,一个是转账,一个是确认转账,在转账后会用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 | Confirmation mail sent to user1 with id be06b550-5a69-11ed-8025-ad77b9400a61 (已知) |
使用以下的工具来解析已知的guid从而得到一个模糊的时间
intruder-io/guidtool: A tool to inspect and attack version 1 GUIDs (github.com)
1 | PS C:\Users\14169\Desktop> guidtool -i be06b550-5a69-11ed-8025-ad77b9400a61 |
再爆破一堆临近时间的guid,从而确认我们的恶意交易
1 | PS C:\Users\14169\Desktop> guidtool -t '2022-11-02 04:49:32' be06b550-5a69-11ed-8025-ad77b9400a61 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 H4cking to the Gate .!
评论