学了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的时候咋利用的更多相关文章

  1. # 【由浅入深_打牢基础】WEB缓存投毒(上)

    image-20220611092344882 [由浅入深_打牢基础]WEB缓存投毒(上) 1. 什么是WEB缓存投毒 简单的来说,就是利用缓存将有害的HTTP响应提供给用户 什么是缓存,这里借用Bu ...

  2. [SRC初探]手持新手卡挖SRC逻辑漏洞心得分享

    文章来源i春秋 本文适合新手参阅,大牛笑笑就好了,嘿嘿末尾有彩蛋!!!!!!!!!!!!!!!!!本人参加了本次"i春秋部落守卫者联盟"活动,由于经验不足,首次挖SRC,排名不是那 ...

  3. C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi

    C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...

  4. 挖SRC逻辑漏洞心得分享

    文章来源i春秋 白帽子挖洞的道路还漫长的很,老司机岂非一日一年能炼成的. 本文多处引用了 YSRC 的 公(qi)开(yin)漏(ji)洞(qiao).挖SRC思路一定要广!!!!漏洞不会仅限于SQL ...

  5. Intellij Idea中的Jetty报出Web application not found src/main/webapp错误的解决方案

    今天在Intellij Idea中编译项目的时候,运行起来一直会报出如下的错误: Web application not found src/main/webapp 当时感觉应该是什么文件缺少了.所以 ...

  6. 风炫安全WEB安全学习第二十五节课 利用XSS键盘记录

    风炫安全WEB安全学习第二十五节课 利用XSS键盘记录 XSS键盘记录 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源.所以xyz.com下的js脚本采用a ...

  7. 风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击

    风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击 XSS钓鱼攻击 HTTP Basic Authentication认证 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候 ...

  8. Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码

    Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...

  9. WEB编程中获取src目录下的文件(没有src目录)

    这种情况遇见的会比较多,像一个WEB工程,如果在src下面写了一个xml或者一些其它的文件,当工程发布到服务器时,web程序是在tomcat等服务器下运行这个程序的,这个时候,程序目录里面并没有src ...

随机推荐

  1. c语言实现双链表的基本操作—增删改查

    //初始化 Node*InitList() { Node*head=(Node*)malloc(sizeof(Node)); if(NULL==head) { printf("内存分配失败! ...

  2. Java学习day9

    抽象类的关键字:abstract 类中有抽象方法时,需要在类名前也加上abstract关键字,即 public abstract class 类名{ } 同时,抽象类不能直接实例化,需要通过子类继承, ...

  3. JavaWeb学习day7-Response初学3(重定向)

    重定向:web资源收到客户端请求后,通知客户端去访问另外一个web资源 1 protected void doGet(HttpServletRequest req, HttpServletRespon ...

  4. vue - 文字3d展示

    <template>   <div>     <p>     <span>C</span>     <span>S</sp ...

  5. Codeforces Round #762 (Div. 3), CDE

    (C) Wrong Addition Problem - C - Codeforces 题意 定义一种计算方式, 对于a+b=c,  给出a和c, 求b 题解 因为求法是从个位求得, 先求出来的最后输 ...

  6. (转)Angular中的拦截器Interceptor

    什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 转之:http://my.osch ...

  7. Python 工匠:使用数字与字符串的技巧

    序言 这是 "Python 工匠"系列的第 3 篇文章. 数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础.在 Python 里有三种数值类型:整型(i ...

  8. 面试突击42:synchronized和ReentrantLock有什么区别?

    在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊. 区别1:用法不同 syn ...

  9. ucore lab8 文件系统 学习笔记

    最后一战果然过瘾.代码量够多,新机制够复杂度,都管饱.做这一课就像从高山上往下走,坡急且路险,还不知自己的方位,琢磨不透系统的架构.待到下了山,回头一看豁然开朗,原来方才自己所下的山是这般模样.在这里 ...

  10. 网络爬虫、Pandas

    网络爬虫.Pandas Pandas 是 Python 语言的一个扩展程序库,用于数据分析. Pandas 是一个开放源码.BSD 许可的库,提供高性能.易于使用的数据结构和数据分析工具. Panda ...