前言
本篇将讲解如何在Host存在可注入漏洞的情况下,利用密码重置功能实现最基本的密码重置中毒。
通过邮箱进行密码重置的流程
在讲如何进行攻击前,为了把握关键点,先来了解用邮箱进行密码重置的大致流程:
1.用户通过提交注册时使用的邮箱告知服务器进行密码重置;
2.服务器进行匹配确认该用户真实存在后,会生成一个独一无二的令牌,该令牌将会与当前需要重置密码的用户进行绑定;
3.接着服务器将会发送一封确认重置密码请求的邮件到该用户的邮箱,邮件内有一个含有之前生成的令牌的URL;
4.用户点击该URL进行确认;
5.服务器将检查提交的令牌参数,正确无误后将会生成密码重置表单让用户进行密码重置;
了解以上流程后就能发现,令牌充当的是信物的作用,并且密码重置逻辑能够实现的基础为:含有令牌的URL只有重置密码的用户才能获得。
密码重置中毒常见攻击方式
明白了以上原理后,我们只需要获得服务器生成的令牌,就能冒充用户进行密码重置。而常见的获取令牌的方式有两种
利用Host漏洞冒充用户发送密码重置请求
在Host存在漏洞的情况下,我们先用自身拥有的账号提交密码重置请求,抓包后修改用户主体为目标用户以及将Host指向受我们控制的域名服务器。这样一来,我们就能直接获得目标用户重置密码需要的令牌。
诱使用户点击虚假的URL
我们可以通过社会工程学相关方面的技能,如向目标用户发送含有虚假URL的钓鱼邮件,该URL包含受我们控制的域名服务器以及真实在令牌。之后诱使用户点击该虚假的URL即可获得令牌。如果用户警惕性较高,即使发送了钓鱼邮件也难以奏效,不确定性太强。
题目分析
本篇靶场题目获得令牌的方式为第一种方法。
题目页面如下:
使用靶场提供的用户名或邮箱进行密码修改以获得URL格式:
接着查看邮件内的URL以获取格式:
抓取发送的请求包,将Host修改为任意值:
响应为200 OK,修改Host后旧可以触发密码重置:
接着将用需要重置密码的户主体修改为目标用户carlos并将Host修改为指向我们控制的邮件服务器:
返回受我们控制的邮件服务器查看访问日志:
获得目标用户的令牌后复制我们自己账户先前发送重置密码请求时收到的邮件内的URL,将里面的令牌修改为目标用户的令牌,接着通过浏览访问该URL后重置目标用户密码:
接着使用我们修改后的目标用户账号密码进行登录:
登录成功:
总结
在Host存在可注入漏洞的情况下,如果能够获得目标用户名或者邮箱地址,就可以修改用户主体为该用户,接着将Host指向受我们控制的域名服务器,就可以冒充该用户发送重置密码请求。然后通过查看受我们控制的域名服务器的访问日志来获得令牌,将该令牌替换到正确的URL中后访问该URL即可实现目标用户的密码重置。