实战|某src有趣的任意密码重置
2023-3-14 11:4:15 Author: 菜鸟学信安(查看原文) 阅读量:18 收藏

文章转自 戟星安全实验室
侵权请联系删除

0x00 前言

针对某src进行挖掘时,经过前期的信息收集,发现某个管理系统,以及已知账号123。

针对该系统,最开始是看前端结构是真的没有想到会出个任意重置,所以这里记录一下。

0x01 页面处理逻辑

首先来看一下系统登录的处理页面

通过前端页面不难发现,进入系统需要对应账号密码以及短信验证码;

看到有一个注册页面,尝试注册账号,可惜需要审核。

不能注册,那看看忘记密码的逻辑

不仅需要账号,还需要手机号,我们输入任意账号,返回账号不存在。

当前的思路当然是用字典枚举一下,可是有一个问题就是,我输入存在的账号也返回账号不存在。

然后账号还有密码复杂度要求,而且10位。

0x02 绕过尝试

还有就是常用的,修改返回包然后输入对应账号进行抓包测试,修改返回包后显示当前用户已登录,此时是心头一喜,感觉进去了。

然而现实是残酷的,点击强制登录,会发现再次校验了用户名和密码,然而拦截对应返回包不再是校验,而是html了,无法控制返回包。

结果就是用户或密码错误。

然后总结一下:

当前系统的验证码可以绕过,但是密码不行;联想到的就是,只要我们知道某个账号的密码或者能实现任意重置,我们就可以登录系统。

这个找到一个可以用的账号密码还是比较难,找到一个账号已经不容易了。

那我们尝试密码重置,毕竟验证码可以绕过。

0x03 密码重置

输入我们已知账号然后再输入一个任意手机号,任意验证码以及符号要求的密码,点击提交抓包。

拦截对应返回包,会进行多次校验第一个返回包是no-user,由于我们猜测存在该用户,再结合注册时相关成功结果的返回包,我们修改返回结果为1。

之后遇到第二个数据包校验,增加了一个手机号。

同样拦截返回包,修改其结果为1。

然后第三个数据包,我们看到带上了用户名,手机号,验证码以及密码;注意,这是第一次带上验证码,应该就是对验证码的校验。同样拦截返回包,进行查看分析。

果然返回包的结果为0,应该就是验证码校验了,修改0为1。

然后就是第四个数据包,post请求,带上了所有相关数据信息,不管这个是什么的校验,拦截返回包分析一下。

发现是一个success的跳转,对应下一个包是一个success的连接。

然后前端返回成功的提示,并跳转到登录界面。

到此,我们可能已经完成对账号123的密码重置,但没有登录验证,具体结果不得而知,也行我们被前端欺骗了也说不定。

0x04 登录验证

然后验证输入账号密码,任意验证码抓包,拦截第二个包,也就是验证码的返回包,修改返回的0为1。

之后又出现了一个包,传递数据是账号;这个一样的拦截他。

之后看到返回包不是1,而是6;那我们修改返回包结果为1;这个包具体什么含义不清楚,返回修改为1就行了。

之后又到了强制登录页面,这次点击登录一样的出现一个用户名密码的包。

由于账号密码登录的返回包是html,不用分析了。直接放通,幸运的是密码重置成功,然后成功进入系统后台。

0x05 概述

讲真,还是第一次挖到这种类型的重置,总的来说存在两个逻辑漏洞造成该系统的任意密码重置:

一个是短信验证码的绕过;

一个是手机号与账号的绑定。

本来根据前端页面的结构来说,想要登录系统或者重置密码是比较艰难的。但是这两个逻辑错误的结合就直接导致了任意密码重置的出现。


文章来源: http://mp.weixin.qq.com/s?__biz=MzU2NzY5MzI5Ng==&mid=2247495700&idx=1&sn=9e66bd200d49fb4c60551db48e769c4b&chksm=fc9bea8bcbec639dac06397d0b4b3752ee58e3d6bc41470cd4a1b75504b5ba1318d1abfe0502#rd
如有侵权请联系:admin#unsafe.sh