挖洞经验丨敏感信息泄露+IDOR+密码确认绕过=账户劫持

挖洞经验丨敏感信息泄露+IDOR+密码确认绕过=账户劫持本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。今天分享的这篇Writeup是作者在HackerOne上某个邀请测试项目的发现,目标网站存在不安全的访问控制措施,可以利用其导致的敏感信息泄露(auth_token)+密码重置限制绕过,以越权(IDOR)方式,实现网站任意账户劫持(Takeover)。整个测试过程是一次最基本…

大家好,又见面了,我是你们的朋友全栈君。

本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

1_X6j-6HGR7LNlMC9F6PVkEA.jpeg

今天分享的这篇Writeup是作者在HackerOne上某个邀请测试项目的发现,目标网站存在不安全的访问控制措施,可以利用其导致的敏感信息泄露(auth_token) +密码重置限制绕过,以越权(IDOR)方式,实现网站任意账户劫持(Takeover)。整个测试过程是一次最基本的IDOR和密码限制绕过操作,一起来看看。PHP大马

获得账户auth_token

目标网站是一个工作招聘门户网站,测试保密原因暂且称其为redacted.com。一开始,我登录以应聘者身份去测试CSRF或某些存储型XSS,但没什么发现。接下来,我就想到了越权测试(IDOR),为此,我又创建了另外一个账号,两个账号一起可以测试如注册、登录、忘记密码等功能点的越权可能。

创建账号前我开启了流量抓包想看看具体服务端的响应,注册开始时,网站会跳出一个提示,输入注册邮箱检查是否是注册用户。在这里,我随便输入了一个未注册过的邮箱,服务端竟然有了异常响应,如下:

01.jpeg

其中包含了auth_token的信息:

 

 

“redirect_url”:“/?auth_token=_v2_8dsf8as

df12ad4f5a4sdf56as1df65asdf56sd4ff&contact_id=11cb26ae&e

xpire=1152315525”

 

账户劫持(Account Takeover)

哦,这就有点意思了,于是,我把这个邮箱更改为我另一个与注册账号对应的邮箱:

02.jpeg就这样!也就是说,通过“/candidate/create”这个路径我就能获取网站注册用户的auth_token信息了。现在我只需要一个利用它的点就行,接着,我在 burpsuite的代理历史中查看有哪些请求用到了auth_token,哦,很简单,就是这个:

https://redacted.com/?auth_token=d8fs4ds8fdsf84dsf8dsfads8fasd6f84dsf684dsafccv68f4&contact_id=52z1d5d4&expire=1152315525

我开启了浏览器隐身模式访问了上述链接,BOOM,就这么简单地登录到了受害者账户(另一测试账户)中去了,完美的账户劫持。但当我查看受害者账户中的个人资料想更改密码或注册邮箱时,却无法看到个人资料信息,而且跳出来一个密码确认输入框(仔细观察,其中包含Forgot Password忘记密码功能):

03.jpeg

该死,如何来绕过它呢?

绕过密码确认限制

先来一种猜想:要是我把受害都注册邮箱更改为我自己的邮箱,然后利用忘记密码功能发送密码更改请求,那我的邮箱会不会收到密码重置链接呢?来试试看。

于是,我在我自己的测试账户中找到了注册邮箱更改路径为 ‘/api/profile’,该路径下,通过类似{“email_address”:“attackers@gmail.com”}`的JSON格式PATCH请求,就能实现注册邮箱更改。天天好彩​​​​​​​

接下来,我在受害者账户登录cookie下,以这种方式在“https://redacted.com/api/profile”下,发送了JSON格式的PATCH请求-‘{“email_address”:“mynewmail@gmail.com”}’ :

04.jpeg响应成功显示请求有效,那么之后,我只需登录受害者账户环境,点击个人资料查看,在跳出的密码确认框那点击忘记密码(Forgot Password),那么我自己的邮箱就能收到服务端发来的一封密码重置链接邮件了。

05.jpeg

漏洞上报后,厂商在四天之内做了修复,最终我也获得了$2,500美金的奖励。但后来,我又发现目标网站还存在一个类似上述可通过更改邮箱绕过密码确认的路径“/contact/api/update/v1”,上报之后,我又获得了厂商$150美金奖励。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132088.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • objectable_java throwable

    objectable_java throwable问题众所周知,Java中的Cloneable接口被破坏了。这有很多原因,我不会提及;others已经做到了。它也是Javaarchitects自己的立场。因此,我的问题是:为什么还没有被弃用?如果核心Java团队已经确定它已被破坏,那么他们也必须考虑弃用。他们这样做的原因是什么(在Java8中它是stillnotdeprecated)?#1热门回答(117赞)在1997年提交的abu…

    2022年10月14日
    4
  • 推断js中的类型:typeof / instanceof / constructor / prototype

    推断js中的类型:typeof / instanceof / constructor / prototype

    2021年12月6日
    42
  • node npm python 环境配置、安装

    node npm python 环境配置、安装node安装后,默认会自动配置环境变量,但是如果有时重装系统后,系统环境变量被重置,这时就需要重新手动配置环境变量。配置环境变量首先添加一个node的path,NODT_PATH值配置为node文件夹中的node_modules的位置,如D:\nodeJs\node_modules,然后在path中加入node安装文件夹的路径即可如D:\nodeJs。npm在出现如上系统重置问题,在工…

    2022年8月30日
    7
  • Sql Prompt使用技巧[通俗易懂]

    Sql Prompt使用技巧[通俗易懂]1、刷新缓存打开SqlServer,该插件会自动运行,将数据库中的视图、表、存储过程都缓存起来,所以在第一次打开查询分析器的时候,插件会有一个加载缓存的过程。如果数据库中的对象有变化,需要手动刷新一下缓存,可以按Ctrl+Shift+D,或者在主菜单中找到SQLPrompt→RefreshSuggestions。2、智能提示(1)在查询分析器中写DML语句时,当鼠标移动到…

    2022年7月26日
    55
  • matlab中acos得到的弧度范围,matlab角度弧度

    matlab中acos得到的弧度范围,matlab角度弧度MATLAB 中 FFT 的使用方法 数学 自然科学 专业资料 MATLAB 中 4 3Matlab 应用利用 Matlab 编制程序 由 1 个主程序 5 个子程序组成 主程序为 curve m 子程序分别为角度转换成弧度子程序 degrad m 弧度转换成角度子程序 再计算 75Hz 信号的相位 atan2 192 3 4315E 12 1 5708 弧度 换算成角度就是

    2025年11月24日
    5
  • QTreeview custom

    QTreeview custom设定字体virtualQVariantMyModel::data(constQModelIndex&index,introle)const{if(index.isValid()&&role==Qt::ForegroundRole){if(index.column()==2){

    2022年5月22日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号