阅读需知
这是总结的是一些通用安全测试用例,但安全测试远不如此,这些用例只能算入门。
漏洞扫描
定义:对系统的URL进行漏洞扫描,扫描系统开放的端口、服务和存在的漏洞
前置条件 | 步骤 | 结果 |
我们公司用绿盟扫描器 | 登录扫描器进行WEB扫描 | |
在漏洞扫描中选择WEB扫描,输入待扫描的URL地址 | 查看扫描报告是否有漏洞,其中高风险和中风险漏洞需要修复 | |
查看扫描报告是否有漏洞,其中高风险和中风险漏洞需要修复 | 1、确认高风险和中风险漏洞都修复完成 2、修复风险后需注意不要影响系统原先功能的正常性,建议做影响范围的功能回归测试,保证系统正常 | |
定期检查 | 同一个URL,3个月内扫描一次 |
明文传输
定义:对系统传输过程中的敏感内容是明文&密文进行检查
系统传输敏感信息场景:登录、注册、支付、修改密码
系统敏感信息:登录密码、支付金额、注册的手机号码、身份证、邮箱等信息
步骤 | 结果 |
对传输敏感信息场景进行抓包 | |
分析其数据包中的相关敏感字段是否为明文 | 分析其数据包中的相关敏感字段是否为明文 |
越权访问
定义:测试能否通过URL地址获取管理员及其他用户信息
1、出现admin、user、system、pwd等敏感目录的URL地址
如:https://walmon-competition.gz.cvte.cn/competition_api/admin/v1/user/role_user_unit
2、垂直越权场景:当系统存在多个不同权限的管理员时,低权限的管理员不能访问或操作到高权限的管理的资源
3、水平越权场景:当系统存在多个需要登录用户,A用户不能访问B用户的资源
步骤 |
检查URL是否存在admin/user/system/pwd等敏感目录 |
垂直越权: 1.使用高权限的管理员登录后,访问一些他独有的资源,或者进行一些特权操作,记录下接口信息 2.退出登录后,使用低权限用户登录,重新执行步骤1记录下来的接口,查看是否能够操作成功 |
水平越权: 1. 使用A用户登录后,打开A用户所独有的个人资源的URL或者进行一些修改操作,记录下接口信息 2. 退出登录后,使用B用户登录,重新执行步骤1记录下的接口,看是否能够访问或者操作成功。 |
反射性跨站脚本
定义:测试系统是否对输入进行过滤或转移,规避用户通过跨站脚本攻击造成风险
跨站脚本攻击场景:搜索框、输入框、留言、上传文件
步骤 | 结果 |
在系统的URL地址后面,输入测试语句: <img src=x οnerrοr=alert(1)> <script>alert("1") </script>; | 是否会有弹窗 |
在系统的搜索框、输入框、留言,输入测试语句: 同上 | 像留言、评论、公告等输入内容都会存到数据库 前端查看对应内容时是否会有弹窗 |
在上传文件功能中,往需要导入的文件中输入测试语句: 同上 |
文件上传
定义:测试能否上传木马、病毒、色情图片等恶意图片
步骤 | 结果 |
生成一个测试的恶意文件,如一个txt文档,内容为<img src=x οnerrοr=alert(1)> 文件名字最好为英文,如test | |
点击上传功能,抓包拦截上传接口,将上传的文件后缀修改为html文件(访问该html文件) | 可正常执行恶意语句,则有错 |
越权文件下载
定义:测试URL中是否包含文件名或文件目录,尝试提交参数值查看是否可下载或读取其他目录的文件内容
文件下载场景:文件下载、文件读取功能
测试url:包含文件名或文件目录的url
步骤 | 结果 |
进行文件下载操作,找到文件下载路径 http://www.example.com/donwload.jsp?filename=test12789.pdf | |
修改下载路径中的文件参数值,检查访问效果 http://www.exbugmpjsp?filename=test.pdf | 如果可以下载修改后的文件,则证明存在漏洞 |
修改下载路径,通过../对路径进行跳转尝试下载其他目录下的文件 http://www.example.com/donwload.jsp?filename=../../WEB-INF/web.xml | 如果可以下载web.xm文件,则有bug |
短信/邮箱验证
定义:测试短信、邮箱验证方式是否进行安全设置
触发短信、邮箱验证码验证相关的场景:找回或重置密码、注册、邀请注册、引流活动分享
步骤 | 结果 |
操作密码重置、找回密码等功能,触发跳转到输入手机号或邮箱的页面 | |
输入测试手机号或邮箱,看能否一直连续无间隔 发送短信验证码,造成短信轰炸 | 短信轰炸若存在,及证明存在该漏洞,报BUG 触发短信、邮件发送的前提必须有安全验证(验证码、滑动验证等),防止短信被刷 |
如果有对应的验证设置,输入手机号、邮箱,同步开始抓包,查看数据包能否抓取到发送的验证码信息 | 如果可以抓取到,则验证码可以被修改,存在漏洞,报BUG |
鉴权缺失
定义:测试需要登录、鉴权才可操作的系统中可修改资源的相关接口,鉴权是否可靠
测试对象:可以修改资源的接口
步骤 | 结果 |
定义:测试需要登录、鉴权才可操作的系统中可修改资源的相关接口,鉴权是否可靠 测试对象:可以修改资源的接口 | 1、如果参数都是完全可以被预期的话。即除了鉴权的cookie 外,header中和body表单中的所有参数都可以被事先知道。那么表明存在漏洞。报BUG 2、如果header或者body中有随机的token或者需要验证码之类的,则不存在漏洞 |
抓包、分析接口的参数,观察鉴权参数,如cookie 或者access token等 | 1、如果观察cookie 或者access token,可掌握其规律,如为某固定单一不变的值或使用用户ID作为cookie 的值,会话控制信息可以被猜测,鉴权不可靠,表明存在漏洞。报BUG |
密码健壮性
定义:测试密码、验证码验证的方式是否可靠,是否可以被暴力猜测直至命中
步骤 | 结果 |
操作输入密码、验证码的场景,使用抓包工具,修改接口中的密码、验证码,多次尝试输入错误的验证码 | 可以被暴力猜测直至命中,则存在漏洞 |
使用工具重复请求接口(类似登录接口)多次(密码错误、验证码错误情况下、100次以上 | 使用工具重复请求接口(类似登录接口)多次(密码错误、验证码错误情况下、100次以上 |
检查密码设置、验证码生成的业务逻辑设计 | 1、若设置密码时就未考虑密码复杂程度,允许用户设置弱密码 (如设置账号必须满足数字+字母+特殊字符,8位以上。规避123456、aaaaaaa、qwerty等弱密码),用户账号安全可能存在漏洞,可反馈给研发进行整改,推进账号安全 2、若验证码生成逻辑简单,或者结果集合小,或为简单的图片验证,则可能存在漏洞,可反馈开发进行整改,尽量使用更安全的验证设计(如行为验证 ) |
对密码找回及修改密码功能,检查密码是否有权限管控,只能修改或设置自己的密码,规避通过该功能修改别人的密码 | 若可通过密码找回、修改密码、账号申诉等功能,修改其他人的账号密码,则存在漏洞,报BUG |
数据安全
定义:检查系统中敏感数据的存储是否安全
敏感数据:密码、身份证、家庭住址、银行卡号、手机号、真实姓名
步骤 |
检查敏感数据是否加密存储,检查对应的数据表(mysql、redis)数据记录,防止拖库后信息泄露 |
检查敏感数据在操作界面展示上是否脱敏 如:密码显示隐藏选项,手机号、身份证仅显示首尾等134****4250,220**********2129 |
检查数字设置安全,是否限制输入负数或超大数额 |