密码重置投毒

比特寻星客
• 阅读 1496

密码重置投毒是一种技术,借此攻击者操纵脆弱的网站生成一个密码重置链接指向他们控制下的域。这种行为可以用来窃取重置任意用户密码所需的secret token,并最终危及他们的帐户。

密码重置投毒

1. 密码重置原理

几乎所有需要登录的网站都有允许用户重置密码的功能,如果用户忘记密码的话。有几种方法可以做到这一点,其安全性和实用性各不相同。最常见的方法是这样的:

  1. 用户输入用户名或电子邮件地址并提交密码重置请求。
  2. 该网站检查该用户是否存在,然后生成一个临时的、唯一的、高熵(就是不容易预测的意思)的token,它将其与后端用户的帐户相关联。
  3. 该网站向用户发送一封包含重置密码链接的电子邮件。用户唯一的重置令牌作为查询参数包含在相应的URL中:

    https://normal-website.com/reset?token=0a1b2c3d4e5f6g7h8i9j 
  4. 当用户访问这个URL时,网站会检查所提供的令牌是否有效,并使用它来确定哪个帐户正在被重置。如果一切正常,用户可以选择输入新密码。最后,销毁token。

与其他一些方法相比,这个过程足够简单并且相对安全。然而,它的安全性依赖于这样一个原则,即只有目标用户才能访问他们的电子邮件,访问他的唯一的token。密码重置投毒是一种窃取token以更改另一个用户密码的方法。

2. 如何构造密码重置投毒攻击

一旦确定可以将任意主机名传递给目标应用程序,就可以开始寻找利用它的方法。在本节中,我们将提供一些您可以构造的常见HTTP Host头攻击的示例。

2.1 密码重置投毒

如果发送给用户的URL是根据可控制的输入(如Host头)动态生成的,则可以构造一个密码重置投毒攻击,如下所示:

  1. 攻击者根据需要获取受害者的电子邮件地址或用户名,并代表他们提交密码重置请求。提交表单时,拦截产生的HTTP请求并修改Host报头,以便它指向攻击者控制的域。对于本例,我们将使用evil-user.net。
  2. 受害者会直接从网站收到一封真正的重置密码的电子邮件。包含一个重置密码的普通链接,更重要的是,包含一个与他们的帐户相关联的有效密码重置token。但是,URL中的域名指向攻击者的服务器:

    https://evil-user.net/reset?token=0a1b2c3d4e5f6g7h8i9j 
  3. 如果受害者单击此链接(或以其他方式获取,例如,由反病毒扫描程序),密码重置token将被发送到攻击者的服务器。
  4. 攻击者现在可以访问脆弱网站的真实URL,并替换相应参数为窃取的token。然后,他们可以将用户的密码重置为他们喜欢的任何密码,然后登录他们的账户。

在真实的攻击中,攻击者可能会试图增加受害者点击链接的概率,例如,发送虚假的通知消息。

即使不能控制密码重置链接,有时也可以使用Host头将HTML注入到敏感的Email中。请注意,电子邮件客户端通常不执行JavaScript,但其他HTML注入技术,如dangling标签攻击可能仍然适用。

本文由博客一文多发平台 OpenWrite 发布!
点赞
收藏
评论区
推荐文章
陈占占 陈占占
3年前
Django 登入,注册,密码重置
先创建Django项目:配置settings.py和MySQL我不说了,自己网上配置xiangmu.js文件我的MySQL:链接MySQL,映射数据库我就不说了我是把MySQL的表给映射过来的【inspectdb表名】复制到models.py文件里,然后映射我的models.py文件:fromdjango.dbimportmodels
陈占占 陈占占
3年前
虚拟机与SXhell6 的链接
1.安装虚拟机(自己上网安装虚拟机)1.我用的是CentOS7的镜像选择语言然后就是用户名与密码(建议密码设一样的)等进度条满了,有一个重置按钮(在后台运行的)然后等待,虚拟机重启localhostlogin:zxc(用户名)Password:(密码自己输入是看不见的)输入完后回车换成root用户($表示是普通用户,表示当前是ro
Stella981 Stella981
3年前
Keycloak 基本功能
Keycloak是一个致力于解决应用和服务身份验证与访问管理的开源工具。可以通过简单的配置达到保护应用和服务的目的。用户管理你的应用不需要开发登录模块,验证用户和保存用户。Keycloak开发了用户管理,登录,注册,密码策略,安全问题,二步验证,密码重置等功能。登录,注册界面所需字段都是可配置,可自定义的。用户角色,权限管理功能,用户组功能。用户
Stella981 Stella981
3年前
Linux 下 mysql 重置密码
1.查看服务状态: psef|grepmysqld !(https://static.oschina.net/uploads/space/2017/0705/140416_7Ew0_3434392.png)servicemysqldstatus 
Stella981 Stella981
3年前
Centos 7 忘记管理员root密码的解决办法
文章目录方法一:通过救援模式重置root密码方法二:使用单用户模式重置root密码当虚拟机多的时候经常可能会忘记root密码,这时候我们就会去虫子root密码这里介绍两种重置Centos7系统root密码的方法方法一:通过救援模式重置root密码1、在系统开机
Stella981 Stella981
3年前
MetInfo Host头污染导致重置用户密码
ifweknowsomeuser'semail,thewewillcanresettheuser'semailbyhostheaderattack.如果我们知道了某个注册用户的邮箱,那么我们就能够通过头注入的方式重置任意用户的密码。所以这个漏洞的攻击前提是在于用户必须要绑定邮箱,且我们知道这个用户的邮箱。正常的找回密码
Wesley13 Wesley13
3年前
MySQL 8.0 以上版本重置 root 用户密码
MySQL8.0以上版本重置root用户密码1.在/etc/my.cnf文件末尾追加skipgranttablesroot@abdefgmysqlvim/etc/my.cnfmysql
Stella981 Stella981
3年前
Deepin重置管理员密码
Debian系重置管理员密码的指南网络上很多,这里针对Deepin列出步骤。关键是第3步,要在正确的位置输入内容。1.引导界面,按下“e”2.移动光标到包含“rosplashquiet”的行3.按下“Ctrle”,光标移动到行末,再把光标移动到“quiet”的后面4.按下空格键,输入“init/bin/bash”5
Wesley13 Wesley13
3年前
Mysql重置root密码遇到的坑(忘记密码)
1、原理通过配置参数“skip\_grant\_tables”在mysql启动时跳过grant\_tables(授权表),从而通过命令来充值root帐号的密码2、方式首先需要停止mysql服务(1)在my.ini文件的\mysqld\块下增加“skip\_gran
Wesley13 Wesley13
3年前
4.11 重置密码 4.12 单用户模式 4.13 救援模式 4.14 ls命令 4.15 chmod命令
4.11重置密码忘记了root密码,没办法登录了。就需要重置密码了。用的是密钥认证,忘记root密码无所谓,只要你记得密钥密码即可。密码和密钥都支持远程登录,是不是说启用了密钥,密码就失效了。答案是:不是。二选一,你随便用哪一种都可以。那为什么还要使用密钥呢?因为密码相对密钥来说,更容易被破解。密钥认证指的是远程的ssh登录。而本
Wesley13 Wesley13
3年前
mysql server 8.0 以上修改重置密码(亲测有效方案)
mysqlserver8.0以上修改重置密码(亲测有效方案)\mysqld\charactersetserverutf8忘记密码时使用skipgranttables设置协议认证方式(重点啊)default\_authentication\_pluginmysql\_native\_password具体操作流