【漏洞利用】逻辑漏洞之任意账号密码重置详解
参考文章
- 任意用户密码重置的10种姿势
- Tag: #任意相关
- Ref:
本片文章仅供学习使用,切勿触犯法律!
概述
总结
一、漏洞介绍
重置密码本身没有问题i,但是在重置密码中的验证机制不够完善。其产生的原因多种多样,最主要的原因是网站有逻辑上的漏洞,即没有做到用户、账号、验证码三者统一进行验证。
二、漏洞原理
一般重置密码流程:
总结为3步:
- 输入要重置的用户名/账号
- 向该用户绑定的手机号、邮箱等发送验证码
- 操作者输入验证码,证明自己是用户本人
- 获得修改密码权限
繁琐的步骤核心目的是确认当前的操作者是该用户本人。那么就有四个因素特别重要,分别是:操作者、用户账号、用户凭证、当前步骤。这四个因素需要相互验证,在重置流程中,任何因素缺示都有可能被利用。
三、漏洞危害
导致用户账号丢失、信息丢失、财产损失等,对企业来讲,任意账号重置的漏洞将会丢失大量数据,失去用户信任,严重妨碍企业业务,带来巨大的财产损失。
四、利用前提
- 目标网站有用户管理系统
- 可以重置用户密码
五、挖掘利用
1、任意账户密码重置
1.描述
该漏洞存在于用户重置密码一般流程的各个环节。
2.挖掘
1. 验证码可爆破
在重置密码的过程中,需要填写验证码以证明操作者是用户本人。无论是验证码是短信验证还是邮件验证码(本质是一样的),存在以下条件的,可以尝试爆破。
- 验证码结构简单
- 位数少
- 无大小写字母
- 无特殊字符
- 验证码有效时间长
- 能够反馈验证码的正确和错误
- 验证码录入没有次数限制
2. 短信验证码显示在获取验证码请求的回显中
攻击者知道被攻击用户的手机号码,获取短信验证码,抓包就可以在回显中看到用户收到的重置用的短信验证码。
3. 注册手机号及短信验证码未进行匹配性验证
攻击者用自己手机号码收到的重置用短信验证码可以重置其它用户的密码。
4. 用户名、手机号码、短信验证码三者没有进行匹配性验证
只验证码了手机号码、短信验证码是否匹配,最终重置密码是根据用户名来重置的。攻击者重置用户a的密码,获取短信验证码的时候将手机号码修改成自己账号对应的,获取到对应的正确短信验证码,然后输入短信验证码,由于只验证了手机号码以及短息验证码是否匹配,从而可以成功绕过短信验证码限制来重置用户a的密码。
5. 验证码的验证在本地客户端进行验证
通过修改请求回显来绕过,常见重置姿势之一,也可以用于绕过一些其它的前端验证,比如存储xss,参数的合法性验证如果通过前端来完成,也可以用这种方法。
6. 重置步骤未进行校验
这种一般发生在多个步骤重置的过程中,未对步骤1,2进行校验,通过修改url直接绕过短信验证码的校验步骤,直接进入重置页面进行重置。
7. 重置请求未验证身份
跟方法4差不多,最终重置请求没有验证用户身份信息。攻击者用自己的手机号码短信验证码走重置流程,最后一步重置请求抓包修改身份信息为其它用户的,从而进行其它用户密码的重置。
8. 登陆成功修改密码功能平行越权
用户登陆成功之后可修改自己的密码,修改请求只需要输入新密码,请求中未验证当前用户的cookie、session、id等身份信息,可以通过修改id等来重置其它用户的密码。
9. 未校验身份信息的唯一标识cookie信息
重置请求参数中没有用户名、手机号码、id等身份标识,唯一的身份标识是在cookie中。攻击者用自己的账号进行重置,最后重置请求中替换掉请求中的cookie进行其它用户密码的重置。
10. MVC数据对象自动绑定漏洞
邮箱重置密码或者手机号码重置密码的时候,请求中没有明显的身份标识,可以尝试增加参数值来测试是否存在MVC数据对应自动绑定漏洞。比如增加email参数及对应的自用邮箱作为参数值,看看是否能收到密码重置链接。有关这个漏洞可以看看carry_your师傅视频中的案例,以及CF_HB发过的案例,也可以看看CplusHua有关模糊测试的ppt。
3.利用
略
六、修复防范
根据以上的挖掘方法,不难得出相应的防范方法
- 严格控制四个因素,使他们相互验证
- 设置验证码复杂度、有效时间、有效次数。
- 禁止使用前端判断验证码
- 防止平行越权漏洞
- 校验重置步骤,防止跳过某一步骤
七、提出问题
【漏洞利用】逻辑漏洞之任意账号密码重置详解相关推荐
- SRC任意账号密码重置的6种方法
一.短信验证码回传 1.原理 通过手机找回密码,响应包中包含短信验证码 2.案例 某网站选择用手机找回密码: 点击发送按钮,拦截回包,可以查看到短信验证码,如下图所示: 3.修复建议 响应包中去掉短信 ...
- mysql数据库表添加加密密码_数据库账号密码加密详解及实例
数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为sp ...
- linux 账号密码 字段,详解Linux中的用户密码管理命令passwd和change
passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用此项. -u 恢复账号密码.效果相当于usermod -U,同 ...
- 挖洞技巧:任意账号密码重置
1.通过忘记密码的方式,拦截数据包,修改接受验证码的手机号或者邮箱帐号. 这里需要的注意的是看系统是否做校验数据,有的只校验了用户信息但是没有校验手机号码,就算收到验证码也是没有不能够正常重置该用户名 ...
- 米斯特白帽培训讲义 漏洞篇 逻辑漏洞
米斯特白帽培训讲义 漏洞篇 逻辑漏洞 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 任意密码找回 这是补天平台上的一个案例: http://www.118114.cn/re ...
- 任意用户密码重置(六):应答中存在影响后续逻辑的状态参数
前言 在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了 ...
- 任意用户密码重置(四):重置凭证未校验
在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成 ...
- 渗透实战:dedeCMS任意用户密码重置到内网getshell
渗透实战:dedeCMS任意用户密码重置到内网getshell ## 一.简介 DedeCMS 是一个基于 PHP 和 MySQL 的开源 CMS 系统,它是国内很多网站使用的 CMS 系统之一.在使 ...
- csdn账号密码重置成功
没想到,新年的第一篇博客竟然是庆祝自己的csdn账号密码重置成功,但总算是找回来~~ :如此大的论坛,如此多用户的账号被盗,这里面有多少东西需要去反思:安全,安全,安全,是一个永恒的话题!!!
- 2016年最新苹果开发者账号注册流程详解(公司账号篇)
随着苹果规定金融/理财类应用需要使用公司开发者账号上传,并进一步加大对此类问题的审核力度,公司开发者账号开始呈现出炙手可热之势! 不过,公司开发者账号的注册流程着实复杂--不仅要填写公司的D-U-N- ...
最新文章
- SnowFlake唯一ID生成器
- hexde php_怎样在PHP中把16进制HEX数据转换为2进制数据呢?
- VS2017控制台工程日志输出到log文件的同时输出到屏幕
- YidaCMS网站管理系统源码V1.8.2
- mysql sql 备份数据_mysql怎么进行数据库备份和还原,以及自动备份
- KMP算法总结+Next数组+Nextval数组
- 解决JS文件页面加载时的阻塞
- mysql join 排序_MySQL查询优化:连接查询排序limit(join、order by、limit语句)
- C#编程(四十)----------运算符重载
- [前端]如何让图片等比例缩放,同时撑满父级容器的长或宽
- 从海康7816的ps流里获取数据h264数据
- 使用u盘安装windows7、CentOS6.3双系统
- 生如夏花之绚烂,死如秋叶之静美---也传奇
- 详细介绍光纤跳线接口类型PC, APC, UPC
- 没有投屏标志怎么投屏_没有【TV】小图标,手机怎么投屏电视
- 带你领略python魔法~免费复制文档数据
- php万年历源代码!源代码![上一年、上一月、下一月、下一年、附加当天日期加背景颜色]-私聊源码
- 【百度LIC2020事件抽取赛道】赛后小结(小白篇,大佬略过)
- margin塌陷如何解决
- Closing curly brace does not appear on the same line as the subsequent block - 代码规范性问题