软件安全测试是评估和测试系统以发现系统及其数据的安全风险和漏洞的过程。没有通用术语,但出于我们的目的,我们将评估定义为分析和发现漏洞,而不尝试实际利用这些漏洞。我们将测试定义为发现和尝试利用漏洞。
安全测试通常根据要测试的漏洞类型或正在执行的测试类型进行任意分解。常见的突破是:
- 漏洞评估 -- 扫描和分析系统的安全问题。
- 渗透测试 -- 系统经过来自模拟恶意攻击者的分析和攻击。
- 运行时测试 -- 系统经过最终用户的分析和安全测试。
- 代码审查 -- 系统代码经过详细的审查和分析,专门寻找安全漏洞。
请注意,风险评估(通常作为安全测试的一部分列出)不包括在此列表中。这是因为风险评估实际上不是测试,而是分析不同风险(软件安全、人员安全、硬件安全等)的感知严重性以及针对这些风险的任何缓解步骤。
有关渗透测试的更多信息
渗透测试(渗透测试)的执行就好像测试人员是恶意的外部攻击者,其目标是闯入系统并窃取数据或进行某种拒绝服务攻击。
渗透测试的优点是更准确,因为它具有较少的误报(报告实际不存在的漏洞的结果),但运行起来可能很耗时。
渗透测试还用于测试防御机制、验证响应计划以及确认安全策略合规性。
自动渗透测试是持续集成验证的重要组成部分。它有助于在快速变化的环境中发现新的漏洞以及以前漏洞的回归,并且开发可能是高度协作和分布式的。
渗透测试过程
手动和自动渗透测试通常结合使用,以测试从服务器到网络、设备到端点的所有内容。本文档重点介绍 Web 应用程序或网站渗透测试。
渗透测试通常遵循以下阶段:
- 探索 -- 测试人员尝试了解正在测试的系统。这包括尝试确定正在使用哪些软件、存在哪些端点、安装了哪些补丁等。它还包括搜索站点以查找隐藏内容、已知漏洞和其他弱点迹象。
- 攻击 -- 测试人员试图利用已知或可疑的漏洞来证明它们的存在。
- 报告 -- 测试人员报告其测试结果,包括漏洞、漏洞利用方式、漏洞利用的难度以及漏洞利用的严重性。
渗透测试目标
渗透测试的最终目标是搜索漏洞,以便解决这些漏洞。它还可以验证系统是否容易受到已知类别或特定缺陷的影响;或者,对于已报告为已修复的漏洞,请验证系统是否不再容易受到该缺陷的影响。