65.9K
CodeProject 正在变化。 阅读更多。
Home

我如何黑进比特币挖矿池

starIconstarIconstarIconstarIconstarIcon

5.00/5 (19投票s)

2018 年 4 月 19 日

CPOL

5分钟阅读

viewsIcon

41386

潜在漏洞和威胁概述

如今,涉及加密货币的网站已成为黑客的“心仪”目标。尽管人们期望这些网站拥有高级安全系统,但事实并非总是如此。只需访问 BlockChain Graveyard,您就会看到大型服务因黑客攻击而破产倒闭(并且 网络安全仍未充分利用人工智能)。这种情况让我感到担忧,于是我决定对其中一个 Web 应用程序的安全性进行自己的研究。在本文中,我将详细介绍发生的一切以及我收到的报酬。我承认我咨询了我的一位朋友,Elinext 应用程序开发者 Davin Bykovsky。

我的实验始于访问 ViaBTC Pool——一个大型的联合挖矿池。我的挖矿池选择是随机的,基于下图。

Distribution of mining pool for Bitcoin

该图基于截至 2017 年 9 月 23 日最受欢迎的比特币挖矿池的市场份额。

我注册了一个新账户,绑定了我的手机,并通过 Google Authenticator 开启了两步验证。同时还启用了“登录 ViaBTC 时进行身份验证”(登录时的 2fa)选项。

“受害者”账户的安全状态如下所示

该网站没有针对 CSRF 攻击的防护措施。

跨站请求伪造,也称为“一键攻击”或“会话骑乘”,缩写为 CSRF 或 XSRF,是一种 Web 应用程序的恶意利用方式,其中未经授权的命令会从 Web 应用程序信任的用户那里发出。

在我们的例子中,Web 应用程序的用户将访问一个恶意网站,然后他们的电子邮件将被更改为攻击者的地址。

  1. Web 应用程序用户访问攻击者网站。
  2. 用户对此一无所知,但此时,一个更改电子邮件地址的请求已发送到 pool.viabtc.com。

  3. 黑客会立即收到一封电子邮件,要求确认该操作。

  4. 使用邮件中的链接后,黑客将看到此页面

    电子邮件已成功绑定,攻击者会自动登录受害者账户。但我们虚构的黑客关于加密财富的美好幻想将被自动“回主页”重定向打断。

    他将看到我们第二个身份验证步骤(登录时的 2fa)的窗口。

    绕过登录阶段的双重身份验证,我发现双重身份验证实现存在严重漏洞。Web 应用程序的一些功能仅在前台需要第二重身份验证因素的确认。如果您直接向后端发送请求,它将成功执行而无需适当的身份验证。

这样,即使攻击者没有通过第二重身份验证,也可以在登录阶段禁用双重身份验证,这无疑是安全系统的一场灾难。

  1. 黑客使用以下请求在授权期间禁用 2fa。

  2. 然后他访问主页,但此时不再要求身份验证。

直接向服务器发送请求还能做什么?让我们回顾一下第一个漏洞,其中受害者的浏览器本身发送了一个更改其电子邮件的请求。如果用户需要更改电子邮件,前端将要求通过第二重身份验证因素进行确认。但如果您直接发送请求,则不需要确认。由于这种安全缺陷,攻击者可以通过 CSRF 更改电子邮件。

在此阶段,攻击者已获得账户及其机密信息的访问权限。但是,更改密码等关键操作仍然受到双重身份验证的保护。

完全绕过双重身份验证

该 Web 应用程序允许您使用两种交易确认方法:短信代码或 Google Authenticator 代码。但我发现了一种新的方法——电子邮件代码。怎么做?我仔细研究了通过短信确认操作的过程。它包括发送代码请求以及使用收到的代码进行确认请求。

我将“sms”一词改为了“email”一词。

同样,“sms_code”也相应地更改为“email_code”。

尽管攻击者无法访问受害者的短信和 Google Authenticator,但由于 CSRF,他能够访问受害者的电子邮件,因为电子邮件已与该账户绑定。

最后步骤

  1. 攻击者发送了一个代码确认请求给 Google Authenticator 账户的重新绑定操作。

  2. 在电子邮件中收到代码

  3. 使用电子邮件代码确认操作

  4. 将第二个身份验证因素更改为自己的。

就这样,攻击者完全控制了一个普通 Web 应用程序用户的账户。

结论

漏洞链允许入侵者完全窃取您的账户,这当然是极其危险的。尽管如此,修复它们并不难。

  1. 实施 CSRF 令牌
  2. 执行服务器端检查
  3. 禁用电子邮件确认

但如果仔细观察,这些漏洞仅仅是诊断以下问题的症状

  1. 开发人员缺乏基本的 Web 应用程序安全知识。即使是基本的 OWASP TOP TEN 知识也本可以排除 CSRF 漏洞的可能性。
  2. 开发人员认为前端是 Web 应用程序后端的唯一数据源,因此过于信任。实际上,我们也可以直接向服务器端发送请求。
  3. Web 应用程序功能没有严格的策略。开发人员允许在 Web 应用程序的生产版本中存在所谓的调试功能。

重要的是不仅要修复我指出的这些薄弱环节,还要着眼于问题的核心。技术团队必须吸取教训,并不断提高他们在安全领域的知识。您认为这听起来显而易见吗?那么,我们每个月都会看到关于另一个加密货币交易所被入侵的重大头条新闻,这是否有点奇怪?我们谈论的是突破性技术,有大量的资金,随之而来的是巨大的风险,即您的资金可能永远离开您的钱包,而开发人员本身却不知道 CSRF 是什么意思。

Timeline

  1. 2018年2月13日 - 报告
  2. 2018年2月14日 - 接受
  3. 2018年2月15日 - 已修复。收到奖励付款

更新:奖励为 1 BTC。当时的市场汇率为 9,300 美元。

© . All rights reserved.