Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)
测试原理和方法
找回密码逻辑漏洞测试中也会遇到参数不可控的情况,比如要修改的用户名或者绑定 的手机号无法在提交参数时修改,服务端通过读取当前session会话来判断要修改密码的账 号,这种情况下能否对Session中的内容做修改以达到任意密码重置的目的呢?
在某网站中的找回密码功能中,业务逻辑是:由用户使用手机进行注册,然后服务端 向手机发送验证码短信,用户输入验证码提交后,进入密码重置页面。
对网站中Session覆盖的测试如下:
(1)需要准备自己的账号接收凭证(短信验证码);
(2)获得凭证校验成功后进入密码重置页面;
(3)在浏览器新标签重新打开找回密码页面,输入目标手机号;
(4)此时当前 Session 账户已经被覆盖,重新回到第二步中打开的重置密码页面即 可重置目标手机号。
12.5.2 测试流程
步骤一:在找回密码页面中输入 A 手机号(尾号 3274),然后单击“下一步”按钮,
如图12-23所示。

图12-23 找回密码第一步
步骤二:单击“立即验证”按钮,接收短信验证码。输入验证码通过验证后,就可以进
入密码重置页面了,如图12-24、图12-25所示。

图12-24 找回密码第二步验证手机号

图12-25 进入重置密码页面
步骤三:这里我们密码重置的目标账号是B手机号(尾号为5743),接下来打开一个
新的标签并进入找回密码第一步的页面,输入B手机号后单击“下一步”按钮,如图12-26所
示。

图12-26 新标签重新进入找回密码覆盖session
步骤四:此时成功进入第二步,向B手机号(尾号为5743)发送验证码。B手机收到
的短信验证码我们无法得知,但是不要担心,在这一步服务端已经将当前Session会话设
置为B手机号(尾号为5743)的用户,这个时候再刷新A手机号(尾号3274)密码重置页
面。
步骤五:通过观察页面上显示的手机号,可以看出已经由A手机号(尾号3274)改为
了B手机号(尾号为5743),这说明Session成功覆盖了。这意味着重置密码将修改的是B
手机号(尾号为5743)的密码,如图12-27所示,这样就又诞生了一个任意密码重置漏
洞。

图12-27 重新进入找回密码页面
12.5.3 修复建议
Session覆盖类似于账号参数的修改,只是以控制当前Session的方式篡改了要重置密
码的账号,在重置密码请求中一定要对修改的账号和凭证是否一致做进一步的校验。
Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)的更多相关文章
- JavaWeb 使用Session实现一次性验证码
表单 <form action="loginServlet" method="post"> 请输入验证码:<input type=" ...
- 不使用Ajax,如何实现表单提交不刷新页面
不使用Ajax,如何实现表单提交不刷新页面? 目前,我想到的是使用<iframe>,如果有其他的方式,后续再补. 举个栗子: 在表单上传文件的时候必须设置enctype="mul ...
- Webform Session、Cookies传值,跳转页面方式
Session:每个独立的浏览器都会创建一个独立的Session,不是一台电脑一个Session 存放位置:服务器上 作用:只要里面有内容,那么这个网站中所有的C#端都能访问到这个变量 优点:安全,速 ...
- Session的使用(登录例案+其它页面访问)
本程序功能是使用Session将用户输入的用户名保存在Session中(登录成功情况下,登录失败不会有Session值),其它页面想访问时会先判断是否有之前存的Session值. 登录Login.ht ...
- 使用session实现一次性验证码
在登录页面和各种页面,会看到有验证码输入,这样做的目的是为了防止密码猜测工具破解密码,保护了用户密码安全,验证码只能使用一次,这样就给密码猜测工具带来了很大的困难,基本上阻断了密码猜测工具的使用. 可 ...
- `<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
<jsp:getProperty>动作和<jsp:setProperty>动作的使用 1.<jsp:getProperty>动作 语法格式: <jsp:get ...
- 制作登录界面,登录成功后把用户名放在session里,在第3个页面读取session显示用户名
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- session失效后跳转到登陆页面
一.编写Filter拦截器类 package com.pv.utils; import java.io.IOException; import java.io.PrintWriter; import ...
- Form提交表单页面不跳转
1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
随机推荐
- (05节)快速搭建SSM项目
1.1 快速搭建Web项目 注意点:name:archetypeCatalog,value:internal 原因:Intellij IDEA根据maven archetype的本质,执行mvn a ...
- P1081 开车旅行[倍增](毒瘤题)
其实就是个大模拟. 首先,根据题意,小A和小B从任意一个城市开始走,无论\(X\)如何,其路径是一定唯一的. 显然对于两问都可以想出一个\(O(n^2)\)的暴力,即直接一步一步地向右走. 首先,我们 ...
- Beta冲刺博客汇总(校园帮-追光的人)
所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 汇总Beta阶段的博客,方便查看 冲刺日志 Beta之前-凡事预则立(校园帮-追光的人)5-22 Beta冲刺 ...
- Opencv python图像处理-图像相似度计算
一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你 ...
- 跟UI自动化测试有关的技术
大家都知道,针对UI的自动化技术一般要支持下列的东西: 1. 识别窗口 能够识别尽量多的窗口种类,支持尽量多的UI技术.比如Win32.WinForm.WPF以及WebPage(这个比较特殊,确切 ...
- GPU的主要工作:图像合成、图形操作、光线表达
GPU的主要工作:图像合成.图形操作 gpu不产生图片, 只表达和处理图片.图形:
- CF379C-New Year Ratings Change
https://www.luogu.org/problemnew/show/CF379C 一道水题,折腾了我好久! 解题: 先排序,从小到大挨个满足客户,把最终rating放进集合里,判断是否已经给出 ...
- Numpy | 11 迭代数组
NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 实例1:使用 arange() 函数创建一个 2x3 ...
- podium服务器端的微前端开发框架
podium 是一个比较全的微前端开发框架. 具有以下特性 自治开发 强大的组合能力 基于约定的开发模式 podium 包含的组件 podlets 页面片段,是一个独立的http 服务,独立运行的,实 ...
- C# 其它模拟延迟
System.Threading.Thread.Sleep(3000);//模拟延迟 如模拟上传图片等