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

传送门:

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

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

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

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

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

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

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

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

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

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

输入新密码 PenTest1024 后提交,网站提示“修改密码成功”。尝试用 travel24@omegatravel.net/PenTest1024 登录,成功进入系统:

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

将以上几类邮箱字典存为 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

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

  1. 任意用户密码重置(六):应答中存在影响后续逻辑的状态参数

    前言 在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了 ...

  2. 渗透实战:dedeCMS任意用户密码重置到内网getshell

    渗透实战:dedeCMS任意用户密码重置到内网getshell ## 一.简介 DedeCMS 是一个基于 PHP 和 MySQL 的开源 CMS 系统,它是国内很多网站使用的 CMS 系统之一.在使 ...

  3. DeDeCMS v5.7 SP2 前台任意用户密码修改漏洞复现

    DeDeCMS v5.7 SP2 前台任意用户密码修改漏洞复现 一.漏洞概述 1.简介 织梦内容管理系统(DedeCms) [1] 以简单.实用.开源而闻名,是国内最知名的 PHP 开源网站管理系统, ...

  4. DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改漏洞复现

    文章目录 简介 漏洞限制 影响版本 复现环境 工具准备 一.搭建网站 二.打开服务器代理 三.复现过程 注意 简介 织梦内容管理系统(DedeCms) [1] 以简单.实用.开源而闻名,是国内 最知名 ...

  5. 【漏洞分析】dedecms有前提前台任意用户密码修改

     0x00 前言 早上浏览sec-news,发现锦行信息安全发布了一篇文章<[漏洞分析] 织梦前台任意用户密码修改>,看完之后就想着自己复现一下. 该漏洞的精髓是php的弱类型比较,'0. ...

  6. 任意用户注册任意用户密码修改

    1.任意用户注册 漏洞描述: 用户手机获取的验证码只有四位数字,可对其进行爆破,使用任意手机号进行注册并登录 漏洞验证: 2.任意用户密码修改 漏洞描述: 用户手机获取的验证码只有四位数字,可对其进行 ...

  7. 任意用户密码重置的10种常见姿势

    1 验证码不失效 造成原因:找回密码的时候获取的验 证码缺少时间限制仅值判断了验证码是 够正确未判断验证码是否过期 测试方法:通过枚举找到真正的验证 码输入验证码完成验证 -案例 输入目标手机号,获取 ...

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

    1.验证码不失效 具体操作流程 2.验证码直接返回 具体操作流程 3.验证码未绑定用户 具体操作流程 4. 修改接收的手机或邮箱 具体操作流程 5.本地验证的绕过 具体操作流程 6.绕过验证步骤 具体 ...

  9. DedeCMS V5.7 前台任意用户密码修改漏洞

    本博客已搬迁至:https://n0puple.github.io/ 此处不再更新文章 本文仅用于技术讨论与研究,文中的实现方法切勿应用在任何违法场景.如因涉嫌违法造成的一切不良影响,本文作者概不负责 ...

最新文章

  1. 使用Hugo搭建自己的个人博客网站
  2. 响应格式html,设置响应格式的HTML邮件
  3. 组件:slot插槽、组件:组合slot
  4. 解决虚拟机下Linux无法联网以及无法查看ip问题
  5. Security+ 学习笔记38 TCP/IP网络
  6. 洛谷P3709 大爷的字符串题(莫队)
  7. java fake,FakeScript-Java 轻量级嵌入式脚本语言
  8. 华硕电脑重装系统后电池管理软件ASUS Battery Health Charging不见了
  9. 华为2022校园赛——车道渲染
  10. 插值方法: 拉格朗日插值--逐步插值的自适应算法
  11. 箱形图适用于哪种数据_数据可视化分析中图表选择
  12. 观察containerd-shim-runc-v2进程与容器里的1号进程
  13. 寒江独钓windows 内核安全编程学习笔记
  14. 电源系统该如何选择电容大小及数量
  15. 深入理解java虚拟机-java虚拟机的
  16. 12种超短线操作绝招
  17. Fluent中的压力类型
  18. 大V推荐!Python之初识Web,打造属于你的个人品牌
  19. 鸿蒙系统开创者上海交通大学,朱新远 - 上海交通大学 - 系统生物医学研究院
  20. 工欲善其事必先利其器之番茄土豆

热门文章

  1. 通过setTimeout处理click,dblclick,mousedown等事件的冲突
  2. 微信样式组件遇到的小坑
  3. 2016/05/03(接口 买票 临界资源同步锁)
  4. 服务器安全配置之注册表设置
  5. ubuntu获取root权限
  6. 即时通讯有标准 IM的四种即时通讯协议简介
  7. Android开发——Android中常见的4种线程池(保证你能看懂并理解)
  8. 11个优秀的Android开发开源项目
  9. 整合大数据价值最大化的三个关键因素
  10. 实时大数据开发难、运维难、应用难?来,一站解决!