挖洞经验 | 看我如何发现比特币赌博网站漏洞并收获$12000赏金
字数 1741 2025-08-18 11:37:24
比特币赌博网站漏洞挖掘技术分析
漏洞背景
本文分析的是比特币赌博网站bustabit的两个安全漏洞,这些漏洞的发现获得了总计$12,000的赏金。该网站的主要功能是让玩家自行决定投注金额和支付倍数,随着赔率和倍数上升,玩家需要在游戏强行终止前自行终止游戏才能胜出。
漏洞1:用户客户端的拒绝服务(DoS)漏洞(价值$2,000)
漏洞原理
-
HTML链接处理机制:
- 网站聊天功能会自动将粘贴的链接转换为超链接,使用
<a href=":1">:2</a>格式 - 正常情况下,输入
www.google.com会被转换为:https://www.bustabit.com/external?url=https://www.google.com
- 网站聊天功能会自动将粘贴的链接转换为超链接,使用
-
特殊构造的链接:
- 当输入
www.bustabit.com/a时,由于是同源链接,不会添加external?url=前缀 - 可以构造特殊格式:
<a href="/a"> www.bustabit.com/a </a>
- 当输入
-
双斜线跳转攻击:
- 构造格式:
<a href="//attacker.com/hacked"> www.bustabit.com//attacker.com/hacked </a> - 这种构造可以绕过HTML解析机制的Link Filter
- 构造格式:
-
关键DoS触发点:
- 发送包含特殊字符的链接:
https://www.bustabit.com/%0t - JavaScript无法解析
%0t,导致整个客户端崩溃 - 崩溃状态会持续,即使刷新页面也无法恢复
- 发送包含特殊字符的链接:
攻击影响
- 攻击者可向任何下注用户发送此类消息,导致受害者客户端崩溃
- 可向主聊天窗口发送恶意链接,导致所有用户无法交互
- 游戏长时间不可玩,造成业务中断
PoC验证
参考视频:https://www.youtube.com/watch?v=jxBVZtB2z4Q
漏洞2:XSS和点击劫持(价值$10,000)
XSS漏洞原理
-
JavaScript URI处理:
- 输入
Javascript:alert(1)会跳转到:https://www.bustabit.com/external?url=Javascript:alert(1) - 这种处理方式直接导致了XSS漏洞
- 输入
-
iframe标记插入:
- 网站支持
<iframe>标记插入 - 可以构造点击劫持攻击页面
- 网站支持
点击劫持攻击
- 构造格式:
<iframe>标记配合"Click here to continue"字段 - 配合用户登录页面进行深度利用
攻击影响
-
会话窃取:
- Web接口会话存储在用户本地浏览器中
- 攻击者可迷惑用户登录请求恶意外部链接
- 间接窃取用户cookie和session信息
- 利用窃取的cookie可登录用户账户
-
账户接管:
- 获取完整会话控制权
- 可进行资金操作等敏感行为
漏洞挖掘方法论
-
深入研究特定功能:
- 不依赖自动化工具进行广谱扫描
- 选择特定功能进行深度分析(如本文中的聊天功能)
-
输入验证测试:
- 测试各种特殊字符和编码的输入
- 关注边界情况和异常处理
-
URI处理机制分析:
- 研究网站如何处理外部和内部链接
- 测试各种URI格式(包括javascript:协议)
-
DOM操作安全:
- 分析前端JavaScript如何处理用户生成内容
- 检查是否存在不安全的DOM操作
防御建议
-
输入过滤:
- 实施严格的输入验证和过滤
- 对特殊字符和编码进行规范化处理
-
安全链接处理:
- 实现安全的链接转换机制
- 避免直接使用用户提供的URI
-
内容安全策略(CSP):
- 实施严格的CSP策略
- 限制内联脚本和eval等危险功能
-
XSS防护:
- 对输出进行适当的编码
- 使用现代框架的自动编码功能
-
点击劫持防护:
- 使用X-Frame-Options头部
- 实现Frame Busting代码
总结
本案例展示了通过深入研究特定功能发现高价值漏洞的方法。关键在于:
- 不依赖自动化工具的广谱扫描
- 选择看似简单的功能进行深度分析
- 理解应用程序的底层处理机制
- 测试各种边界情况和异常输入
- 将多个小问题组合成有实际影响的攻击链
这种深度研究方法往往能发现自动化工具无法检测到的复杂漏洞,在漏洞众测和渗透测试中具有更高的价值。