任意密码重置漏洞

文章目录

  • 1. 任意密码重置漏洞原理
  • 2. 任意密码重置漏洞产生原因
  • 3. 任意密码重置漏洞场景
    • 3.1 验证码爆破
    • 3.2 验证凭证回传
    • 3.3 验证凭证未绑是用户
    • 3.4 跳过验证步骤
    • 3.5 凭证可预测
    • 3.6 同时向多个账户发送凭证
  • 4. 任意密码重置经典案例
    • 4.1 中国人寿某重要系统任意账户密码重置
    • 4.2 米鼠网设计逻辑的缺陷可重置任意用户密码
  • 5. 权限绕过漏洞
    • 5.1 水平越权
    • 5.2 垂直越权

1. 任意密码重置漏洞原理

厂商在对密码修改功能设计的时候,未对修改密码的凭证做严格的限制,导致可以被绕过进行任意的密码修改。

2. 任意密码重置漏洞产生原因

在这里插入图片描述

3. 任意密码重置漏洞场景

3.1 验证码爆破

表现:

  • 验证码四位,服务端未对验证时间次数进行限制(出现次数比较多的地方);
  • 验证码六位,但是不过期(时间很久),并且没有对验证的次数进行限制;
  • 验证码可以发送多次,而且每次都不会过期。

利用:使用burp的爆破模块即可,或者自己编写脚本。

修复:使用六位验证码限制验证码认证次数

案例流程:

  • 重置密码发送手机验证码
  • 发现验证码只有四位
  • 利用burp进行爆破
  • 爆破成功
  • 重置密码

3.2 验证凭证回传

重置密码时,凭证为发送到手机上的验证码,但是通过拦截发送验证码请求对应的Response包时,发现验证码在Response包中。

重点:注意是凭证,有时候可能返回包里面凭证可能在cookie里面或者也有可能在其他地方。

解决方案:修改包的返回规则

案例:DeDecms任意密码重置

  • DeDecms是用户使用最多的PHP类cms系统,CMS 系统,即内容管理系统(Content Management System),此次该CMS的任意密码重置漏洞,通过遍历UID的方式获取返回的静态gourl跳转地址,而CMS未对更改密码的跳转地址进行参数隐藏导致更改密码的临时密码被泄露,泄露以后构造URL传入临时密码,可以不需要任何验证即可更改任意用户密码。

3.3 验证凭证未绑是用户

输入手机号和验证码进行重置密码的时候,仅对验证码是否正确进行了判断,未对该验证码是否与手机号匹配做验证。

表现:

  • 1.任意账号都能够接收到验证码并能够使用A手机的验证码,B可以拿来用
  • 2.A账号的修改密码连接,B账号可以拿来用

修复:

  • 1.在服务器进行有效验证,手机号和验证码在服务器进行唯─性绑定验证。
  • 2.在服务端限制验证码发送周期,设置时效,限制次数

常见案例:

  • 首次登录账号之后需要你绑定邮箱、手机号等情况。
  • 在绑定的时候修改绑定的账号id即可把自己的手机号等绑定到别人的账号上面。

3.4 跳过验证步骤

成因:对修改密码的步骤,没有做校验,导致可以输入最终修改密码的网址,直接跳转到该页面,然后输入新密码达到重置密码的目的。

测试:首先使用自己的账号走一次流程,获取每个步骤的页面链接,然后记录输入新密码的对应链接。重置他人用户时,获取验证码后,直接进入输入新密码对应链接到新密码的界面,输入密码重置成功。

3.5 凭证可预测

token可预测:使用邮件接受重置密码的链接时,一般都会带有一个token用于判断链接是否被修改过。如果token可以预测,那么攻击者可以通过构造链接来重置任意的用户密码。

表现:

  • 1.基于时间戳生成的Token
  • 2.基于递增序号生成的token
  • 3.基于关键字段生成的token
  • 4.token有规律
  • 5.验证规则过于简单

3.6 同时向多个账户发送凭证

将发送验证码的包截获,修改字段添加多个账户,再发包。发现所写的有效字段均发送了凭证。

4. 任意密码重置经典案例

4.1 中国人寿某重要系统任意账户密码重置

直接修改验证返回包即可重置密码,链接地址:https://cn-sec.com/archives/1557.html

其他相关案例:

  • 中国人寿任意用户密码重置二
  • 中国人寿任意用户密码重置(秒改)用户保单信息全部泄漏

4.2 米鼠网设计逻辑的缺陷可重置任意用户密码

手机号没有经过处理直接在请求包里看到,并且在源码里找到重置密码链接即可直接重置密码。链接地址:http://cn-sec.com/archives/724.html

5. 权限绕过漏洞

越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。越权又可以分为两种:水平越权垂直越权

5.1 水平越权

水平越权就是相同级别(权限)的用户或者同一角色的不同用户之间,可以越权访问、修改或者删除的非法操作。如果出现此类漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。

比如同一公司的员工 A 和 B,分别只能查看自己的一些个人资料,但是如果系统存在水平越权漏洞,则 A 可以通过这样个漏洞查看到 B 的资料。

水平权限漏洞一般出现在一个用户对象关联多个其他对象(个人资料、修改密码,订单信息,等)、并且要实现对关联对象的 CRUD 的时候。开发容易习惯性的在生成 CRUD 表单(或 AJAX 请求)的时候根据认证过的用户身份来找出其有权限的被操作对象 ID,提供入口,然后让用户提交请求,并根据这个 id 来操作相关对象。在处理 CRUD 请求时,往往默认只有有权限的用户才能得到入口,进而才能操作相关对象,因此就不再校验权限了。可悲剧的是大多数对象的 ID 都被设置为自增整型,所以攻击者只要对相关 id 加 1、减 1、直至遍历,就可以操作其他用户所关联的对象了。

案例:

  • 一次水平越权,导致平台两万人被修改密码
  • 小天才电话手表官网存在水平越权操作漏洞(影响用户积分安全)

5.2 垂直越权

水平越权是相同级别的用户之间的越权操作,而垂直越权则恰恰相反,是不同级别之间或不同角色之间的越权。

垂直越权又被分为向上越权向下越权。比如,某些网站,像发布文章、删除文章等操作是属于管理员做的事情,假设一个低权限用户或者根本没权限也可以做相同的事情,这就叫作向上越权,

向下越权与向上越权恰恰相反,向下越权是一个高级别用户可以访问一个低级别的用户信息。这样做似乎没错,而且很多网站都是这么做的,包括低级别密码也可以被高级别用户掌控,但这样做可以说是完全错误!因为即使权限再低的用户都有他自己的隐私,可能用户为了更方便,会将自己的银行卡号与密码记录在网站中,这些信息都属于用户的隐私。

案例:

  • Couchdb垂直权限绕过到命令执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/754482.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

命令行中关于windows hash md5 , mac hash md5 , linux hash md5 文件校验方式

md5, sha-1 ,sha256. windows certutil -hashfile filename md5certutil -hashfile filename sha1certutil -hashfile filename sha256macos 平台 md5 filenameshasum -a 1 filenameshasum -a 256 filenamelinux 平台 md5sum filenameshasum -a 1 fil…

Windows平台使用S3Browser连接兼容的对象存储

本文记录了在Windows平台使用S3Browser连接兼容的对象存储的过程 一、安装S3Browser 1、下载 S3Browser官网:https://s3browser.com/ 直接下载:https://s3browser.com/download/s3browser-11-6-7.exe 2、安装 3、同意授权后确定安装目录 4、勾选立即…

VsCode:配置TypeScript开发环境

一、前提 电脑已经安装了npm 何如安装npm,请点击查看Node.js、npm常用命令、安装多个node版本 提醒:下文讲解操作是在mac 系统进行的,TypeScript简称:ts 二、安装TypeScript 在终端里执行命令:npm install -g typescr…

uni-appx使用form表单页面初始化报错

因为UniFormSubmitEvent的类型时 e-->detail-->value,然后没有了具体值。所以页面初始化的时候 不能直接从value取值,会报错找不到 所以form表单里的数据我们要设置成一个对象来存放 这个问题的关键在于第22行代码 取值: 不能按照点的方式取值 …

【CT】LeetCode手撕—300. 最长递增子序列

目录 题目1- 思路2- 实现⭐300. 最长递增子序列——题解思路 3- ACM 实现 题目 原题连接&#xff1a;300. 最长递增子序列 1- 思路 模式识别&#xff1a;最长递增子序列——> 利用动规五部曲 解决 ——> 借助 i 和 j 指针&#xff0c;其中 j < i 动规五部曲 1.定义…

Ubuntu安装、更新和删除软件

Ubuntu安装、更新和删除软件 问题命令行直接安装、更新和删除软件命令行直接安装软件命令行直接更新软件命令行直接删除软件 手动下载后命令行安装、更新和删除软件手动下载后命令行安装软件手动下载后命令行更新软件手动下载后命令行删除软件 手动下载后在桌面环境下安装、更新…

grpc学习golang版( 八、双向流示例 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写client客…

压缩pdf在线工具,压缩pdf大小的软件

如何有效地压缩PDF文件大小却是个问题&#xff0c;为了获得最佳的压缩效果&#xff0c;我们必须依赖专业的压缩工具&#xff0c;采用错误的方法可能会对文件内容产生负面影响&#xff0c;甚至导致文件无法打开&#xff0c;今天&#xff0c;我将分享一些独特的压缩技巧&#xff…

【语言模型】深入探索语言模型中的神经网络算法:原理、特点与应用

随着人工智能技术的飞速发展&#xff0c;神经网络算法在语言模型中的应用日益广泛&#xff0c;为自然语言处理领域带来了革命性的变革。本文将深入探讨当前语言模型中常用的几种神经网络算法&#xff0c;包括全连接神经网络、卷积神经网络、循环神经网络、长短期记忆网络、门控…

ffmpeg使用png编码器把rgb24编码为png图像

version #define LIBAVUTIL_VERSION_MAJOR 58 #define LIBAVUTIL_VERSION_MINOR 12 #define LIBAVUTIL_VERSION_MICRO 100 note 不使用AVOutputFormat code void CFfmpegOps::EncodeRGB24ToPNG(const char *infile, const char *width_str, const char *height_str, c…

【学习笔记】爱立信SPO 1400 CRAFT软件基础知识4——图形用户界面之通知列表和状态栏

一、前期准备 提示&#xff1a;下面所有学习内容都是基于以下条件完成的 条件1.已经正确安装并正常运行SPO 1400 CRAFT软件&#xff08;以下简称LCT&#xff09; 条件2.确认已正确使用爱立信SPO 1400 CRAFT软件通过网络登录设备&#xff08;以下简称NE&#xff09; 具体登录…

嵌入式应用开发屏幕教程8080并口通信

目录 #8080相关概念介绍 #8080并行通信硬件连接部分 #并行通信硬件电路连接图 #并行通信读数据规定 #并行通信写数据规定 #8080相关概念介绍 通信协议分为串行通信协议&#xff0c;并行通信协议&#xff0c;而本章所讲的8080是一种并行通信协议&#xff0c;并行通信协议 Pa…

Git使用过程中涉及的几个区域

一. 简介 Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理从很小到非常大的项目版本管理&#xff0c;也是 Linus Torvalds 为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。 本文简单了解一下 git涉及的几个部分&#xff0c;以及git 常…

老无忧,成熟人士都在玩的社交app

随着互联网向不同年龄群体的进一步渗透&#xff0c;越来越多大龄人士逐步在传统以年轻人为主的平台中搭建起自己的空间&#xff0c;对缔结社交关系的需求也变得强烈起来。老无忧无忧交友app应运而生&#xff0c;于2024年6月1日正式上线&#xff08;以下简称“老无忧”&#xff…

step6:改用单例模式

文章目录 文章介绍codemain.cppSerialPort.qmlSerialPortHandler.h 文章介绍 案例MF改为单例模式 参考之前写过的关于单例模式的文章单例模式1、单例模式2 code main.cpp qmlRegisterSingletonType(“com.example.serialport”, 1, 0, “SerialPortHandler”, SerialPortHan…

c++ 设计模式 的课本范例(上)

( 0 ) 这里补充面向对象设计的几个原则&#xff1a; 开闭原则 OCP &#xff1a; 面向增补开放&#xff0c;面向代码修改关闭。其实反映到代码设计上就是类的继承&#xff0c;通过继承与多态&#xff0c;可以不修改原代码&#xff0c;又增加新的类似的功能。 依赖倒置原则 Depen…

JavaSE:多态

向上转型&#xff1a; 先看一段代码&#xff1a; 为何Animal animalnew Dog这个代码不报错。就是因为使用了向上转型&#xff1a;父类引用引用子类对象 向上转型一共有三种方式可以实现向上转型&#xff1a;1.直接赋值&#xff0c;2.通过传参&#xff0c;3.返回值 1.直接赋值…

virtualbox安装win10

等到安装完成 设备下选择安装增强功能

【教程】几种不同的RBF神经网络

本站原创文章&#xff0c;转载请说明来自《老饼讲解-机器学习》www.bbbdata.com 目录 一、经典RBF神经网络1.1.经典径向基神经网络是什么1.2.经典径向基神经网络-代码与示例 二、广义回归神经网络GRNN2.1.广义回归神经网络是什么2.2.广义回归神经网络是什么-代码与示例 三、概率…

Redis 5 种基础数据结构?

Redis 5 种基本数据结构(String、List、Hash、Set、Sorted Set)在面试中经常会被问到&#xff0c;这篇文章我们一起来回顾温习一下。 还有几种比较特殊的数据结构(HyperLogLogs、Bitmap 、Geospatial、Stream)也非常重要&#xff0c;我们后面下次再聊&#xff01; 下面是正文。…