任意用户密码重置(五):重置凭证可暴破

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区。我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证可暴破导致的任意用户密码重置问题。

传送门:

任意用户密码重置(一):重置凭证泄漏

任意用户密码重置(二):重置凭证接收端可篡改

任意用户密码重置(三):用户混淆

任意用户密码重置(四):重置凭证未校验

密码找回需要鉴别用户的合法身份,证明你就是你,通常有两种做法,一是网站将重置验证码发至用户绑定的邮箱或手机号,用户持重置验证码证明你就是你,二是用户输入密码保护问题对应的答案。其中,验证码、密保答案就是重置密码的重要凭证。有些网站生成四位数字的重置验证码,复杂度较低,[0000, 9999] 也就一万种组合,在如今的计算能力和网络带宽条件下,顺手的工具三五分钟的功夫就能枚举完。如果服务端又未设置验证码的存活有效期、未限制高频访问,那么极易暴破。

案例一

密码找回页面 http://www.xxxx.com/find-pw.html 用攻击者账号 13908081024 进入密码找回全流程,输入图片验证码、选择手机找回、获取短信验证码,发现短信验证码为 4 位数字且短信内容上未看到有效期信息,所以,可暴破短信验证码,进行后续的重置流程。

用账号枚举漏洞遍历得到的普通手机号 13908093346 为例,进入密码找回流程,提交短信验证码:

其中,1234 是我随便输入的错误的短信验证码,需要对 code 参数值进行暴破以找出正确的短信验证码。

具体而言,我将该请求中的 code 参数值定义为枚举变量、以 [0000, 9999] 为字典,设定 32 个线程进行暴破:

很快暴出短信验证码为 6909:

提交短信验证码后顺利进入新密码设置页面,重置密码设为 PenTest1024 后提交,服务端返回“修改成功”:

尝试用 13908093346/PenTest1024 登录,验证成功:

案例二

密码找回页面 http://xx.xxxx.com/xxxx/findpassword 用攻击者账号 13908081024 进入密码找回全流程,输入图片验证码、选择手机找回、获取短信验证码,发现短信验证码为 4 位数字且短信内容上未告知有效期,所以,可暴破短信验证码,进行后续的重置流程。

用用户名枚举得到的普通手机号 15012804897 为例,进入密码找回流程,提交短信验证码:

其中,1234 是我随便输入的错误的短信验证码,需要对 auto 参数进行暴破以找出正确的短信验证码:

很快暴出短信验证码为 9997,输入后进入新密码提交页面,重置密码为 PenTest1024 后提交:

尝试用 15012804897/PenTest1024 登录,验证成功:

加固措施

密码重置凭证强度提高,建议六位数字,有效期十分钟,并且验证码应校验一次后立即作废。另外,服务端应限制枚举等恶意请求。

本文原创作者:yangyangwithgnu  转自 www.freebuf.com

原文地址:https://www.cnblogs.com/lic1005/p/8690584.html

时间: 2024-10-02 01:52:14

任意用户密码重置(五):重置凭证可暴破的相关文章

任意用户密码重置(四):重置凭证未校验

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证未校验导致的任意用户密码重置问题. 传送门: 任意用户密码重置(一):重置凭证泄漏 任意用户密码重置(二):重置凭证接收端可篡改 任意用户密码重置(三):用户混淆 密码找回需要鉴别用户的合法身份,证明你就是你,通常有两种做法,一是网站将重置验证码发至用户绑定的邮箱或手机号

任意用户密码重置(二):重置凭证接收端可篡改

在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成因分析,这次,关注因重置凭证接收端可篡改导致的任意用户密码重置问题. 密码找回逻辑含有用户标识(用户名.用户 ID.cookie).接收端(手机.邮箱).凭证(验证码.token).当前步骤等四个要素,若这几个要素没有完整关联,则可能导致任意密码重置漏洞. 前情提要:[传送门] 案例一:接收端可篡改

zzcms8.2#任意用户密码重置#del.php时间盲注#复现

00x0 引言 早上起来,发现seebug更新了一批新的洞, 发现zzcms8.2这个洞好多人在挖,于是我就默默的踏上了复现之路(要不是点进去要买详情,我何必这么折腾~) 环境:zzcms8.2(产品招商型) php-5.4.45 . mysql-5.5.53 01x0 任意用户密码重置 01x1 任意用户密码重置方式一 话说,这个洞的标题应该是任意前台用户密码重置,后台管理员重置不了的,或许是我复现的问题.~~ 先注册个账号,然后首页点击找回密码. 地址:http://localhost/on

任意用户密码重置的10种姿势

以前安全测试最爱挖的就是任意用户密码重置,今天看了carry_your师傅在ichunqiu上的视频文字总结一下任意用户密码重置的10种姿势: 1,短信验证码可爆破: 视频案例中输入手机号码.图片验证码就可以获取短信验证码,并且新密码也是在一个页面中,但是输入短信验证码之后,后端有个请求会判断短信验证码是否正确,错误的话页面会有提醒.攻击者可以用这个请求来爆破验证码,获取到正确的短信验证码之后就可以重置任意用户密码了. 缺陷主要是两个方面,第一,未对短信验证码的失效时间进行限制:第二,功能设计存

PHPCMS v9.5.8-设计缺陷可重置前台任意用户密码

验证.参考漏洞:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0152291.html 漏洞出现在/phpcms/modules/member/index.php   第1687-1756行 public_forget_password_username()函数 public function public_forget_password_username() { $step = intval($_POST['step']); $step =

某站的任意用户密码重置

首先开burp抓包,点击发送验证码,看到底下那串数字,我开始以为随便改,然后告诉我没有这个用户??然后我想这是不是我自己的ID,于是联系我的小同伴借我他的手机号注册并尝试了一下,将他的重置页面底下的ID改为上图,也就是我的,然后成功...发送到了我的手机.. 原文地址:https://www.cnblogs.com/pwn2web/p/10661246.html

安全测试===任意用户密码重置的10种常见姿势

https://www.ichunqiu.com/course/59045 http://www.freebuf.com/articles/web/164510.html http://www.freebuf.com/articles/web/160883.html http://www.freebuf.com/articles/database/161495.html http://www.freebuf.com/articles/web/162152.html http://www.free

Oracle用户密码过期后重置SYS用户密码

问题状况: SYS.SYSTEM用户的密码过期,无法登陆. 运行EM控制台后,出现错误——ORA-28001: the password has expired (DBD ERROR: OCISessionBegin) 解决办法: 1.打开SQL PLUS,输入用户名sys/oracle as sysdba 2.执行脚本——alter user sys identified by oracle; 3.修改密码有效时间为永久——alter profile default limit passwor

在linux系统上建文件系统,建用户,修改用户所属组,重置用户密码

在linux系统上建文件系统,建用户,修改用户所属组,重置用户密码 实验背景:用户及空间 用户名:bosswlb    组别和附属组: bosswlb      主目录:/bosswlb            Shell:bash 空间: 新增    (新增/扩容) 5G   ■解锁  ■密码重置 abcd1234 第一点:建立新的文件系统 我们先来看下系统上现有的文件系统,如下图所示: 下面开始增加一块大小为5G的新盘,使用下面任意一个命令可以扫到新盘: 1.#echo '- - - '>