DVWA安全测试用例¶
1. 安全测试概述¶
1.1 测试目标¶
DVWA安全测试的目标是通过系统性的安全测试,发现和验证DVWA平台中的各种安全漏洞,包括但不限于SQL注入、XSS、CSRF、文件上传、命令注入等常见Web应用安全漏洞。
1.2 测试原则¶
- 完整性:覆盖所有安全威胁和攻击场景
- 有效性:每个测试用例都有明确的安全测试目标
- 可执行性:测试用例步骤清晰,结果可验证
- 可维护性:测试用例结构清晰,易于更新维护
- 安全性:测试过程本身要安全可控
1.3 测试方法¶
- 威胁建模:基于威胁模型设计测试用例
- 攻击树分析:基于攻击树设计测试路径
- 等价类划分:将攻击向量分为有效和无效等价类
- 边界值分析:测试安全边界的边界值
- 场景法:基于攻击场景设计测试用例
2. OWASP Top 10 安全测试用例¶
2.1 A01:2021 - 访问控制失效¶
2.1.1 权限绕过测试用例¶
| 用例编号 | 用例标题 | 优先级 | 威胁类型 | 前置条件 | 攻击向量 | 测试步骤 | 预期结果 | 设计方法 |
|---|---|---|---|---|---|---|---|---|
| SEC_AUTH_BYPASS_001 | 直接URL访问测试 | P0 | 访问控制失效 | 1. 系统正常运行 2. 用户未登录 |
直接访问需要登录的页面URL | 1. 打开浏览器 2. 直接访问管理员页面URL 3. 观察系统响应 |
1. 系统检测用户权限 2. 重定向到登录页面 3. 不显示敏感信息 |
场景法 |
| SEC_AUTH_BYPASS_002 | 权限提升测试 | P0 | 访问控制失效 | 1. 系统正常运行 2. 普通用户已登录 |
尝试访问管理员功能 | 1. 使用普通用户登录 2. 尝试访问管理员功能 3. 观察系统响应 |
1. 系统检查用户权限 2. 拒绝访问管理员功能 3. 显示权限不足提示 |
等价类划分 |
| SEC_AUTH_BYPASS_003 | 会话固定攻击测试 | P1 | 访问控制失效 | 1. 系统正常运行 2. 用户已登录 |
使用固定会话ID | 1. 获取用户会话ID 2. 使用固定会话ID访问系统 3. 观察系统行为 |
1. 系统检测会话异常 2. 要求重新登录 3. 生成新的会话ID |
攻击树分析 |
2.2 A03:2021 - 注入¶
2.2.1 SQL注入测试用例¶
| 用例编号 | 用例标题 | 优先级 | 威胁类型 | 前置条件 | 攻击向量 | 测试步骤 | 预期结果 | 设计方法 |
|---|---|---|---|---|---|---|---|---|
| SEC_SQL_USER_001 | 用户ID SQL注入测试 | P0 | SQL注入 | 1. 系统正常运行 2. 用户已登录 |
1' OR '1'='1 |
1. 进入用户查询页面 2. 在用户ID输入框输入: 1' OR '1'='13. 点击查询按钮 |
1. 系统拒绝恶意输入 2. 显示错误提示 3. 不返回敏感数据 |
等价类划分 |
| SEC_SQL_USER_002 | 用户ID联合查询注入 | P0 | SQL注入 | 1. 系统正常运行 2. 用户已登录 |
1' UNION SELECT username,password FROM users-- |
1. 进入用户查询页面 2. 在用户ID输入框输入联合查询语句 3. 点击查询按钮 |
1. 系统拒绝恶意输入 2. 显示错误提示 3. 不返回用户密码 |
攻击树分析 |
| SEC_SQL_USER_003 | 用户ID布尔盲注测试 | P1 | SQL注入 | 1. 系统正常运行 2. 用户已登录 |
1' AND (SELECT COUNT(*) FROM users)>0-- |
1. 进入用户查询页面 2. 在用户ID输入框输入布尔盲注语句 3. 点击查询按钮 |
1. 系统拒绝恶意输入 2. 显示错误提示 3. 不泄露数据库结构信息 |
边界值分析 |
2.2.2 命令注入测试用例¶
| 用例编号 | 用例标题 | 优先级 | 威胁类型 | 前置条件 | 攻击向量 | 测试步骤 | 预期结果 | 设计方法 |
|---|---|---|---|---|---|---|---|---|
| SEC_CMD_PING_001 | Ping命令注入测试 | P0 | 命令注入 | 1. 系统正常运行 2. 用户已登录 3. 存在Ping功能 |
127.0.0.1; ls -la |
1. 进入Ping测试页面 2. 在IP地址输入框输入: 127.0.0.1; ls -la3. 点击Ping按钮 |
1. 系统过滤恶意命令 2. 只执行Ping命令 3. 不执行额外命令 |
等价类划分 |
| SEC_CMD_PING_002 | Ping命令管道注入 | P0 | 命令注入 | 1. 系统正常运行 2. 用户已登录 3. 存在Ping功能 |
127.0.0.1 \| whoami |
1. 进入Ping测试页面 2. 在IP地址输入框输入管道命令 3. 点击Ping按钮 |
1. 系统过滤恶意命令 2. 只执行Ping命令 3. 不执行管道后的命令 |
攻击树分析 |
2.3 XSS测试用例¶
2.3.1 反射型XSS测试用例¶
| 用例编号 | 用例标题 | 优先级 | 威胁类型 | 前置条件 | 攻击向量 | 测试步骤 | 预期结果 | 设计方法 |
|---|---|---|---|---|---|---|---|---|
| SEC_XSS_SEARCH_001 | 搜索框反射型XSS | P0 | XSS | 1. 系统正常运行 2. 用户已登录 |
<script>alert('XSS')</script> |
1. 进入搜索页面 2. 在搜索框输入: <script>alert('XSS')</script>3. 点击搜索按钮 |
1. 系统过滤恶意脚本 2. 显示转义后的内容 3. 不执行JavaScript代码 |
等价类划分 |
| SEC_XSS_SEARCH_002 | 搜索框事件处理器XSS | P0 | XSS | 1. 系统正常运行 2. 用户已登录 |
<img src=x onerror=alert('XSS')> |
1. 进入搜索页面 2. 在搜索框输入事件处理器XSS 3. 点击搜索按钮 |
1. 系统过滤恶意脚本 2. 显示转义后的内容 3. 不执行事件处理器 |
攻击树分析 |
2.4 CSRF测试用例¶
2.4.1 CSRF攻击测试用例¶
| 用例编号 | 用例标题 | 优先级 | 威胁类型 | 前置条件 | 攻击向量 | 测试步骤 | 预期结果 | 设计方法 |
|---|---|---|---|---|---|---|---|---|
| SEC_CSRF_USER_001 | 用户信息修改CSRF | P0 | CSRF | 1. 系统正常运行 2. 用户已登录 3. 存在用户信息修改功能 |
<form action="http://target.com/update" method="POST"><input name="email" value="attacker@evil.com"></form><script>document.forms[0].submit()</script> |
1. 用户登录系统 2. 访问恶意网站 3. 恶意网站自动提交表单 4. 检查用户信息是否被修改 |
1. 系统验证CSRF Token 2. 拒绝跨站请求 3. 用户信息未被修改 |
场景法 |
2.5 文件上传测试用例¶
2.5.1 文件上传安全测试用例¶
| 用例编号 | 用例标题 | 优先级 | 威胁类型 | 前置条件 | 攻击向量 | 测试步骤 | 预期结果 | 设计方法 |
|---|---|---|---|---|---|---|---|---|
| SEC_FILE_UPLOAD_001 | 恶意脚本文件上传 | P0 | 文件上传漏洞 | 1. 系统正常运行 2. 用户已登录 3. 存在文件上传功能 |
创建包含PHP代码的图片文件 | 1. 进入文件上传页面 2. 选择恶意脚本文件 3. 点击上传按钮 |
1. 系统检测文件类型 2. 拒绝上传恶意文件 3. 显示安全提示 |
等价类划分 |
| SEC_FILE_UPLOAD_002 | 文件类型绕过测试 | P0 | 文件上传漏洞 | 1. 系统正常运行 2. 用户已登录 3. 存在文件上传功能 |
修改文件扩展名绕过检测 | 1. 创建恶意脚本文件 2. 修改文件扩展名为.jpg 3. 尝试上传文件 |
1. 系统检测文件内容 2. 拒绝上传恶意文件 3. 显示安全提示 |
边界值分析 |
3. 测试用例执行¶
3.1 执行策略¶
3.1.1 优先级执行¶
- P0级测试用例:优先执行,确保核心安全功能
- P1级测试用例:其次执行,确保重要安全功能
- P2级测试用例:最后执行,确保辅助安全功能
3.1.2 威胁类型执行¶
- SQL注入测试:先执行,确保数据安全
- XSS测试:其次执行,确保前端安全
- CSRF测试:再次执行,确保会话安全
- 文件上传测试:最后执行,确保文件安全
3.2 执行环境¶
3.2.1 测试环境¶
- 隔离环境:用于安全测试
- 沙箱环境:用于恶意代码测试
- 模拟环境:用于攻击模拟
- 生产环境:用于安全验证
3.2.2 环境配置¶
- 安全工具:安全测试工具配置
- 监控系统:安全监控配置
- 日志系统:安全日志配置
- 备份系统:数据备份配置
3.3 执行监控¶
3.3.1 进度监控¶
- 安全测试用例执行进度
- 安全测试用例通过率
- 安全测试用例失败率
- 安全测试覆盖率
3.3.2 安全监控¶
- 漏洞发现率
- 漏洞修复率
- 安全事件发生率
- 安全测试合规性
4. 测试用例管理¶
4.1 生命周期管理¶
4.1.1 创建阶段¶
- 根据安全需求文档设计测试用例
- 使用标准模板创建测试用例
- 设置合适的优先级和分类
- 进行安全专家评审
4.1.2 评审阶段¶
- 安全威胁覆盖完整性评审
- 攻击向量有效性评审
- 测试步骤安全性评审
- 预期结果准确性评审
4.1.3 维护阶段¶
- 安全威胁变化时更新测试用例
- 定期检查测试用例有效性
- 删除过时的测试用例
- 优化测试用例结构
4.2 质量管理¶
4.2.1 质量检查¶
- 测试用例覆盖所有安全威胁
- 测试用例包含所有必要元素
- 测试用例步骤完整清晰
- 预期结果明确可验证
4.2.2 质量改进¶
- 建立安全测试用例评审流程
- 定期进行质量评审
- 收集安全专家反馈意见
- 持续改进测试用例质量
5. 总结¶
DVWA安全测试用例涵盖了系统的核心安全威胁,通过系统性的安全测试用例设计,确保系统安全防护完整、威胁识别准确、漏洞修复及时。
安全测试用例设计遵循完整性、有效性、可执行性、可维护性和安全性原则,采用多种设计方法,确保测试用例覆盖全面、设计合理。
安全测试用例管理建立了完整的生命周期管理体系,包括创建、评审、维护、执行等各个环节,确保测试用例质量持续改进。
通过科学的安全测试用例执行策略和质量保证措施,为DVWA安全测试项目的质量保证提供了有力支撑,确保系统能够抵御各种安全威胁和攻击。