Damn Vulnerable Web Application (DVWA) 安全测试实践指南
2026-04-02 09:34:51作者:农烁颖Land
核心功能解析:构建安全测试学习环境
认识DVWA:安全测试的"靶场"工具
Damn Vulnerable Web Application(简称DVWA)是一个特意设计的漏洞练习平台,它通过模拟真实网站中常见的安全缺陷,帮助安全从业者提升漏洞发现与利用技能。与真实网站不同,DVWA的"不安全"特性是经过精心设计的,所有漏洞都处于可控环境中,非常适合安全测试初学者进行实战训练。
核心文件功能速查表
| 文件路径 | 功能描述 | 安全测试价值 |
|---|---|---|
| index.php | 应用入口页面,显示功能菜单 | 测试初始访问流程与权限控制 |
| login.php | 用户认证界面 | 练习账号爆破与会话劫持 |
| config/config.inc.php.dist | 配置模板文件 | 学习数据库连接与安全参数设置 |
| vulnerabilities/ | 各类型漏洞测试模块 | SQL注入、XSS等漏洞实战场景 |
| database/ | 数据库初始化脚本 | 理解应用与数据层交互逻辑 |
Docker部署优势:快速搭建隔离测试环境
DVWA提供容器化部署方案,通过Docker可以在3分钟内完成从环境配置到应用启动的全过程。这种方式不仅避免了复杂的依赖安装,还能确保测试环境与主机系统完全隔离,有效降低误操作风险。
图1:Docker Desktop中运行的DVWA容器状态界面,显示两个运行中的服务组件
快速上手:10分钟启动安全测试之旅
获取项目代码:2步完成本地部署
- 克隆代码仓库到本地目录
git clone https://gitcode.com/gh_mirrors/dv/DVWA cd DVWA - 启动Docker容器集群
⚠️安全提示:请确保在独立的测试网络环境中运行,禁止直接部署在公网可访问的服务器上。docker-compose up -d
初始配置:3步完成环境准备
- 复制配置模板创建实际配置文件
cp config/config.inc.php.dist config/config.inc.php - 访问http://localhost:80 打开DVWA安装页面
- 点击"Create / Reset Database"按钮完成数据库初始化
登录系统:使用默认凭证进入测试平台
- 默认用户名:admin
- 默认密码:password
- 登录后系统自动跳转至安全级别设置页面,建议从"Low"级别开始练习
图2:DVWA容器运行日志界面,显示应用启动过程与网络请求记录
深度配置:定制你的漏洞练习环境
新手友好配置模板
以下是适合初学者的基础配置文件示例(config/config.inc.php):
<?php
$_DVWA = array();
$_DVWA['db_server'] = 'db'; // Docker环境数据库地址
$_DVWA['db_database'] = 'dvwa'; // 数据库名称
$_DVWA['db_user'] = 'dvwa'; // 数据库用户名
$_DVWA['db_password'] = 'p@ssw0rd'; // 数据库密码
$_DVWA['default_security_level'] = 'low'; // 默认安全级别
$_DVWA['disable_authentication'] = false; // 禁用认证(测试用)
?>
安全级别详解:从入门到精通
DVWA提供4级安全强度设置,对应不同难度的漏洞利用场景:
| 安全级别 | 防护强度 | 适合人群 | 核心特点 |
|---|---|---|---|
| Low | 无防护 | 初学者 | 原始漏洞,无任何过滤 |
| Medium | 基础防护 | 进阶学习者 | 简单过滤,可通过绕过技术突破 |
| High | 强化防护 | 安全从业者 | 复杂过滤机制,需高级利用技巧 |
| Impossible | 完全防护 | 安全开发人员 | 展示安全编码最佳实践 |
高级参数对照表
| 参数名称 | 功能说明 | 推荐设置 |
|---|---|---|
| db_server | 数据库服务器地址 | Docker环境使用"db" |
| db_port | 数据库端口 | 默认3306 |
| recaptcha_public_key | 验证码公钥 | 测试环境可留空 |
| allow_url_include | PHP远程文件包含开关 | 仅测试时开启 |
| log_level | 日志记录级别 | 调试时设为DEBUG |
典型使用场景:实战演练安全测试技能
场景一:SQL注入漏洞测试
目标:通过构造恶意输入获取数据库敏感信息
操作步骤:
- 进入"SQL Injection"模块(vulnerabilities/sqli/)
- 在用户ID输入框中提交测试 payload:
1' OR '1'='1 - 观察返回结果,分析数据库查询逻辑
- 使用联合查询获取更多数据:
1' UNION SELECT 1,version(),3 --
结果:成功获取数据库版本、用户名等信息,理解SQL注入原理与基本利用方法。
场景二:文件上传漏洞利用
目标:绕过文件上传限制并执行恶意代码
操作步骤:
- 进入"File Upload"模块(vulnerabilities/upload/)
- 创建包含PHP代码的测试文件(如info.php)
- 尝试直接上传,观察服务器过滤机制
- 根据反馈修改文件名(如info.php.jpg)或内容绕过检测
结果:成功上传并执行PHP文件,掌握文件上传漏洞的常见绕过技巧与防御方法。
风险声明
⚠️ 重要安全提示:DVWA包含故意设计的安全漏洞,严禁在生产环境或连接公网的服务器上部署。建议在完全隔离的虚拟机或容器环境中使用,并采取以下安全措施:
- 仅在本地网络中运行
- 定期清理测试数据
- 完成练习后及时销毁环境
- 不要存储任何真实敏感信息
本工具仅用于安全教育目的,使用者应遵守当地法律法规,未经授权不得对任何真实系统进行测试。因不当使用本工具造成的任何损失,由使用者自行承担责任。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust098- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
项目优选
收起
暂无描述
Dockerfile
703
4.51 K
Ascend Extension for PyTorch
Python
567
693
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
550
98
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
957
955
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
411
338
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.6 K
940
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.08 K
566
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
128
210
暂无简介
Dart
948
235
Oohos_react_native
React Native鸿蒙化仓库
C++
340
387