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. ...
随机推荐
- Kali linux network is unreachable
使用树莓派4 安装完kali linux后,配置好ip,能ping通上级路由. 但ping公网地址显示网络不可达. Ping: connect: network is unreachable 解决方法 ...
- Go基本运行编译命令解释
go run命令: 直接执行命令源码文件:一定要声明自己是在main包下,要是只有一个工作区,相应的文件就会存在bin文件下 go build: 把文件夹下的命令源码文件编译成直接运行文件,但是不能有 ...
- 解决Mac OS X 系统在home文件夹下面操作不支持的方法
解决Mac OS X 系统在home文件夹下面操作不支持的方法 最近需要使用Mac OS X 系统尝试安装使用appium程序,安装过程中发现,Mac OS X 系统在home文件夹下面操作不支持 ...
- Explorer(2019年牛客多校第八场E题+线段树+可撤销并查集)
题目链接 传送门 题意 给你一张无向图,每条边\(u_i,v_i\)的权值范围为\([L_i,R_i]\),要经过这条边的条件是你的容量要在\([L_i,R_i]\),现在问你你有多少种容量使得你可以 ...
- 斐波那契数性质 gcd(F[n],F[m])=F[gcd(n,m)]
引理1 结论: \[F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)\] 推导: \[ \begin{aligned} F(n) &= F(n-1)+F(n-2) \\ & ...
- 201671030107 胡文艳 实验十四 团队项目评审&课程项目总结
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 1.掌握软件项目评审会议流程 ...
- python应用-综合应用题解决
题目: A,B,C,D,E五个人捕鱼,不计其数,然后休息, 早上A第一个醒来,将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份, B第二个醒来,也将鱼均分为五份,把多余的一条鱼扔掉,拿走自己的一份. ...
- 转载>>去除inline-block元素间间距的N种方法《重》
一.现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子: <input /> <input type="su ...
- leaf框架(一) 部署leaf
获取 LeafServer: git clone https://github.com/name5566/leafserver 将下下来的文件里server放入gopath的src下,bin里的文件也 ...
- Java 多线程学习扩展
http://www.imooc.com/video/5176 一.如何扩展Java并发知识 Java Memory Mode JMM描述了Java线程如何通过内存进行交互 happens-befor ...