原文出处:

国外众测之密码找回漏洞 - 先知社区 (aliyun.com)

前言

最近一直在看国外众测的文章,偶尔也逛逛hackerone,发现公布的漏洞中存有不少的逻辑漏洞,毕竟在hackerone上提交漏洞过审之后给的是美元,还是很有诱惑力的。密码找回功能也是老调常谈的一个功能,前段时间也写过一篇文章是关于密码找回的,发现总结的不是很全面。借这个机会通过展示国外众测例子希望能对这个漏洞有个较为全面的总结

一 密码重置链接未过期

当用户请求更改密码时,会得到一个密码重置链接来重置密码,该链接应该在一段时间后过期。如果没有过期可以多次使用密码重置链接来重置密码,那密码重置功能应该存在问题。
在hackerone上找了下,大部分的案例都是先请求获得一个密码重置链接,然后更改获得重置链接的邮箱,发现重置链接没有过期还可以使用,这也算一个思路吧。但是和我所认知的密码重置链接未过期还是有点偏差的,一般理解的密码重置链接未过期基本上是使用了重置密码链接还能再次使用或者再次获取密码重置链接后前面获取的密码重置链接未失效或者密码重置链接过期时间很长等等,大家都懂啥意思,就不具体举例子了

二 密码重置无速率限制

我们在通过邮件或者短信获取找回密码的链接的时候由于服务器对获取链接的速率限制不严格或者没有限制,攻击者可以通过重放操作来发送大量的密码重置链接,从而产生短信轰炸或者邮箱轰炸漏洞,在日常的工作中其实可以尝试在email或者电话号码中添加特殊字符比如 空格 +86 ? \等来绕过对email或者电话号码的限制。常规操作了,原因很多师傅也分析过,这里不在多说。
重放请求包,获取大量的重置密码的邮件:

三 输入长密码时拒绝服务

密码通常为8-12-24位或最多48位。如果在设置密码时没有字数限制,当你更改密码或者创建账户检测密码时由于长字符串导致拒绝服务攻击。总之这算是一个风险点吧,测试的时候可以留意下,万一那天碰到一个系统错误导致溢出敏感数据,那就不单单是个风险点了。

四 通过密码重置页面进行用户枚举

这个显而易见,有的网站会提醒你输入的用户名或者邮箱是否正确,网站可能在登录做了防护,在忘记密码处可能忘记了。总之不要错过每一个可以进行信息搜集的地方。
这是一个已经修复好的网站的返回信息,并不告诉你是否发送了邮件,也算是一个规避手段吧。这漏洞可大可小,总之要在安全和用户体验之间平衡。

五 host 头中毒

攻击者修改目标的host头将密码重置链接的域名修改为自己的域名。其实这也是很常见的一种漏洞了,邮件还是发送到受害者的邮箱,如果受害者没注意的话点击链接,攻击者控制的网站的记录中可以查看到请求记录,然后在拼接成正确的域名即可实现任意用户密码重置
更改 host头:

在邮件中可以看到密码重置链接的域名已经被修改为攻击者控制的域名

六 referer泄漏密码重置令牌

referer请求头包含上一个网页的地址,所以有可能我们在打开重置链接页面时,点击重置链接页面的另一个链接会带上referer,从而泄露密码重置链接。
打开密码重置页面,添加电子邮件并单击发送

点击重置链接,获取重置页面, 点击网页上提供的任何应用程序(twitter、facebook、linkedin),使用burp拦截请求

可以看到在Referer中泄露了密码重置链接

七 弱凭证问题

如果密码重置链接中包含可以被攻击者轻易猜到的凭证,那这个重置密码链接是不安全的。
最简单粗暴的这种形式,视觉冲击力很强,直接凭证就是用户名,通过枚举出系统中存在的用户名即可实现任意用户密码重置

http://example.com/reset-password?user=victim-user

一个Bugcrowd的例子,重置密码的凭证仅仅是最后的10位数字,和前面那一大串随机字符没关系,你在看是不是就感觉凭证的枚举低多了,去爆破最后几位看看能不能枚举出可用的密码重置链接,很多人一上来看到一大串随机码已经首先放弃了,多想一步可能重置密码就和最后的参数有关系,那岂不是奖金就到手了。

https://redacted.com/update-password/12d52catcbc344ec-9871-85ac6390d863/1621264272

八 凭证泄露

程序无意中泄露了重置密码的token等重要凭证,导致可以任意重置密码
在请求重置密码时,发送重置请求链接时会发送一个token值:

在走流程到重置密码的时候发现该token同样是重置密码时的token:

所以只要我们输入存在的用户名,然后在请求的时候会获得一个可以用在重置密码时的token从而实现任意密码重置。

九 使用电子邮件参数重置密码

在受害者请求密码重置链接时,我们可以尝试以下参数操作,攻击者可以获得受害者的密码重置链接

一 双参数(又名HPP/HTTP参数污染)
email=victim@xyz.tld&email=hacker@xyz.tld
二 json表
{"email":["victim@xyz.tld","hacker@xyz.tld"]}
三 使用分隔符
email=victim@xyz.tld,hacker@xyz.tld
email=victim@xyz.tld%20hacker@xyz.tld
email=victim@xyz.tld|hacker@xyz.tld
四
email=victim@xyz.tld%0a%0dcc:hacker@xyz.tld
payload:{"email":["victim@gmail.com","your@gmail.com"]}

十 替换返回包中的信息
有时更改密码的跳转是前端控制的,如果更改返回包的内容为正确的内容,比如更改返回包代码等可以绕过限制跳转到更改密码步骤,如果对权限校验不严格的话可以实现任意更改用户密码
用户输入用户名后需要进行安全验证,随便输入答案,将会返回如下内容

HTTP/1.1 401 Unauthorized
("message":"unsuccessful","statusCode:403,"errorDescription":"Unsuccessful")

根据返回包构造下正确的返回包:

("message":"success","statusCode:200,"errorDescription":"Success")

跳转到了更改密码的界面,进行密码的更改

发现密码修改成功,这里修改了密码一定要试下是否修改成功,现在大部分站前端验证是可以跳过,但是最后修改密码是不成功的。

总结

其实吧思路是层出不穷,这只能算是最基本的思路吧。只是希望大家在测试的时候不至于盲目,没有头绪,在基本的操作之上发现骚操作,这应该才是我们的追求。

国外众测之密码找回漏洞相关推荐

  1. 逻辑漏洞之密码找回漏洞(semcms)

    目录 什么是密码找回漏洞 一般流程 可能产生该漏洞的情况 脑洞图 1.用户凭证暴力破解 2.返回凭证 3.邮箱弱token 4.用户凭证有效性 5.重新绑定 6.服务器验证 7.用户身份验证 8.找回 ...

  2. web安全:验证码绕过、密码找回漏洞

    0x00 验证码的作用 可以防止恶意破解密码,刷票,恶意灌水,有效防止某一黑客对某一个特定注册用户用特定程序暴力破解方法进行不断的登录尝试. 0x01 验证码绕过的常见姿势 1.前端验证验证码,并没有 ...

  3. 验证码绕过、密码找回漏洞简介

    文章目录 一.验证码的作用 二.验证码绕过的常见姿势 (一)前端验证 (二)验证码无验证 (三)验证码可重复使用 (四)验证码空值绕过 (五)用脚本识别验证码 (六)验证码出现在前端代码中 (七)验证 ...

  4. 100.网络安全渗透测试—[常规漏洞挖掘与利用篇16]—[密码找回漏洞与测试]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.密码找回漏洞与测试 1.密码找回漏洞简介 2.密码找回漏洞测试 (1)源码审计:forget.php (2) ...

  5. 验证码绕过与密码找回漏洞

    一.验证码简介 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apar ...

  6. 任意密码登录——密码找回漏洞

    警告 请勿使用本文提到的内容违反法律. 本文不提供任何担保. 一.漏洞存在的点 密码找回的凭证太弱,如只需要填入一个四位或者六位的纯数字就可以重置密码,导致可以暴力破解. 密码找回凭证可从客户端直接获 ...

  7. 逻辑漏洞之验证码绕过、密码找回漏洞

    一.验证码绕过 验证码: 区分用户是人还是计算机的全自动程序 验证码的作用: 1.防止恶意破解密码 2.防止论坛灌水 验证码绕过: 1.识别法(通过编写脚本实现) 2.逻辑绕过法(开发写验证码的校验的 ...

  8. 美国漏洞众测平台HackerOne运营模式解读与分析

    3月,当美国国防部宣布与HackerOne合作邀请黑客参与"Hack the Pentagon"的漏洞奖励计划之后,让HackerOne再次成为业界焦点.对于混迹于国内外各漏洞众测 ...

  9. 网站安全检测之用户密码找回网站漏洞的安全分析与利用

    我们SINE安全在对网站,以及APP端进行网站安全检测的时候发现很多公司网站以及业务平台,APP存在着一些逻辑上的网站漏洞,有些简简单单的短信验证码可能就会给整个网站带来很大的经济损失,很简单的网站功 ...

最新文章

  1. 2022-2028年中国测绘设备行业研究及前瞻分析报告
  2. 万万没想到! logger.info() 还能导致线上故障?
  3. c语言的特点能够编制出复杂的功能程序,以下不是C语言的特点的是()
  4. windows下用elasticdump导入json数据到Elasticsearch中
  5. Java面试之锁-读写锁
  6. 固定ip_1分钟学会查看跨境卫士费用和选择固定IP
  7. html中如何计算图片的像素,html – 浏览器的1px计算问题(子像素问题)
  8. VAE变分自编码器的一点理解
  9. 一致代价搜索_58搜索效率优化平台建设实践
  10. 自由曲面透镜设计matlab,led自由曲面准直透镜的优化设计方法.pdf
  11. 在Mac上Topaz Gigapixel AI作为Photoshop插件未显示在“文件”->“自动”中的解决方法
  12. c语言程序设计 网上资源,超星尔雅C语言程序设计-资源包完整答案
  13. freeSSL申请证书加阿里云域名解析加nginx配置
  14. 什么是运行时应用程序自我保护(RASP)Runtime Application Self-Protection
  15. 苹果开发者中心添加UDID设备教程(及获取苹果手机的UDUD)
  16. k8s初始化报错[kubelet-check] Initial timeout of 40s passed.
  17. 博客地址迁移到http://blog.csdn.net/sunansheng
  18. 直线---科林明伦杯H题
  19. 牛客小白月赛24 J.建设道路
  20. 基于动态窗口法(DWA)的局部避障算法研究及MATALB的实现

热门文章

  1. iOS 开发 - 播放器Demo开发记录
  2. python虚拟仿真_中国美术学院
  3. 个人团队贡献分+转会人员
  4. 关于聚合函数配合groupby一起使用
  5. 那些闪光的思想和智慧-让自己慢下来(36)
  6. 数字化车间数字孪生在线3d地图数据可视化定制
  7. 国产运动耳机品牌排行榜、2022运动耳机款式盘点
  8. 基于双重ABC分类的B2C电商的物流储位优化
  9. 闪存颗粒SLC、MLC、TLC、QLC
  10. 北京华为HCIE认证网络工程师快速完成设备流量控制和风暴控制