学了WEB缓冲投毒-挖SRC的时候咋利用
学了WEB缓冲投毒-挖SRC的时候咋利用
昨天发了哥WEB缓存投毒的学习文章,但是除了理论和训练营并无实践,正巧翻到了一篇文章,感觉还有点关系,转的一个国外的老哥的文章.
微信公众号:小惜渗透,欢迎大佬一起交流进步
挖洞经验 | 在密码重置请求包中添加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抓包,请求包情况如下:
image-20220612162534913
从中我们添加一个X-Forwarded-Host: bing.com来尝试,看看目标网站是否会把这个重置密码链接包含进bing.com;
X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 Squid 缓存代理服务器的开发人员最早引入了这一HTTP头字段,并由IETF在HTTP头字段标准化草案[1]中正式提出。具体点此处参考。https://www.keycdn.com/support/x-forwarded-host
3、这里,我们打开邮箱,查看目标网站发送过来的密码重置链接长啥样,哇,从发来的邮件中我们可以看到,其中包含了用户Token信息的密码重置链接,大致样子如下:
https://bing.com/users/reset_password/tqo4Xciu806oiR1FjX8RtIUc1DTcm1B5Kqb53j1fLEkzMW2GPgCpuEODDStpRaES
image-20220612162548654
就这样,我们可以认为我的密码重置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服务器的域名地址。如:
image-20220612162623934
4、 因此,当受害者邮箱收到目标网站发送的密码重置链接中就会包含Attacker服务器的域名地址,如:
http://ngrok.io/users/reset_password/tqo4Xciu806oiR1FjX8RtIUc1DTcm1B5Kqb53j1fLEkzMW2GPgCpuEODDStpRaES
当受害者一不小心点击了该链接之后,就会带着其用户密码重置Token去请求Attacker服务器ngrok.io(这里需要与用户的交互动作);
5、在受害者点开上述链接的同时,在Attacker服务器ngrok.io这边,攻击者看到的将会是包含受害者用户密码重置Token的一个请求信息,如下:
image-20220612162648097
6、到此,攻击者获得了受害者用户的密码重置Token之后,把Attacker服务器ngrok.io替换成目标网站https://redacted.com,加上后续的受害者用户的密码重置Token,就可成功对受害者账户的重置密码,实现对其账户的完全劫持。
我把该漏洞进行上报后,奖励了我3位数美金的奖励(Between700-$1000)。感谢阅读。
学了WEB缓冲投毒-挖SRC的时候咋利用的更多相关文章
- # 【由浅入深_打牢基础】WEB缓存投毒(上)
image-20220611092344882 [由浅入深_打牢基础]WEB缓存投毒(上) 1. 什么是WEB缓存投毒 简单的来说,就是利用缓存将有害的HTTP响应提供给用户 什么是缓存,这里借用Bu ...
- [SRC初探]手持新手卡挖SRC逻辑漏洞心得分享
文章来源i春秋 本文适合新手参阅,大牛笑笑就好了,嘿嘿末尾有彩蛋!!!!!!!!!!!!!!!!!本人参加了本次"i春秋部落守卫者联盟"活动,由于经验不足,首次挖SRC,排名不是那 ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- 挖SRC逻辑漏洞心得分享
文章来源i春秋 白帽子挖洞的道路还漫长的很,老司机岂非一日一年能炼成的. 本文多处引用了 YSRC 的 公(qi)开(yin)漏(ji)洞(qiao).挖SRC思路一定要广!!!!漏洞不会仅限于SQL ...
- Intellij Idea中的Jetty报出Web application not found src/main/webapp错误的解决方案
今天在Intellij Idea中编译项目的时候,运行起来一直会报出如下的错误: Web application not found src/main/webapp 当时感觉应该是什么文件缺少了.所以 ...
- 风炫安全WEB安全学习第二十五节课 利用XSS键盘记录
风炫安全WEB安全学习第二十五节课 利用XSS键盘记录 XSS键盘记录 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源.所以xyz.com下的js脚本采用a ...
- 风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击
风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击 XSS钓鱼攻击 HTTP Basic Authentication认证 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候 ...
- Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码
Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...
- WEB编程中获取src目录下的文件(没有src目录)
这种情况遇见的会比较多,像一个WEB工程,如果在src下面写了一个xml或者一些其它的文件,当工程发布到服务器时,web程序是在tomcat等服务器下运行这个程序的,这个时候,程序目录里面并没有src ...
随机推荐
- 动态代理-JDK
代理模式:假设一个场景,你的公司是一位软件公司,你是一位软件工程师,显然客户带着需求不会去找你谈,而是去找商务谈,此时商务就代表公司. 商务的作用:商务可以谈判:也有可能在开发软件之前就谈失败,此时商 ...
- gin框架使用【4.请求参数】
GET url: http://127.0.0.1:8080/users?id=1&name=卷毛狒狒 package mainimport ( "github.com/gin-go ...
- JavaScript基础第03天笔记
JavaScript基础第03天笔记 1 - 循环 1.1 for循环 语法结构 for(初始化变量; 条件表达式; 操作表达式 ){ //循环体 } 名称 作用 初始化变量 通常被用于初始化一个计数 ...
- (十一)React Ant Design Pro + .Net5 WebApi:后端环境搭建-IdentityServer4(三)持久化
一.前言 IdentityServer配合EFCore持久化,框架已经为我们准备了两个上下文: ConfigurationDbContext:配置数据(资源.客户端.身份等) PersistedGra ...
- Python schedule 库定时任务
Python schedule 库定时任务 schedule的使用 # 用于scrapy定时任务设置 import schedule import time def job(): print(&quo ...
- MySQL基础合集
我的小站 1.MySQL的优势 运行速度快 使用成本低 可移植性强 适用用户广 2.MySQL的运行机制 一个SQL语句,如select * from tablename ,从支持接口进来后,进入连 ...
- k8s client-go源码分析 informer源码分析(1)-概要分析
k8s informer概述 我们都知道可以使用k8s的Clientset来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行L ...
- redis中的字典结构是怎样的?
点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 redis支持的5种数据类型中,有hash类型,hash类型的 ...
- HashSet与TreeSet的区别
HashSet元素唯一,无序,依靠hashcode(),toString()实现元素的唯一性 TreeSet元素唯一,有序,依靠bTo实现比较,即继承Comparable类并重写compareTo(O ...
- 使用 Vert.X Future/Promise 编写异步代码
Future 和 Promise 是 Vert.X 4.0中的重要角色,贯穿了整个 Vert.X 框架.掌握 Future/Promise 的用法,是用好 Vert.X.编写高质量异步代码的基础.本文 ...