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

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

传送门:

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

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

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

密码找回需要鉴别用户的合法身份,证明你就是你,通常有两种做法,一是网站将重置验证码发至用户绑定的邮箱或手机号,用户持重置验证码证明你就是你,二是用户输入密码保护问题对应的答案。其中,验证码、密保答案就是重置密码的重要凭证。

在日常对密码找回功能的攻击中,我的大部份精力聚焦在是否可以暴破验证码、是否可以劫持接收验证码的手机号或邮箱、是否可以混淆重置其他账号、是否可以绕过验证步骤、甚至是猜测重置 token 的生成规律等攻击方式上,反而忽略了最容易、最低技术含量的一种方式——服务端未校验重置凭证。换言之,不论你输入的重置验证码或密保答案是否正确,只要请求格式无误,均可成功重置任意账号密码。我举两个真实案例(漏洞均已修复,就不打码了),你感受下。

案例一:因服务端未校验 token 导致可重置任意账号密码

密码找回页面 http://www.omegatravel.net/users/retrievePassword/ 用攻击者账号 [email protected] 进入密码找回全流程,输入图片验证码后提交:

随后收到带 token 的密码重置链接的邮件:

其中,key:FqvICT 和 userEmail:[email protected] 引起了我的注意。正常来说,提交该 URL 后,服务端会校验 key 与 userEmail 是否匹配,若匹配则进入提交新密码页面,若不匹配则报错。现在,我尝试将 key 从 FqvICT 改为 xxxxxx 后再访问,本来心理预期将看到报错页面,没想到进入了新密码提交页面,难倒所谓的重置 token 仅仅是个摆设?

赶紧找个账号试试,就拿信息收集时找到的 [email protected] 为例(更多后台账号见后文)。参照前面收到的重置链接格式,简单拼装为 http://www.omegatravel.net/users/retrievePasswordReset/key:xxxxxx/userEmail:[email protected],是滴,key 的值我随便写的,访问看看,哇,居然真的进入了新密码提交页面:

输入新密码 PenTest1024 后提交,网站提示“修改密码成功”。尝试用 [email protected]/PenTest1024 登录,成功进入系统:

如何获取其他账号?从注册页面可知,该网站只能用邮箱注册,邮箱即账号。我关心普通用户和内部员工用户两类账号(即邮箱)。普通用户的邮箱字典方面,把国人常见姓名拼音 top500 结合常见邮箱后缀(@qq.com、@163.com 等等)快速生成个简单邮箱字典;内部员工的邮箱方面,我从该网站域名注册信息查询到联系人为 [email protected],说明该公司使用 @omegauk.net 的邮箱后缀,同上,把国人常见姓名拼音 top500、常见后台账号,结合 @omegauk.net 邮箱后缀,快速生邮箱字典;另外,从“联系我们”、“诚聘英才”、“公司简介”等页面找到大量内部员工邮箱和合作伙伴邮箱,如 [email protected]、[email protected] 等等:

将以上几类邮箱字典存为 mail.txt 也就是用户名。

这样,我不仅可以重置普通账号的密码,还能劫持大量内部员工、合作伙伴的账号,为避免影响业务,不再实际操作。

案例二:可枚举无密保的用户名,导致任意密保答案均可重置密码

在密码找回页面 http://www.hzpzs.net/u_findPassword.asp 输入有效用户名 yangyangwithgnu 后拦截请求包:

猜测该数据包用于用户名有效性校验,放至 repeater 中分析。

由于没用图片验证码,导致可枚举有效用户名,发现三类情况。一是,用户名存在且设置过密保问题,应答类似:

二是,用户名存在但未设置密保问题,应答类似:

三是,无效用户名,则应答类似:

用常见用户名和中国人姓名拼音作为字典进行枚举,在所有结果中过滤显示含有关键字 <td width=”65%”></td> 的应答,得到的所有 UserName 参数值即为未设置密保问题的用户名。如:aaron、admin、adolph、alisa、chenchen、esther、jones 等等。

按正常流程,对 chenxin 进行密码重置,输入任意密保答案均可重置密码:

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

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

时间: 2024-10-01 03:07:24

任意用户密码重置(四):重置凭证未校验的相关文章

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

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

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

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

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

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

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

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

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

成功获取并更改中兴F660光猫的超级用户密码解除四台限制

上次雷雨后更换的中兴的F660光猫还是很不错的,很稳定,不过超级密码确实记不住,找了些资料,今天成功的更改了密码,简要的写出过程以备下次参考: 第一步:获取超级密码(已知用户名telecomadmin密码nE7jA%5m的可无视) 1.telnet 192.168.1.1 2.用户名:root,密码:root,(linux的密码不显示,只要输对就行了)回车 3. 出现#就表示登陆成功了,然后输入命令cd /tmp 回车 输入cp db_backup_cfg.xml /home/httpd 回车