密码重置投毒
Last updated
Last updated
密码重置投毒是一种攻击技术,攻击者通过操纵易受攻击的网站,使其生成指向攻击者控制的域的密码重置链接。这种行为可以被利用来窃取重置任意用户密码所需的秘密token,最终导致其账户被入侵。
Research
几乎所有需要登录的网站都实现了允许用户在忘记密码时重置密码的功能。有几种方法可以实现这一点,安全性和实用性各不相同。其中最常见的方法大致如下:
用户输入用户名或电子邮件地址,并提交密码重置请求。
网站检查该用户是否存在,然后生成一个临时的、独特的、高熵的token,并将其与用户的后端帐户关联起来。
网站向用户发送一封包含密码重置链接的电子邮件。用户独特的重置token作为相应URL的查询参数包含在内:
当用户访问此URL时,网站会检查提供的token是否有效,并使用它来确定正在重置哪个帐户。如果一切符合预期,用户可以选择输入一个新密码。最后,该token被销毁。
与其他方法相比,这个过程简单且相对安全。然而,它的安全性依赖于这样一个原则,即只有预期的用户才能访问他们的电子邮件收件箱,因此,才能访问他们的独特token。密码重置投毒是一种窃取这个token以便更改另一个用户密码的方法。
如果发送给用户的URL是基于可控输入(如Host标头)动态生成的,那么可以按照以下方式构造密码重置投毒攻击:
攻击者根据要求获取受害者的电子邮件地址或用户名,并代表他们提交密码重置请求。在提交表单时,他们拦截所产生的HTTP请求,并修改Host标头,使其指向他们控制的域。在这个例子中,我们将使用evil-user.net
。
受害者收到来自网站的一封真实的密码重置邮件。看似包含一个普通的密码重置链接,关键是包含一个与他们的帐户关联的有效密码重置token。然而,URL中的域名指向攻击者的服务器:
如果受害者点击此链接(或以其他方式获取,例如被反病毒扫描器获取),密码重置token将被发送到攻击者的服务器。
现在,攻击者可以访问易受攻击的网站的真实URL,并通过相应参数提供受害者的被盗token。然后,他们可以将用户的密码重置为他们喜欢的任何密码,并随后登录到他们的帐户。
在真实攻击中,攻击者可能会试图增加受害者点击链接的概率,例如首先发送一个虚假的违规通知。
即使你无法控制密码重置链接,有时也可以使用Host标头将HTML注入到敏感的电子邮件中。请注意,电子邮件客户端通常不执行JavaScript,但是其他HTML注入技术,如dangling markup攻击,可能仍然适用。
LAB
LAB
LAB