来自 GitChat 作者:汤青松
更多使用技术,尽在微信公众号:GitChat技术杂谈

进入 GitChat 阅读原文

WEB安全用户密码找回多案例安全攻防实战

这次文章以wooyun的密码找回代表性漏洞作为案例来讲解,漏洞的描述会通过提交漏洞的原描述加上我的理解一一列出,通过密码找回的过程描述,得出从漏洞的发现到漏洞的分析。

密码找回逻辑测试一般流程,首先尝试正常密码找回流程,选择不同找回方式,记录所有数据包,分析数据包,找到敏感部分,分析后台找回机制所采用的验证手段,修改数据包验证推测

内容主要是逻辑漏洞,技术性质的内容并不多,以发散思维为目标;所以web开发和安全同学都可以来看看

分享内容目录

  1. 用户凭证暴力破解
  2. 返回凭证
  3. 邮箱弱token
  4. 用户凭证有效性
  5. 重新绑定

一、用户凭证暴力破解

四位或者六位的纯数字例子。

微信任意用户密码修改漏洞

漏洞描述

在微信官方的首页上发现了找回密码功能。

点击链接之后看到这个功能.来了兴趣。

在这个页面输入一个已经注册了微信的手机号。

看到了下面的提示信息

点击“我已收到验证码”按钮,就跳转到一个修改密码的页面,如下

在这一步抓包.得到如下包文

code 区域check=false&phone=18666666666&t=w_password_phone&isemail=0&value=18666666666&method=reset&country=A86&getmethod=web&password=zzzzzz&password2=zzzzzz&verifycode=1234

将包文中的verifycode进行重复提交后,发现会提示下图的信息

这样的话.就要想办法去突破.

经过多次尝试后,发现如果在phone=18666666666的号码后面,添加不为数字的字符时,可以绕过这个重复提交的限制.于是我推理出了一个验证逻辑。
如果phone=18666666666的尝试次数大于阀值,则提示请求过于频繁
但在这一步之前没有对phone进行提纯.所以可以将特殊字符带入
但在下一步的时候进行了提纯.只取了phone中的数字部分.
然后在取出此号码的verifycode进行比对.
比对成功则修改密码

修改密码成功.
这个地方的薄弱环节在于微信重置密码的验证码为4-5位纯数字.
且数字范围在1000-20000之间
也就是说.我只要尝试19000次.我用50个线程发包.3分钟即可成功修改一个密码.

#### 原因:

虽然设置了请求阀值,但被猜解除了验证方式,并且找到了绕过方式,验证码为4-5位的数字容易爆破

二、返回凭证

天天网任意账户密码重置(二)

描述

之前看到天天网有爆出漏洞的案例,这次我看看还有没有,果然发现了一枚。

和之前的漏洞一样,打开了找回密码页面,按照了正常流程来找回密码,填好邮箱和验证码,点击下一步,然后抓包。

在抓取到的数据包中发现,返回数据中会返回一个加密字符串,这让我有点好奇心起来了,我把它记录下来。

还是按照了正常流程,打开了我的邮箱,看到了一封找回密码的邮件,我点击了里面的链接地址,进入如下的设置新密码的页面。

这个时候,我把之前记录到的可疑字符串和URL做了一下对比,发现之前的字符串就是当前页面URL最后的部分,竟然是同一个!那我推测,天天网的这个找回密码设计是有问题的,那个邮箱验证码就可以直接绕过了。

设置新密码的的URL为 http://login.tiantian.com/new...加密字符串/

为了要验证我的猜测,我在这里用天天网客服 service@tiantian.com 做了一次测试。还是用上面的正常找回密码流程,然后抓包获取到加密字符串,然后组合到上面的设置新密码的url中,就成功重置了这个客服账号的密码了。给大家截个图看看。

原因

找回密码问题的答案在页面源码中可以看到。

三、邮箱弱token

奇虎360任意用户密码修改漏洞

描述

360是一个大厂,又是做安全业务的,很好奇它的网站安全性怎么样?

好奇的我做了一个测试,我首先按照正常流程走一次找回密码,打开邮箱,查看给我来的邮件内容:

360个人中心找回密码(重要)!

重设密码地址:
http://i.360.cn/findpwd/setpw...,
马上重设密码!

 如果您没有进行过找回密码的操作,请不要点击上述链接,并删除此邮件。

参数vc可以看出是一串32位字符的md5,通过cmd5.com网站解密后发现是个数字,类似1339744000,第一反应猜测是个用户id。我脑袋里马上出来了一个思路,遍历id并且修改u变量是不是可以修改任意用户密码呢?试了一下不可以。 再仔细看了看这个数字,感觉比一般的用户ID大,反复看了几次,突然发现怎么像是个时间戳?

通过时间戳格式化发现,还真是一个时间戳! 再次大胆的猜测了一下这里的流程,用户取回密码时,会产生一个精确的时间戳,和帐号绑定,记录在某个密码重置库内。

修改这个用户密码必须要知道绑定的时间戳才可以,从表面的逻辑来看,好像没问题。不过开发同学忽略了一个细节,什么细节呢?如果这个时间戳是新生成的,我在一定得时间段内进行暴力猜解,很快就可以获取到这个有效得链接。
写了个利用工具测试一下。

打开之后果然验证了我的猜测。

修改密码成功后,后跳到了登陆页面,用刚刚修改得密码登陆后看到了个人资料页面。

原因

使用了特定值的加密作为token,被猜解到使用了时间戳的MD5值。在实际过程中我们也可以尝试用户名,手机,邮箱,等等的不同加密方式。

四、用户凭证有效性

短信验证码例子。

OPPO手机重置任意账户密码(3)

描述

oppo在wooyun上暴露了好几次,这次我也来试试。

先逛逛网站,发现主站的帐号跟nearme开发者社区的帐号是通用的,所以如果只要重置了nearme社区帐号主站帐号也被修改。问题出现在www.nearme.com.cn

依然按照正常找回密码流程来,首先我用自己的手机号186**8188找回密码,点击获取一下验证码,于是这时我手机收到了一个4位的数字验证码。

然后到这步暂停,我不去使用验证码重置。

接下来我要做安全测试了,用18688888888这个帐号进行测试。

我们点击登录处的忘记密码,输入要找回的帐号18688888888。

选择通过手机号码找回密码。

关键的地方在3.身份认证这一步,我把18688888888替换成我自己的手机号186**8188
输入刚才自己手机获取到的验证码:0198,直接确认下一步。

提交成功,输入新密码:oppoceshi1。

确认一下,重置成功。

那么我们接下来就是要用18688888888:oppoceshi1。

登录一下,测试是否成功以我自己的手机号跟验证码修改了此账户的密码。

登陆成功

也就是说我已经成功用自己的手机号186**8188重置了18688888888的账户密码。

原因

只验证了验证码的有效性,却没有对验证码和手机号码做绑定验证。

五、重新绑定

手机绑定例子。

网易邮箱可直接修改其他用户密码

描述

这次我们看一个126邮箱的找回密码漏洞,这个还真和上面的方式有点不一样。

我先来注册一个126邮箱测试帐号。

点击“立即注册” ,后会跳转到一个手机绑定得安全提示页面来。

注意看下这个链接的参数,有个uid,把uid修改成想要黑掉的网易邮箱帐户的uid。

填入一个自己的手机号码,再把验证码发回来。

那我们点击确定并进入邮箱,这个时候这个目标网易邮箱已经被越权绑定了密保手机。

现在我们要改密码就比较简单了,走正常的密码取回流程,发现这个邮箱多了一个通过手机的取回方式,这个手机尾号就是我刚刚绑定的手机!

密码重置成功!!

存在权限判断不当,越权操作的接口是:

http://security.mail.126.com/...

原因:

注册过程的绑定手机页面用过参数修改,将任意账号绑定至可控手机,再来通过密码找回流程找回

最后

通过这篇文章相信你对于密码找回已经有一定的了解,我们发现上面的密码找回思路基本都是通过逻辑推理加技术验证来实现。这种类似的方法还有很多,希望这篇文章对大家的思维能有一点点帮助。


GitChat · 安全 | 聊聊 「密码找回」相关推荐

  1. 6月30日20点,线上,「B12」聊聊「共享经济」

    谈话式直播,我会打个酱油,更关键的是另一位,「空格」创始人谷鬼(唐永波).标价68元,如何免费获取?按流程走呗~ 「共享经济」 这个词已经不再新鲜 在中国,追随Uber和Airbnb而去的创业者 一窝 ...

  2. 我的第一次直播,聊聊「职业规划」和「个人成长」

    第一次直播. 上周五晚上八点半,我兑现了Q3要直播的flag. 直播不是一时兴起,我在两周前跟15位朋友做了调研:直播想要聊什么?有一半写了职业规划,1/3的朋友写了个人成长,还有两个对我的经历感兴趣 ...

  3. 聊聊「无我编程」的十条戒律

    博主说:无我编程的十条戒律,最早出现在 Gerald Weinberg 于 1971 年出版的经典著作<程序开发心理学>里.虽然已经过去了几十年,但这些原则并没有被时间侵蚀,仍然值得每一位 ...

  4. 赠书:聊聊「分布式架构」那些事儿

    什么是分布式架构? 分布式架构是分布式计算技术的应用和工具,其中J2EE技术应用较为广泛,它简化和规范多层分布式企业应用系统的开发和部署,它可以给分布式应用软件提供在各种技术间共享资源的平台 分布式架 ...

  5. 聊聊「视频号」,如何享受第一波红利?

    loonggg 读完需要 3 分钟 速读仅需 1 分钟 大家好,我是你们的校长. 今天我们一起来聊一聊视频号,视频号正常来讲,在春节前就已经开启内测了.到现在应该已经算是大范围内测了,应该有很多人已经 ...

  6. 围“桌”详谈|本周六直播,一起聊聊「发版」那些事儿!

  7. Linux 小知识翻译 - 「端口限制」

    上次说了端口号相关的内容,这次聊聊「端口限制」的事. 经常看到关于安全的书籍上会说「不要开放多余的端口」,那么,如何限制端口才好呢? 实际,端口限制的方法大体上分的话有2种. 其一,「通过应用程序来处 ...

  8. 想通关「限流」?只要这一篇

    来源:跨界架构师 之前有了解到z哥的一部分读者们没有充分搞清楚「限流」和「熔断」的关系.我们先来思考一个问题,生活中也有限流,为什么国庆春节长假热门景点要限流?而不是一早先开几小时,如果人多了就关几小 ...

  9. 分布式系统关注点(9)——想通关「限流」?只要这一篇

    如果这是第二次看到我的文章,欢迎右侧扫码订阅我哟~  ? 本文长度为2869字,建议阅读8分钟. 可能你在网上看过不少「限流」相关的文章,但是z哥的这篇可能是最全面,最深入浅出的一篇了(容我飘几秒-) ...

最新文章

  1. POJ 2418 Hardwood Species(trie 树)
  2. ResNets王者回归!谷歌、伯克利联合发文:它当初输给EfficientNets不是架构问题...
  3. Unix的标准I/O与重定向的若干概念解析
  4. linux打包备份到其他机器,linux系统备份恢复到本机或是别的机器上
  5. 算法 摩尔投票算法(图解例题)
  6. Android刷新当前页面
  7. VWware Vsphere 实战记录一、vsphere简介及相关名词介绍
  8. Winform程序在VS中打包成安装程序(带卸载)
  9. Excel一键取消合并单元格并向下填充相同的内容
  10. 【SDOI2008】Sue的小球
  11. mysql 1556_mysqldump: Got error: 1556: You can't use locks with log tables.解决办法
  12. 计算机视觉作业(二)Local Feature Matching
  13. MT6737芯片功能介绍+MT6737芯片资料分享
  14. 谷歌浏览器在线观看视频有声音但画面黑屏问题解决
  15. H.264及编解码调试
  16. linux系统安装fio工具步骤
  17. diskgenius如何在Linux运行,diskgenius怎么用
  18. Nwafu-OJ-1487 Problem q C语言实习题八——ASCII字模文件
  19. ASP.NET编写简单的中文分词程序
  20. 2020 论文研究数据之 - 百度指数采集工具

热门文章

  1. Mosquitto AUTH认证
  2. Go语言学习笔记 (网络编程)
  3. python 数据库性能提升 - TCP聊天+传输文件服务器服务器套接字v2.7
  4. 绎云科技干货铺 | SD-WAN的“武林世界”
  5. Python实战---使用正则表达式爬取古诗文网
  6. Android Studio中的Instant Run
  7. Python 接受N个数字,求他们的和。
  8. 【线段树-维护区间最小值和区间和】2021 ICPC网络赛第一场 D: Edge of Taixuan
  9. Java对接第三方支付渠道之支付宝支付
  10. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)