绕过雷蛇官网的动态验证码

 
 
 

 

 

你们好,我是@dhakal_ananda,来自尼泊尔,这是我在Hackerone上参加的雷蛇漏洞悬赏项目的一部分。一开始这个漏洞悬赏项目是一个非公开项目,我接到邀请后并无参加;后来它变成了公开项目,我反而对它起了兴趣。html

在挖掘漏洞时,我更喜欢绕过各类安全功能(例如二次验证),而不是挖掘普通的XSS和SQL漏洞,因而我很快开始尝试绕过动态密码,由于它在你每次执行敏感操做时都会出现。json

 

在进行了几回测试后,我发现目标应用会使用一个很长的令牌来标记是否输入了动态密码。只有输入有效的动态密码,才提供令牌。api

那么咱们能作些什么来绕过动态密码亦或是令牌的限制呢?我很快就想到,不一样用户之间的令牌是否能通用?因而我进行了简单的尝试,发现确实有效。安全

复现步骤

  1. 登陆攻击者的帐户
  2. 转到https://razerid.razer.com/account,修改电子邮件地址
  3. 你将看到弹出一个对话框,提示须要输入动态密码
  4. 输入有效动态密码,再用BurpSuite拦截住更改电子邮件的最后请求
  5. 将请求发送到BurpSuite的Repeater中
  6. 此时登陆受害者账户(假设你有受害者账户密码)
  7. 更更名称,拦截住相关请求
  8. 复制请求中的user_id和user_token,将其保存到文件中
  9. 转到BurpSuite拦截的攻击账户更改电子邮件的请求中,将该请求中的user_id和user_token替换为受害者账户的user_id和user_token(user_token和动态密码产生的令牌并不同)
  10. 最后提交修改后的请求,查看受害者账户绑定的电子邮件地址是否为攻击者所控制的电子邮件地址。
POST /api/emily/7/user-security/post HTTP/1.1
Host: razerid.razer.com
Connection: close
Content-Length: 260
Accept: application/json, text/plain, */*
Origin: https://razerid.razer.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
DNT: 1
Sec-Fetch-Mode: cors
Content-Type: application/json;charset=UTF-8
Sec-Fetch-Site: same-origin
Referer: https://razerid.razer.com/account/email
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cookie: ...
{"data":"user_iduser_tokenotp_token_value_hereattacker-email@example.comadd10060"}

须要说明的是,在和雷蛇官网交互的过程当中,和身份验证有关的有三个字段,它分别为user_id、user_token和OTP_token。其中OTP_token只有在输入动态密码的状况下才能得到。而雷蛇网站缺少对令牌OTP_token的身份控制,只是验证了其有效性,致使全部的账户都能利用同一个账户的OTP_token绕过动态密码验证。app

我把报告写的很详细,提交给雷蛇,但雷蛇的审核人员竟然认为这个漏洞须要物理接触受害者的机器才能进行?cors

 

 

 

在通过长时间的扯皮后,雷蛇表示,他们提供一个测试账号,若是我能更改账号绑定的电子邮件地址,就认同个人漏洞。post

很快,我就把这个账号和个人电子邮件地址绑定在一块儿。雷蛇最后也给了我1000美圆的漏洞奖励。测试

在此次经历后,我又找到了另外一个动态密码绕过漏洞,在雷蛇修复后将会对外公开。网站

本文由白帽汇整理并翻译,不表明白帽汇任何观点和立场ui

来源:https://nosec.org/home/detail/3056.html

原文:https://medium.com/@anandadhakal13/how-i-was-able-to-bypass-otp-token-requirement-in-razer-the-story-of-a-critical-bug-fc63a94ad572

相关文章
相关标签/搜索