测试原理和方法

找回密码逻辑漏洞测试中也会遇到参数不可控的情况,比如要修改的用户名或者绑定 的手机号无法在提交参数时修改,服务端通过读取当前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覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)的更多相关文章

  1. JavaWeb 使用Session实现一次性验证码

    表单 <form action="loginServlet" method="post"> 请输入验证码:<input type=" ...

  2. 不使用Ajax,如何实现表单提交不刷新页面

    不使用Ajax,如何实现表单提交不刷新页面? 目前,我想到的是使用<iframe>,如果有其他的方式,后续再补. 举个栗子: 在表单上传文件的时候必须设置enctype="mul ...

  3. Webform Session、Cookies传值,跳转页面方式

    Session:每个独立的浏览器都会创建一个独立的Session,不是一台电脑一个Session 存放位置:服务器上 作用:只要里面有内容,那么这个网站中所有的C#端都能访问到这个变量 优点:安全,速 ...

  4. Session的使用(登录例案+其它页面访问)

    本程序功能是使用Session将用户输入的用户名保存在Session中(登录成功情况下,登录失败不会有Session值),其它页面想访问时会先判断是否有之前存的Session值. 登录Login.ht ...

  5. 使用session实现一次性验证码

    在登录页面和各种页面,会看到有验证码输入,这样做的目的是为了防止密码猜测工具破解密码,保护了用户密码安全,验证码只能使用一次,这样就给密码猜测工具带来了很大的困难,基本上阻断了密码猜测工具的使用. 可 ...

  6. `<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java

    <jsp:getProperty>动作和<jsp:setProperty>动作的使用 1.<jsp:getProperty>动作 语法格式: <jsp:get ...

  7. 制作登录界面,登录成功后把用户名放在session里,在第3个页面读取session显示用户名

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. session失效后跳转到登陆页面

    一.编写Filter拦截器类 package com.pv.utils; import java.io.IOException; import java.io.PrintWriter; import ...

  9. Form提交表单页面不跳转

    1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

随机推荐

  1. js创建对象的三种方式

    <script> //创建对象的三种方式 // 1.利用对象字面量(传说中的大括号)创建对象 var obj1 = { uname: 'ash', age: 18, sex: " ...

  2. PAT 乙级 1001.害死人不偿命的(3n+1)猜想 C++/Java

    1001 害死人不偿命的(3n+1)猜想 (15 分) 题目来源 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复 ...

  3. centos设置开机自启动脚本

    1.新建脚本文件 我这里是为了设置开机自动设置ipv6隧道,所以命名为ipv6tunnel.sh ifconfig sit0 up ifconfig sit0 inet6 tunnel ::66.22 ...

  4. SpringDataJPA开发环境的搭建

    这里简单的介绍一下使用maven工程创建SpringDataJPA的开发环境的搭建 首先引入依赖 <dependencies> <!-- junit单元测试 --> <d ...

  5. alpha冲刺事后诸葛亮(团队)

    alpha冲刺事后诸葛亮(团队) 课程名称:软件工程1916|W(福州大学) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标:完成Alpha冲刺的事后诸葛亮 团队队员 队员学号 ...

  6. web渗透—xss攻击如何防御

    1.基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同.这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS ...

  7. HDU4624 Endless Spin 和 HAOI2015 按位或

    Endless Spin 给你一段长度为[1..n]的白色区间,每次随机的取一个子区间将这个区间涂黑,问整个区间被涂黑时需要的期望次数. n<=50 题解 显然是min-max容斥,但是n的范围 ...

  8. Linux:使用awk命令获取文本的某一行,某一列;sed插入指定的内容到指定文件中

    awk相关用法: 1.打印文件的第一列(域)                 : awk '{print $1}' filename2.打印文件的前两列(域)                 : aw ...

  9. React Virtual DOM Explained in Simple English

    If you are using React or learning React, you must have heard of the term “Virtual DOM”. Now what is ...

  10. webpack.config.js配置信息的说明

    module.exports = { entry: "./src/main.js", output: { filename: "build/build.js" ...