安全测试是在软件产品开发基本完成时,验证产品是否符合 安全需求定义和 产品质量标准的过程。
安全测试目的
- 提升产品的安全质量;
- 尽量在发布前找到安全问题予以修补降低成本;
- 度量安全;
- 验证安装在系统内的保护机制能够在实际应用中对系统进行保护,使其不被非法入侵,不收各种因素干扰;
与普通测试区别
测试维度 | 普通测试 | 安全测试 |
---|---|---|
目标 | 测试以发现功能缺陷 | 以发现安全隐患为目标 |
假设条件 | 测试假设导致问题的数据是用户不小心造成的,或者业务代码存在缺陷 | 安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径 |
思考域 | 测试以系统所具有的功能为思考域 | 安全测试测试域不但包括系统的功能,还有系统的机制、外部环境、应用与数据、自身安全风险与安全属性等 |
问题发现模式 | 以违反功能定义为判断依据 | 安全测试违反权限与能力的约束为判断依据 |
与渗透测试区别
测试维度 | 渗透测试 | 安全测试 |
---|---|---|
出发点 | 渗透测试是以成功入侵系统,证明系统存在安全问题为出发点 | 安全测试是以发现系统所有可能的安全隐患为出发点 |
视角 | 渗透测试是以攻击者的角度来看待和思考问题 | 安全测试则是站在防护者角度思考问题,尽量发现所有可能被攻击者里用的安全隐患,并指导其修复 |
覆盖性 | 渗透测试只选取几个点作为测试目标 | 安全测试是在分析系统架构并找出系统所有可能的攻击界面后,进行的具有完备性的测试 |
成本差异 | 渗透测试要点较少,成本相对较低 | 安全测试需要对系统的功能、系统所采用的的技术以及系统中架构等进行分析,所有比较渗透测试需要投入更多的时间和人力 |
解决方案 | 渗透测试无法提供有针对性的解决方案 | 安全测试会站在开发者角度分析问题的成因,提供更有效的解决方案 |
安全测试应用分类
安全测试分类如下
- API安全测试
- APP安全测试
- Web安全测试
不同产品类型安全测试功能和测试方向也不一样
API 安全测试
1、API安全测试要点:
HTTP
/HTTPS
嗅探、会话劫持- 客户端证书有效性
XSS
/CSRF
/XXE
JSON
劫持- 参数篡改
- 重放攻击
- 权限限制错误:越权访问
API
访问频率限制错误API
Dos
: 针对 API接口的 Dos 攻击,如:炸弹攻击、批量注册
2、API安全测试工具
- Postman
- Fuzzapi
- Astra : API自动化安全测试工具
Web安全测试
1、Web安全测试要点如下:
- 权限控制
SQL
注入URL
安全测试XSS
(跨脚本攻击)CSRF
(跨站请求伪造)URL
跳转漏洞
2、Web安全测试工具:
- burpsuite
- Nikto
- WebInspect
- AppScan
APP安全测试
1、APP的安全测试点如下:
- 代码反编译
- 中间人攻击(
MITM
攻击) - 组件暴漏
- 越权漏洞
- 敏感信息泄露漏洞
- 数据安全
2、App 安全测试工具集:
- dex2jar(反编译)
- JD-GUI(反编译)
- apktool(反编译)
- Drozer(组件暴漏)
- Charles(抓包)
- DB Browser for SQLite (数据安全)
安全测试要点
信息收集测试
- 搜索引擎信息收集
- web 服务器指纹识别
- web 服务器元文件信息泄露
- 枚举 web 服务器的应用
- 注释和元数据信息泄露
- 识别应用的入口
- 映射应用程序的执行路径
- 识别 web 应用框架
- 识别 web 应用程序
- 映射应用架构
配置管理测试
- 网络和基础设施配置测试
- 应用平台配置测试
- 敏感信息文件扩展处理测试
- 对旧文件、备份和未被引用文件的敏感信息的审查
- 枚举基础设施和应用程序管理界面
- HTTP 方法测试
- HTTP 强制安全传输测试
- RIA 跨域策略测试
身份管理测试
- 角色定义测试
- 用户注册流程测试
- 账户配置过程测试
- 账户枚举和可猜测的用户账户测试
- 弱的或未实施的用户策略测试
认证测试
- 凭证在加密通道中的传输测试
- 默认用户凭证测试
- 弱锁定机制测试
- 认证模式绕过测试
- 记忆密码功能存在威胁测试
- 浏览器缓存威胁测试
- 弱密码策略测试
- 弱安全问答测试
- 弱密码的更改或重设功能测试
- 在辅助信道中较弱认证测试
授权测试
- 目录遍历 / 文件包含测试
- 绕过授权模式测试
- 权限提升测试
- 不安全对象引用
会话管理测试
- 会话管理架构绕过测试
- Cookie 属性测试
- 会话固定测试
- 会话变量泄露测试
- 跨站请求伪造 CSRF 测试
输入验证测试
- 反射型跨站脚本测试
- 存储型跨站脚本测试
- HTTP 方法算改测试
- HTTP 参数污染测试
- SQL 注入测试
- LDAP 测试
- ORM 注入测试
- XML 注入测试
- SSI 注入测试
- XPath 注入测试
- IMAP / SMTP 注入测试
- 代码注入测试
- 缓冲区溢出测试
- 潜伏式漏洞测试
- HTTP 拆分 / 走私测试
错误处理测试
- 报错信息测试
- 堆栈轨迹测试
加密体系脆弱性测试
- SSL / TLS 若加密、传输层协议缺陷测试
- Padding Oracle 攻击测试
- 通过未加密信道发送敏感数据测试
业务逻辑测试
- 业务逻辑数据验证测试
- 伪造请求的测试
- 完整性检查测试
- 处理耗时测试
- 功能使用次数限制
- 工作流程逃逸的测试
- 防御应用程序滥用测试
- 意外文件类型上传测试
- 恶意文件上传测试
客户端测试
- 基于DOM 的跨站脚测试
- JavaScript 执行测试
- HTML 注入测试
- 客户端 URL 重定向测试
- CSS 注入测试
- 客户端资源处理测试
- 跨域资源共享测试
- 跨站 Flash 测试
- 点击劫持测试
- webSocket 测试
- web 消息测试
- 本地存储测试