换一种姿势挖掘任意用户密码重置漏洞

时间:2022-07-22
本文章向大家介绍换一种姿势挖掘任意用户密码重置漏洞,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

上一篇文章我们提到了利用Unicode规范化来挖洞的思路以及方法,大家反响很热烈

一直在后台给我留言,苦苦哀求

让我憋tm写了,一直写烦不烦呀

现在的读者都已经这么体贴了吗?都已经开始关心我辛苦码字烦躁不烦躁了吗?

别担心,好歹我也是曾被称为阳光幼儿园四班劳动积极分子的男人,这点苦,不算啥!

于是我打开电脑,给你们写了这篇。

国际化域名(IDN)简介

上文已经提到过这个东西了,其实很简单,咱们通常使用的域名都是英文(ascii)字符的,而IDN则允许我们注册ascii字符以外的字符为域名,比如我可以注册一个域名为“阿信.com”,是不是挺拉风的?

虽然我们是注册了这么一个域名奥,但是可能是为了方便存储?(我也不知道方便啥 ?),国际化域名中提供了一种其他字符的域名到ascii字符域名的一个映射,这个映射就是Punnycode,你可以到如下地址体验一下中文域名转换为Punnycode是啥样的:

https://www.punycoder.com/

漏洞场景

有了以上基础,我们来看一下大佬挖到的一个价值$600的任意用户密码重置漏洞。

我们假设目标网站地址为https://axin.com

本次存在漏洞的接口为https://axin.com/forget-password?email=,可以看到,这是一个再普通不过的通过邮箱重置密码的功能点

但是这个接口没能正确的处理Unicode字符,也就是说,当我输入邮箱victim@gmáil.com会被规范化为victim@gmail.com

然后目标站点axin.com就会把victim@gmail.com用户的重置密码链接发送到邮箱victim@xn--gmil-6na.com中,其中xn--gmil-6na.comgmáil.com的punnycode

所以,只要我去注册gmáil.com域名,并搭建一个邮件服务器就能够完成攻击

那有人又要说了,“这个漏洞的挖掘成本也太高了,还要去注册域名,太麻烦!”

其实,duck不必自己去注册域名,我们只要确定这个点是存在Unicode规范化就行,借助burp插件collabrator client就可以实现

我们都知道burp为了方便我们测试一些没有回显的漏洞,提供了一个在公网能够访问到的域名burpcollaborator.net,并且在使用collabrator的时候会随机生成一个二级域名供我们使用,比如3bfqygorkwzimx55ppnmvkandej47t.burpcollaborator.net

那我们怎么利用这个域名来挖掘这种漏洞呢?其实很简单,流程如下:

  • 到目标站点用邮箱victim@gmail.com.3bfqygorkwzimx55ppnmvkandej47t.burpcollaborator.net注册一个测试账号
  • 然后在重置密码的接口处输入含有Unicode字符的邮箱地址:victim@gmáil.com.3bfqygorkwzimx55ppnmvkandej47t.burpcollaborator.net,发送
  • 如果目标存在漏洞,我们就可以在collobrator client上看到目标站点发送给我们的victim@gmail.com用户的重置密码链接了