漏洞挖掘|密码找回中的套路

一颗小胡椒2022-01-29 07:10:27

前言

首先这不是一篇总结性的帖子,毕竟对于密码找回的测试方法网络上有比较全面的总结

比如用户凭证暴力破解,系统返回了重要的凭证,邮箱手机弱token,token通用,session覆盖,用户凭证有效期问题,凭证算法被破解,前端校验等等一系列漏洞。

在这里附上前辈总结的脑图,总结的也是比较详细了。

在日常的授权测试以及论坛瞎逛中,发现了一些对于个人而言比较有意思的找回密码的操作,独乐乐不如众乐乐,分享出来希望能帮到各位师傅。

Host Header欺骗

有些人认为HTTP的联机就是靠包里的HOST header来连接的,所以会认为如果修改掉包里的HOST, 那么就连接不到目标服务器,所以是不可控的。

其实HTTP的联机与包里的HOST并没有啥关系, HTTP的联机是TCP/IP建立的, 所以修改掉HOST HEADER并不会把包丢到另外一个服务器上。

所以当应用使用$_SERVER['HTTP_HOST']获取网站URL并拼接到找回密码的链接当中就会产生漏洞。

当你使用网站密码重置功能时,网站URL可能在将来会改变,所以要动态地生成一个邮箱找回密码的链接来匹配服务器的URL。

这个时候可能就会使用$_SERVER['HTTP_HOST'],Host header 是客户端提供的,意味着攻击者可以将他们自己的网址写到重置密码的邮件当中,威胁任意用户的账户安全。

通过 X-Forwarded-Host 来拼接找回密码链接中的域名,这样可以通过写入自己控制的域名,然后通过访问记录发现找回密码链接,在拼接回正确域名重置任意用户密码。

利用条件是受害者必须要点击重置链接,你才能从你控制的网站中通过访问记录查看到重置链接。

举个kackerone的例子:

Mavenlink允许用户注册一个mavenlink.com的子域名去展示他们的内容,所以他们需要一个方法去动态地决定公司的子域名。

host header 可以设置为mavenlink.com的任意子域名,但是从mavenlink.com更改域名将会返回一个错误,而不是发送一个邮件。

添加一个随机的mavenlink.com的子域名,但是这会被定向到正确的页面,没办法插入自己的域名。

测试特殊字符。

服务器接受host header中的一个问号,生成下面的链接

Host: example.com?.mavenlink.com

这样就可以从用户邮件中盗取密码重置token

当然这里还涉及到了域名检测的绕过问题,一旦用户点击该链接,我们在example.com即可获取到重置链接信息

验证链接批量发送

在给后端传递要发送验证链接的邮箱或者手机号时,可以传递一个邮箱或者手机的集合

然后只要第一个邮箱或者手机号是数据库里存在的邮箱或者手机号,那么 将会向这批手机号或者邮箱发送一样的链接信息

团队测试中遇到的例子:

在hackerone披露的漏洞中同样存在这样的例子

通过发送两个邮箱,一个为受害者的邮箱,一个为自己控制的邮箱,这样就可以窃取到受害者邮箱中的重置密码的链接,达到任意用户密码重置的目的。

由于没有看到过这种触发该漏洞的源码,猜测验证环节是允许获取一个类似于集合的东西,遍历其中的值是否有存在于数据库中的值

如果存在则对该集合放行,然后发送验证信息的逻辑同样允许传入一个集合再去遍历集合中的每一个值,

对每一个值发送一样的验证链接

手机号码中的sql注入

由于sql语句的拼接问题导致在手机号处存在sql注入问题,其实这也告诉我们在sql语句的执行中只要涉及到了拼接问题就有可能存在漏洞

在团队授权的测试中也遇到过更改日期处存在sql注入的例子,反正都挺好玩的。

这里用了一个sqrt函数,sqrt为一个平方根计算函数,当经过平方根计算之后和前面的数字拼接,手机号存在于数据库中则发送验证码

如果经过计算和前面的数字拼接手机号不存在于数据库中则显示验证码发送失败

通过这种方式来进行数据库相关信息的猜测

总结

这种逻辑漏洞总是在攻与防的斗争中不断前进,肯定会有脑洞大开的人发现更多的骚套路,这是目前在测试中遇到过的几种比较有意思的任意用户密码重置漏洞的操作,在互联网上能找到例子的尽量采用了互联网例子,如有侵权地方还望告知

声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后果.

漏洞挖掘host
本作品采用《CC 协议》,转载必须注明作者和本文链接
1业务通过 DNS 解析到外网,后面删除了 A 记录2测试业务0x04 什么样的 ip 能进行 host 碰撞?这里我看网上很多人写文章都是写 ip 状态码为 40X 的时候,在进行 host 碰撞但是我想说,这不一定正确!!!实际上,我认为应该改为任何一个 ip 都有 host 碰撞的价值!!!将外网域名全部 ping 一下获取一下 ip,并将收集到的目标 ip 段加外网域名 ip 段保存为一个 ipList.txt 备用
0x01 前言暑假的时候发现的一个骚思路。有些网站开发者会提取request包里的host头来获取域名信息,但是host头可以被修改,是不可信的。这里以密码找回为例,进行一次host头投毒攻击。0x02 挖掘过程某网站存在密码找回功能,本例使用host头中毒来实现任意用户密码重置。
Host Header欺骗有些人认为HTTP的联机就是靠包里的HOST header来连接的,所以会认为如果修改掉包里的HOST, 那么就连接不到目标服务器,所以是不可控的。所以当应用使用$_SERVER['HTTP_HOST']获取网站URL并拼接到找回密码的链接当中就会产生漏洞
漏洞挖掘是指对应用程序中未知漏洞的探索,通过综合应用各种技术和工具,尽可能地找出其中的潜在漏洞。cookie的key为RememberMe,并对相关信息进行序列化,先使用aes加密,然后再使用base64编码处理形成的。在网上关于Shiro反序列化的介绍很多,我这里就只简单介绍一下,详情各位可以看下大神们对其源码的分析。
0x01 确定目标无目标随便打,有没有自己对应的SRC应急响应平台不说,还往往会因为一开始没有挖掘漏洞而随意放弃,这样往往不能挖掘到深层次的漏洞。所以在真的想要花点时间在SRC漏洞挖掘上的话,建议先选好目标。0x02 确认测试范围前面说到确定测什么SRC,那么下面就要通过一些方法,获取这个SRC的测试范围,以免测偏。
对于公益SRC来说,想要冲榜就不能在一个站上浪费大量时间,公益SRC对洞的质量要求不高,所以只要 花时间,还是可以上榜的。在对某站点进行测试SQL注入的时候,先通过一些方式测试是否可能存在漏洞,然后可以直接sqlmap一把梭,也可以手工测试,然后提交漏洞。任意注册算是低危漏洞,不过也有两分。不管是进行SRC漏洞挖掘,还是做项目进行渗透测试,又或者是打红蓝对抗,一定要做好信息收集。
Activity漏洞挖掘详解
2021-10-18 16:22:12
2Activity漏洞初步介绍1.Activity基本介绍在学习Activity的漏洞挖掘之前,我们先对Activity的基本运行原理有一个初步的认识。
一颗小胡椒
暂无描述