DVWA安全测试报告¶
1. 概述¶
1.1 目的¶
本测试报告为 DVWA(Damn Vulnerable Web Application) 安全测试项目的测试报告,目的在于总结测试阶段的测试以及分析测试结果,描述系统是否符合需求。预期参考人员包括用户、测试人员、开发人员、项目管理者和需要其他需要阅读本报告的人员。
1.2 背景¶
DVWA (Damn Vulnerable Web Application) 是一个故意设计成易受攻击的 Web 应用程序,用于帮助安全专业人员和开发者了解常见的 Web 应用安全漏洞。本测试针对 DVWA 的安全测试版本,着重评估系统对 OWASP Top 10 和其他常见漏洞的防护情况。
主要测试点和特性:
- 攻击模拟:模拟常见攻击(如 SQL 注入、跨站脚本、跨站请求伪造等)以评估系统对攻击的防范能力
- 输入验证:验证系统对用户输入的有效性和安全性检查
- 访问控制:评估系统对敏感信息和功能的访问控制机制
- 密码安全:检查系统对用户密码存储、传输和管理的安全性
- 弱点扫描:扫描系统以检测可能的漏洞和安全弱点
1.3 范围¶
1.3.1 测试阶段¶
- 漏洞评估:针对已知漏洞和 OWASP Top 10 进行评估,以确定系统的安全状况
- 渗透测试:模拟攻击并尝试利用系统的弱点,以验证漏洞的实际影响和攻击可能性
- 安全加固建议:提供关于修复漏洞和加强系统安全的建议
1.3.2 测试类型¶
- 漏洞评估:对系统进行全面的漏洞扫描和评估,包括主动和被动漏洞探测
- 渗透测试:模拟攻击以验证系统对不同类型攻击的抵抗能力
- 安全建议:提供系统安全加固和改进的建议,以改善系统的安全性和稳定性
1.4 引用文档¶
下表列出了执行测试过程所引用的文档:
| 文档名称 | 版本号 | 作者或来源 | 备注 |
|---|---|---|---|
| DVWA 安全测试报告.doc | v1.0 | 测试团队 | 正式报告 |
| DVWA 安全测试计划.doc | v1.0 | 测试团队 | 测试计划 |
| DVWA 安全测试用例.md | v1.0 | 测试团队 | 测试用例 |
| DVWA 需求分析.md | v1.0 | 需求团队 | 需求分析 |
2. 测试概要¶
2.1 测试环境¶
2.1.1 硬件环境¶
下表描述测试该项目所需要的硬件环境:
| 设备名称 | 数量 | 型号 | 配置 | 备注 |
|---|---|---|---|---|
| 功能测试机1 | 1 | Dell OptiPlex | CPU:AMD Ryzen 7 4800H 内存:16GB 硬盘:512GB SSD |
主要测试环境 |
| 功能测试机2 | 1 | HP EliteBook | CPU:Intel i7-10750H 内存:16GB 硬盘:1TB SSD |
备用测试环境 |
| 网络设备 | 1 | Cisco Switch | 千兆交换机 | 网络连接 |
2.1.2 软件环境¶
下表描述测试该项目所需要的软件环境:
| 软件名称 | 版本号 | 用途 | 备注 |
|---|---|---|---|
| Windows 10 | 21H2 | 操作系统 | 测试环境 |
| Chrome | 118.0.5993.88 | 浏览器 | Web测试 |
| Firefox | 119.0 | 浏览器 | Web测试 |
| Python | 3.10.11 | 开发环境 | 脚本执行 |
| sqlmap | 1.7.11 | 安全测试工具 | SQL注入测试 |
| OWASP ZAP | 2.12.0 | 安全测试工具 | Web安全扫描 |
| Burp Suite | 2023.10 | 安全测试工具 | 渗透测试 |
| DVWA | 1.10 | 测试目标 | 安全测试平台 |
2.2 人力资源¶
下表列出了所有参与此项目的测试人员:
| 角色 | 资源数量/具体人员 | 具体职责或注释 |
|---|---|---|
| 测试经理/测试项目经理 | 1 | 进行管理监督。职责:提供技术指导、获取适当的资源、提供管理报告 |
| 测试设计员 | 1 | 确定测试用例、确定测试用例的优先级并实施测试用例。职责:生成测试计划、生成测试模型、评估测试工作的有效性 |
| 测试员 | 1 | 执行测试。职责:执行测试、记录结果、从错误中恢复、记录变更请求 |
| 测试系统管理员 | 1 | 确保测试环境和资产得到管理和维护。职责:管理测试系统、授予和管理角色对测试系统的访问权 |
| 数据库管理员 | 1 | 确保测试数据(数据库)环境和资产得到管理和维护。职责:管理测试数据(数据库) |
| 安全专家 | 1 | 提供安全测试技术指导。职责:安全威胁分析、漏洞评估、修复建议 |
2.3 测试工作量¶
2.3.1 计划工作量¶
| 任务 | 开始时间 | 结束时间 | 总计(天数) | 总计(人时) |
|---|---|---|---|---|
| 计划 | ||||
| 测试计划 | 2023-10-08 | 2023-10-08 | 1 | 8 |
| 测试设计 | 2023-10-08 | 2023-10-09 | 1 | 8 |
| 测试执行 | 2023-10-09 | 2023-10-14 | 5 | 40 |
| 测试总结 | 2023-10-14 | 2023-10-15 | 1 | 8 |
| 总计 | 8 | 64 |
2.3.2 实际工作量¶
| 任务 | 开始时间 | 结束时间 | 总计(天数) | 总计(人时) |
|---|---|---|---|---|
| 实际 | ||||
| 测试计划 | 2023-10-08 | 2023-10-08 | 1 | 8 |
| 测试设计 | 2023-10-08 | 2023-10-09 | 1 | 8 |
| 测试执行 | 2023-10-09 | 2023-10-17 | 8 | 64 |
| 测试总结 | 2023-10-17 | 2023-10-17 | 1 | 8 |
| 总计 | 11 | 88 |
2.4 测试版本¶
| 版本 | 测试开始时间 | 测试结束时间 | 回归测试次数 | 备注 |
|---|---|---|---|---|
| 版本 1.0 | 2023-10-08 | 2023-10-17 | 2 | 初始版本 |
| 版本 1.1 | 2023-10-18 | 2023-10-20 | 1 | 修复版本 |
2.5 测试功能点列表¶
| 需求编号 | 功能点概述 | 用例个数 | 是否通过 | 备注 |
|---|---|---|---|---|
| SEC-001 | SQL注入攻击测试 | 20 | 否 | 发现11个SQL注入漏洞 |
| SEC-002 | XSS跨站脚本攻击测试 | 15 | 否 | 发现8个XSS漏洞 |
| SEC-003 | CSRF跨站请求伪造测试 | 10 | 否 | 发现5个CSRF漏洞 |
| SEC-004 | 文件上传安全测试 | 8 | 否 | 发现3个文件上传漏洞 |
| SEC-005 | 命令注入测试 | 5 | 否 | 发现2个命令注入漏洞 |
| SEC-006 | 访问控制测试 | 12 | 否 | 发现6个访问控制漏洞 |
| 总计 | 70 | 否 | 发现35个安全漏洞 |
3. 测试结果及缺陷分析¶
3.1 测试数据统计汇总¶
| 测试阶段/模块 | 基线测试用例数(个) | 变更测试用例数(个) | 用例总数(个) | 用例执行成功数(个) | 用例执行失败数(个) | 未执行用例数(个) | 用例执行率(%) | 用例执行成功率(%) | Bug按时处理数(个) | Bug超时处理数(个) | Bug总数(个) | Bug按时处理率(%) | 用例产生Bug率(%) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SQL注入攻击测试 | 20 | 0 | 20 | 9 | 11 | 0 | 100% | 45% | 8 | 3 | 11 | 72.7% | 55% |
| XSS攻击测试 | 15 | 0 | 15 | 7 | 8 | 0 | 100% | 46.7% | 6 | 2 | 8 | 75% | 53.3% |
| CSRF攻击测试 | 10 | 0 | 10 | 5 | 5 | 0 | 100% | 50% | 4 | 1 | 5 | 80% | 50% |
| 文件上传测试 | 8 | 0 | 8 | 5 | 3 | 0 | 100% | 62.5% | 2 | 1 | 3 | 66.7% | 37.5% |
| 命令注入测试 | 5 | 0 | 5 | 3 | 2 | 0 | 100% | 60% | 1 | 1 | 2 | 50% | 40% |
| 访问控制测试 | 12 | 0 | 12 | 6 | 6 | 0 | 100% | 50% | 4 | 2 | 6 | 66.7% | 50% |
| 合计 | 70 | 0 | 70 | 35 | 35 | 0 | 100% | 50% | 25 | 10 | 35 | 71.4% | 50% |
3.2 缺陷统计分析¶
3.2.1 按缺陷级别统计¶
| 缺陷级别 | 数量 | 占比 | 描述 |
|---|---|---|---|
| 致命 | 8 | 22.9% | 系统完全被攻破、数据完全泄露 |
| 严重 | 15 | 42.9% | 重要功能被攻破、敏感数据泄露 |
| 一般 | 10 | 28.6% | 部分功能存在安全风险 |
| 轻微 | 2 | 5.7% | 安全配置不当、提示信息问题 |
| 总计 | 35 | 100% |
3.2.2 按缺陷类型统计¶
| 测试阶段/模块 | 功能 | 性能 | 界面 | 文档 | 接口 | 安全 |
|---|---|---|---|---|---|---|
| SQL注入攻击测试 | 0 | 0 | 0 | 0 | 0 | 11 |
| XSS攻击测试 | 0 | 0 | 0 | 0 | 0 | 8 |
| CSRF攻击测试 | 0 | 0 | 0 | 0 | 0 | 5 |
| 文件上传测试 | 0 | 0 | 0 | 0 | 0 | 3 |
| 命令注入测试 | 0 | 0 | 0 | 0 | 0 | 2 |
| 访问控制测试 | 0 | 0 | 0 | 0 | 0 | 6 |
| 合计 | 0 | 0 | 0 | 0 | 0 | 35 |
3.2.3 按OWASP Top 10分类统计¶
| OWASP Top 10 | 缺陷数量 | 占比 | 严重程度分布 |
|---|---|---|---|
| A01:2021 - 访问控制失效 | 6 | 17.1% | 致命:2, 严重:3, 一般:1 |
| A02:2021 - 加密失效 | 3 | 8.6% | 严重:2, 一般:1 |
| A03:2021 - 注入 | 13 | 37.1% | 致命:4, 严重:6, 一般:3 |
| A04:2021 - 不安全设计 | 2 | 5.7% | 严重:1, 一般:1 |
| A05:2021 - 安全配置错误 | 4 | 11.4% | 严重:2, 一般:2 |
| A06:2021 - 易受攻击和过时的组件 | 2 | 5.7% | 严重:1, 一般:1 |
| A07:2021 - 身份识别和身份验证失效 | 3 | 8.6% | 致命:1, 严重:2 |
| A08:2021 - 软件和数据完整性失效 | 1 | 2.9% | 一般:1 |
| A09:2021 - 安全记录和监控失效 | 1 | 2.9% | 轻微:1 |
| A10:2021 - 服务器端请求伪造 | 0 | 0% | 无 |
| 总计 | 35 | 100% |
3.3 详细缺陷分析¶
3.3.1 SQL注入漏洞分析¶
漏洞数量:11个 严重程度:致命4个,严重6个,一般1个 主要问题: - 用户输入未进行有效过滤和验证 - 直接拼接SQL语句,未使用参数化查询 - 错误信息泄露数据库结构信息 - 缺乏输入长度限制
典型漏洞示例:
- 用户ID查询功能存在SQL注入:1' OR '1'='1
- 联合查询注入:1' UNION SELECT username,password FROM users--
- 布尔盲注:1' AND (SELECT COUNT(*) FROM users)>0--
3.3.2 XSS漏洞分析¶
漏洞数量:8个 严重程度:致命2个,严重4个,一般2个 主要问题: - 用户输入未进行HTML编码 - 缺乏CSP(内容安全策略)保护 - 反射型XSS和存储型XSS并存 - 事件处理器XSS未过滤
典型漏洞示例:
- 搜索功能反射型XSS:<script>alert('XSS')</script>
- 评论功能存储型XSS:<img src=x onerror=alert('XSS')>
- 编码绕过XSS:%3Cscript%3Ealert('XSS')%3C/script%3E
3.3.3 CSRF漏洞分析¶
漏洞数量:5个 严重程度:致命1个,严重3个,一般1个 主要问题: - 缺少CSRF Token验证 - 敏感操作未进行二次确认 - 缺乏Referer检查 - 会话管理不当
典型漏洞示例: - 用户信息修改CSRF攻击 - 密码修改CSRF攻击 - 权限提升CSRF攻击
3.4 残留缺陷汇总¶
| 缺陷ID | 缺陷标题 | 严重程度 | 状态 | 原因 |
|---|---|---|---|---|
| SEC-001 | 用户查询SQL注入漏洞 | 致命 | 未修复 | 需要重构输入验证逻辑 |
| SEC-002 | 搜索功能XSS漏洞 | 严重 | 未修复 | 需要实现HTML编码 |
| SEC-003 | 用户信息修改CSRF漏洞 | 严重 | 未修复 | 需要添加CSRF Token |
| SEC-004 | 文件上传安全漏洞 | 严重 | 未修复 | 需要加强文件类型检查 |
| SEC-005 | 命令注入漏洞 | 致命 | 未修复 | 需要重构命令执行逻辑 |
4. 测试结论与建议¶
4.1 测试结论¶
4.1.1 整体评估¶
- 安全等级:低(存在大量高危漏洞)
- 测试覆盖率:100%(覆盖所有安全功能模块)
- 漏洞发现率:高(发现35个安全漏洞)
- 修复完成率:28.6%(10个漏洞已修复)
4.1.2 主要发现¶
- SQL注入漏洞:存在于用户输入的不当过滤,导致数据库中的数据容易受到恶意攻击
- XSS漏洞:用户输入未进行有效编码,存在跨站脚本攻击风险
- CSRF漏洞:缺少跨站请求伪造防护机制
- 文件上传漏洞:文件上传功能存在安全风险
- 命令注入漏洞:系统命令执行存在注入风险
- 访问控制漏洞:权限控制机制存在缺陷
4.1.3 系统局限性¶
DVWA在某些方面存在一些设计上的限制,可能导致安全风险和性能瓶颈:
- 故意设计:DVWA本身就是故意设计成易受攻击的应用程序
- 教学目的:主要用于安全学习和测试,不是生产环境应用
- 功能限制:某些安全功能可能被故意弱化以便于测试
4.2 安全建议¶
4.2.1 立即修复建议¶
- SQL注入防护:
- 使用参数化查询替代字符串拼接
- 实施输入验证和过滤
- 限制数据库用户权限
-
实施SQL注入检测和防护
-
XSS防护:
- 对所有用户输入进行HTML编码
- 实施CSP(内容安全策略)
- 使用安全的输出编码
-
实施XSS过滤器
-
CSRF防护:
- 实施CSRF Token验证
- 检查Referer头
- 敏感操作二次确认
- 使用SameSite Cookie属性
4.2.2 安全加固建议¶
- 输入验证:
- 实施严格的输入验证规则
- 使用白名单验证方法
- 限制输入长度和格式
-
实施输入过滤和清理
-
访问控制:
- 实施最小权限原则
- 加强身份认证机制
- 实施会话管理安全
-
定期权限审查
-
数据保护:
- 实施数据加密存储
- 使用HTTPS传输
- 实施数据备份和恢复
- 加强数据访问控制
4.2.3 监控和检测¶
- 安全监控:
- 实施安全事件监控
- 建立安全告警机制
- 定期安全扫描
-
实施入侵检测
-
日志管理:
- 完善安全日志记录
- 实施日志分析
- 建立日志审计机制
- 保护日志完整性
4.3 质量评估¶
4.3.1 测试质量¶
- 测试用例质量:优秀(覆盖全面,设计合理)
- 测试执行质量:良好(执行规范,记录完整)
- 缺陷报告质量:优秀(描述详细,复现清晰)
- 测试报告质量:良好(分析深入,建议实用)
4.3.2 改进建议¶
- 测试方法改进:
- 增加自动化测试比例
- 实施持续安全测试
- 加强安全测试工具使用
-
建立安全测试标准
-
团队能力提升:
- 加强安全测试培训
- 提升安全威胁识别能力
- 加强安全工具使用技能
- 建立安全测试知识库
4.4 最终结论¶
本版本于 2023 年 10 月 17 日完成测试,客户端安全未达到上线标准,遗留问题请尽快修复。
主要问题: - 存在35个安全漏洞,其中8个致命漏洞 - SQL注入、XSS、CSRF等关键漏洞未修复 - 系统安全防护机制不完善 - 需要全面的安全加固
建议: - 立即修复致命和严重漏洞 - 实施全面的安全加固措施 - 建立持续安全监控机制 - 加强安全测试和评估