win2008r2用户账户控制什么意思_敏感信息泄露+IDOR+密码确认绕过=账户劫持「建议收藏」

win2008r2用户账户控制什么意思_敏感信息泄露+IDOR+密码确认绕过=账户劫持「建议收藏」今天分享的这篇Writeup是作者在HackerOne上某个邀请测试项目的发现,目标网站存在不安全的访问控制措施,可以利用其导致的敏感信息泄露(auth_token)+密码重置限制绕过,以越权(IDOR)方式,实现网站任意账户劫持(Takeover)。整个测试过程是一次最基本的IDOR和密码限制绕过操作,一起来看看。获得账户auth_token目标网站是一个工作招聘门户网站,测试保密原…

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

9fbf6a7561c8c5f592ee77cc4c0b6164.png

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

获得账户auth_token

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

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

4b364939fe3ae5fb65cc025f4a025be4.png

其中包含了auth_token的信息:

“redirect_url”:“/?auth_token=_v2_8dsf8asdf12ad4f5a4sdf56as1df65asdf56sd4ff&contact_id=11cb26ae&e    xpire=1152315525”

账户劫持(Account Takeover)

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

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

https://redacted.com/?authtoken=d8fs4ds8fdsf84dsf8dsfads8fasd6f84dsf684dsafccv68f4&contactid=52z1d5d4&expire=1152315525

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

94e50e48d9111adf952f4fb24fc4cbc3.png

该死,如何来绕过它呢?

绕过密码确认限制

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

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

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

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

c18adfba859997ca93964749eb490a18.png

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

*参考来源:medium,clouds编译,转载请注明来自FreeBuf.COM

1211a8ed62aa2061bfe28a89c93036ed.gif

精彩推荐

29829ecda530c76016343dd6244ed0ee.png

9738235b5b42e9a7387cc38728a8aaaf.png29829ecda530c76016343dd6244ed0ee.png9a1811ae47380d8fdd98b6f089d1d4c2.png7a1090fdca0b9019fc3fcc8d49fae16f.png7ad6c16a971d849105dfe6008e700e96.giff86f284171ace48faa0743a95f1783c8.gif

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

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

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


相关推荐

  • 获取activexobject对象失败_js获取对象

    获取activexobject对象失败_js获取对象js

    2022年10月14日
    3
  • Oracle数据库恢复删除数据的方法

    Oracle数据库恢复删除数据的方法误删oracle数据库中的数据,在不考虑全库备份和利用归档日志情况,怎样快速恢复数据呢?下面介绍3种方法。1.利用oracle提供的闪回方法进行数据恢复,适用于delete删除方式首先获取删除数据的时间点:select*fromv$sqlwheresql_textlike’%table_name%’;根据结果中的sql_text内容,找到delete执行语句对应的删除时间点,执行下面语句查询出删除的数据。select*fromtable_nameasoftime

    2022年7月17日
    37
  • encode和decode的区别 java_inputstream读取文件

    encode和decode的区别 java_inputstream读取文件encode()和decode()decode英文意思是解码,encode英文原意编码字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.d…

    2022年9月28日
    2
  • smtp服务器配置_smtp 服务器

    smtp服务器配置_smtp 服务器邮件首页SMTP地址SMTP登录用户名(例)是否验证端口SSL      mail.sohu.com smtp.sohu.com maoshen2010@sohu.com 是250mail.yeah.net smtp.yeah.net maoshen2010@yeah.net

    2022年10月4日
    2
  • 给出前序遍历和中序遍历求二叉树_已知前序遍历和后序遍历

    给出前序遍历和中序遍历求二叉树_已知前序遍历和后序遍历一、基本概念1.先序遍历(NLR)可以确定二叉树的父子结点;2.中序遍历(LNR)可以确定二叉树的左右子树;3.后序遍历(LRN)可以确定二叉树的父子结点;二、结论1.已知先序遍历,中序遍历序列,能够创建出一棵唯一的二叉树,可以得出二叉树的后序遍历;2.已知后序遍历,中序遍历序列,能够创建出一棵唯一的二叉树,进而可以得出二叉树的先序序列;3.综上,必须含有中序遍历(确定…

    2025年10月18日
    4
  • 范式 函数依赖 多值依赖

    范式 函数依赖 多值依赖第一范式 第二范式 第三范式 第四范式 第五范式 扩展第三范式 函数依赖 完全函数依赖 部分函数依赖 传递函数依赖 平凡函数依赖 多值依赖 定义 举例 图解 关系

    2025年10月7日
    3

发表回复

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

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