许多应用系统都有注册模块,正常用户通过注册功能,获得应用系统使用权限;而非法用户通过注册模块,则是为了达到不可告人的目的,非法用户可以通过注册模块与服务端进行交互(一切用户输入都不可信),因此系统上线前,有必要对注册模块进行重点测试。

一、注册模块是否面向大众

根据系统业务需求,分析注册模块面向群体;如果是面向大众,则注册模块应该放在显而易见的地方;比如freebuf的注册功能

重点要强调一下面向内部的注册功能,此时注册模块应该是尽可能的隐藏起来。对内部注册模块隐藏的是否完美,上线前就必须进行测试。红军视角(黑盒测试):通过目录扫描、审查源代码、爬取js文件,发现隐藏的用户注册接口,比如未删除的注释,还可借助社工思维,比如登录地址为www.xxx.com/userLogin,可猜测注册地址为www.xxx.com/userRegist;蓝军视角(白盒测试):直接找开发人员要注册模块地址,检视改地址是否易猜解。

如下截图,就是通过查看源代码,发现系统存在内部使用的注册模块,已被注释,通过检查js文件,发现注册接口地址,以及部分参数。

二、是否需要验真。

验真:验证用户真实性。

检查系统是否需要通过手机、或者邮箱进行验真。验真方式不限,有些是通过短信或者邮箱验证码,有些是直接将下一步的注册地址发送到邮箱。为什么要求验真呢,这可有效防止恶意注册、杜绝僵尸账号,特别是羊毛党,平时养一批僵尸账号,有活动时则启用(虽然现在的羊毛党也有钱,舍得买手机号,但多多少少增加了他们的成本)。

发送短信验证码时,可通过拦截响应包,查看服务端是否有把验证码直接返回给客户端,如果直接返回给客户端,则可以冒用他人的身份,进行注册,绕过验真。

如果系统有人脸识别功能,则需测试人脸识别的健壮性(是否能被绕过),蓝军视角:直接通过工具制作动态图片或者小视频,取到的绕过方法,可以参考:在AE中制作人脸识别动画简要步骤疯狂的身fenzheng:一张身fenzheng如何攻破人脸识别技术(shenfenzheng会被河蟹)。

检查验真是否是在前端进行。如果是在前端,尝试将返回包中代表验真结果的参数值,类似code=-1改为code=0或者1,status=false改为status=true。

如果系统提供稍后验真功能,用户可以稍后验真直接进入系统,此时则需要检查是否存在越权漏洞,防止因权限限制不严,导致越权获取只有验真后才具有的权限。

三、短信或邮箱轰炸

因为有短信或者邮箱验证码,因此会有短信或邮箱轰炸的风险。这不仅会影响用户,而且会消耗企业的短信费用。测试时,通过抓包工具burpsuite,重放验证码发送请求包(以防只在前端进行时间间隔和次数校验),测试验证码是否有发送时间间隔限制和数目限制。现在大家一般采用的时间间隔是60s,次数是5次。

四、是否校验用户名

大部分系统的注册模块对注册账号进行校验,用来验证用户名是否已被使用,此时则可通过抓包工具,拦截注册账号校验请求包,比如使用burpsuite的Intruder模块,字典为常用用户名,对用户名进行遍历,再对遍历出来的用户名进行弱口令爆破。

当未对注册用户名进行校验时,则存在二次注册风险,可尝试用于密码重置,甚至导致整个账号被覆盖。因此红军视角测试时,需要谨慎,蓝军则直接要来已存在的用户进行快速验证即可。

验证用户是否存在的select语句未作过滤时,则可能会存在SQL注入漏洞。

五、SQL和XSS测试

对注册模块进行sql和xss测试,红军视角:当用户名长度未做限制时,可重点测试用户名(昵称、地址等也要进行测试),以前xss流行时,就对用户名插入各种xss的pauload,进行盲打;而SQL注入,则可能存在insert注入风险,或者二次注入(一开始注册时,insert有进行过滤,但是登录账号后,查看个人信息时,未对参数进行过滤,导致触发sql注入攻击,这个比较有难度);蓝军视角,则来的容易的多,直接代码审计即可。

注册时,当使用的insert语句未作过滤时,比如原始sql语句是(参考地址在SQL注入之insert注入

insert into member(username,pw,sex,phonenum,email,address) values('wangwu',md5('a'),'a','aa','a','a')

此时则可以构造如下sql注入payload,获取数据库用户名

insert into member(username,pw,sex,phonenum,email,address) values('wangwu'or updatexml(1,concat(0x7e,(users())),0) or'',md5('a'),'a','aa','a','a')

注册时,当输入框有长度限制,可以尝试f12修改输入框的长度,或者通过拼接技术,将xss的payload拆分到好几个输入框,从而验证是否存在xss漏洞。

六、是否可以注册成管理员

遇到过一个这样的系统,从js文件中发现的接口请求参数只有用户名和密码

虽然能注册成功,但是登陆进去,就一个修改密码和查看个人信息的功能

测试时,想着能否发现越权,后面点击个人信息时也是空白,但是响应包中有报错信息,提示角色不存在

看到role_id这个参数,于是重新注册,注册请求包中,添加参数role_id,并将role_id设置为1(一般管理员角色id=1),重新注册成功,从而获得管理员权限。

七、文件上传

部分系统注册时,有文件上传功能,比如头像、营业执照;此时则需要对上传功能进行任意文件上传测试。

八、其他

当注册请求包请求参数是xml格式,则要进行XXE测试;如果是json格式,不妨试试fastjson命令执行这类漏洞。

注册模块上线前安全测试checklist的更多相关文章

  1. 关于xcode6打包以及上线前企业部署测试的说明 --转自张诚教授微博

    xcode6如何打包 首先clean然后点击归档 点击打包之后保存 点选第一个以后检查相关证书签名 那么我们开发完以后,在上线前如何给别人测试 有2种方法 1.使用299美金的企业开发者账号搭建企业部 ...

  2. IOS AppStore上线前测试

    IOS  AppStore上线前测试 TestFlight Beta ios 8才开始支持. https://developer.apple.com/library/ios/documentation ...

  3. 上线前测试的bug,要不要处理,跟版本的关系

    最近有两个项目是在旧版本上实施的.上线前经过一轮测试后,发现了一些产品(我们的产品确实不稳定) 在这个项目上,修改产品bug是肯定的.但是要不要追踪这些bug? 这就跟版本使用范围有关系了,毕竟要考虑 ...

  4. TestCase--网站注册模块

    对于web测试,注册模块是必测的一个点,所以今天就来总结一下注册模块的测试用例 参考京东的注册页面 测试用例设计如下: 一.功能测试 1.  单击“免费注册”,页面是否正常跳转 2.  直接访问注册页 ...

  5. 【转】python模块分析之unittest测试(五)

    [转]python模块分析之unittest测试(五) 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) p ...

  6. CP干货:手机游戏上线前需要准备什么

    转自:http://www.gamelook.com.cn/2015/09/229002 游戏研发完成后游戏该怎样推广?如何找渠道?推广时需要注意什么?下面给大家介绍一下具体流程,可能每个公司的上线流 ...

  7. python基础语法13 内置模块 subprocess,re模块,logging日志记录模块,防止导入模块时自动执行测试功能,包的理论

    subprocess模块: - 可以通过python代码给操作系统终端发送命令, 并且可以返回结果. sub: 子    process: 进程 import subprocess while Tru ...

  8. iOS开发一个用户登录注册模块需要解决的坑

    最近和另外一位同事负责公司登录和用户中心模块的开发工作,开发周期计划两周,减去和产品和接口的协调时间,再减去由于原型图和接口的问题,导致强迫症纠结症状高发,情绪不稳定耗费的时间,能在两周基本完成也算是 ...

  9. PHP+jQuery 注册模块的改进之二:激活链接的URL设置与有效期

    接<PHP+jQuery 注册模块的改进之一>继续修改: ①在注册成功后返回登录邮件页面( maillogin.php ),在页面中用户可以点击链接跳转到自己注册邮箱的登录页面,可以再次发 ...

随机推荐

  1. 【Go语言系列】第三方框架和库——GIN:GIN介绍

    1.Gin 是什么? Gin 是一个用 Go (Golang) 编写的 HTTP web 框架. 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高 ...

  2. twisted reactor calllater实现

    twisted reactor calllater实现 1.      calllater实现代码 测试源码: from twisted.internet import reactor from tw ...

  3. ZOJ4114 Flipping Game(2019山东省赛)

    有n个开关,有起始状态和终状态,问如果每次必须选m个开关进行改变状态,一共进行k次,那么有多少种方式可以从起始状态到终状态~ #include<bits/stdc++.h> using n ...

  4. bootstrap与vue,react的区别

    链接(与Vue区别):https://www.php.cn/faq/423095.html 链接(BootStrap, React, Vue的比较):https://www.jianshu.com/p ...

  5. Redis注意点记录

    场景:1主2从 1.不使用哨兵模式,则当主机宕机后,从机并不会自动切换到Master状态,仍旧是Slave,若主机重新恢复,则从机进行自动连接 2.使用哨兵模式后,主机宕机,从机会根据分配的权值在从机 ...

  6. 防止重复发送Ajax请求问题

    在工作中有很多场景需要通过Ajax请求发送数据,像是注册.登录.提交用户反馈等.用户在点击了“确认”按钮之后有可能一段时间内没有收到反馈页面无任何反应,然后就接着连续多次点击“确认”按钮导致发送n个重 ...

  7. python 顺序执行任务

    #!/usr/bin/python import os import time start_command="sh start-etl.sh " es_mac_confPath = ...

  8. 大数据篇:YARN

    YARN YARN是什么? YARN是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率.资源统一管理和数据共享等方面带来了巨大 ...

  9. a链接内容过长,换行

    上图为溢出情况,此情况均为 英文或数字,但亲测,中文也可正常换行. 添加   word-wrap: break-word;  后,正常换行. 若不希望换行,设为  white-space: nowra ...

  10. vs下载为0的问题

    问题描述:win10 下无法安装VS2017,visual studio installer下载进度始终为0,点击取消按钮后,也没有反应,visual studio installer也关闭不掉: 具 ...