Day74:WEB攻防-机制验证篇重定向发送响应状态码跳过步骤验证码回传枚举

本文主要是介绍Day74:WEB攻防-机制验证篇重定向发送响应状态码跳过步骤验证码回传枚举,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

验证码突破-回传显示&规律爆破

某目标回显显示

某APP验证码爆破

验证目标-重定向用户&重定向发送

某CMS重定向用户

某CMS重定向发送

验证逻辑-修改响应包&跳过步骤URL

某APP修改响应包

某APP跳过步骤URL

实战SRC验证逻辑挖掘分享案例

短信验证码回传显示

修改用户对象重置任意用户

修改响应包重置任意用户

未验证导致重置任意用户

某SRC重定向验证邮箱绕过

某SRC配合信息泄漏重置绕过


知识点:

1、找回修改机制-验证码突破-回传显示&规律爆破

2、找回修改机制-验证目标-重定向用户&重定向发送

3、找回修改机制-验证逻辑-修改响应包&跳过步骤URL

验证码突破-回传显示&规律爆破

某目标回显显示

通过手机找回密码,响应包中包含短信验证码。

某APP验证码爆破

找回密码时使用位数较少的短信验证码,或者验证码没有设置有效时间限制,导致攻击者借助自动化工具在一定时间范围内爆破获得短信验证码,从而导致重置任意账号密码。

该APP实际上是发送6位验证码,但是并没有时间限制

验证目标-重定向用户&重定向发送

某CMS重定向用户

当我们输入正确的手机号和正确的短信验证码,然后进入重置密码的最后一步,也就是输入新的密码,输入密码后提交到服务端的post数据包需要包含当前用户的身份信息。而一般网站是通过用户名或用户ID来标识用户身份的,如果这个用户名或用户ID没有和当前手机号、短信验证码进行绑定。也就是说服务端只验证用户名、ID是否存在,而不去验证用户和当前手机号是否匹配,那么我们就可以通过修改用户名、ID去修改其他用户的密码了。当然可以修改的地方不限于找回密码的数据包,比如修改资料的地方也可能存在这样的漏洞。

某CMS重定向发送

如果数据包存在发送验证邮箱或目标地址,尝试修改到自己接受地,实现拦截获取

验证逻辑-修改响应包&跳过步骤URL

某APP修改响应包

通过手机找回密码一般需要短信验证码验证,服务端需要告诉客户端,输入的验证码是否正确,如果客户端收到true的信息,那么就会向带着true的信息向服务端请求进入下一步,而服务端收到true的信息,就会允许客户端进入下一步,反之,如果是false的信息,服务端就不会允许客户端进入下一步。也就是说我们进入下一步的关键是让服务端收到客户端的true信息,而借助burpsuite,我们可以修改服务端返回到客户端的信息,这样一来,我们就可以输入任意短信验证码,然后将服务端返回的false信息改为true就可以绕过短信验证码的验证了。

或者直接替换掉整个响应包(自己先注册一个用户走一遍密码找回流程,然后重点关注这个验证手机验证码的响应数据包)

某APP跳过步骤URL

找回密码流程一般需要四个步骤:
流程:验证用户名-验证短信验证码-输入新密码-重置成功

这四个步骤应该紧紧相连,互相相关,只有通过了第一个步骤验证才可以进入下一个步骤,如果每个步骤之间没有进行关联性验证,就可能导致跳过关键验证步骤,从而导致重置任意账号密码。

实战SRC验证逻辑挖掘分享案例

短信验证码回传显示

修改用户对象重置任意用户

修改响应包重置任意用户

false改为true绕过

未验证导致重置任意用户

最终只需要修改r为其他用户ID,即可重置其他用户密码。

某SRC重定向验证邮箱绕过

https://mp.weixin.qq.com/s/zsHHSXZHaLmiJFkgsjoHKg

某SRC配合信息泄漏重置绕过

https://xz.aliyun.com/t/11757#toc-0

这篇关于Day74:WEB攻防-机制验证篇重定向发送响应状态码跳过步骤验证码回传枚举的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832626

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

hdu 2489 (dfs枚举 + prim)

题意: 对于一棵顶点和边都有权值的树,使用下面的等式来计算Ratio 给定一个n 个顶点的完全图及它所有顶点和边的权值,找到一个该图含有m 个顶点的子图,并且让这个子图的Ratio 值在所有m 个顶点的树中最小。 解析: 因为数据量不大,先用dfs枚举搭配出m个子节点,算出点和,然后套个prim算出边和,每次比较大小即可。 dfs没有写好,A的老泪纵横。 错在把index在d

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;