当前位置: 首页 > news >正文

DVWA Web 漏洞靶场保姆级指南:5 分钟跑通,19 个模块带你练完 SQL 注入和 XSS

DVWA Web 漏洞靶场保姆级指南:5 分钟跑通,19 个模块带你练完 SQL 注入和 XSS

【免费下载链接】DVWADamn Vulnerable Web Application (DVWA)项目地址: https://gitcode.com/gh_mirrors/dv/DVWA

Damn Vulnerable Web Application(简称 DVWA)是一个刻意写得"漏洞百出"的 PHP/MariaDB 练习网站:SQL 注入、跨站脚本(XSS)、文件上传、命令执行这些常见 Web 漏洞,它每个都给你造好了入口,并且按 low / medium / high / impossible 四档难度分层。对新手来说,它就是那个"可以放心打、不用担心误伤别人"的 Web 安全练功房。

先分清:这个靶场适合谁,又有一条红线

DVWA 的官方定位很明确:帮安全从业者在合法环境里练手、帮 Web 开发者理解防护思路、帮老师和学生在教室里教 Web 安全。

适合的人群大致三类:

  • 零基础想入门 Web 安全的学生,先在这里把漏洞"打出来"一遍;
  • 会写代码、但没系统练过攻防的开发,用来理解"为什么参数不校验会出事";
  • 需要带团队的讲师或内训组织者,每个模块页面底部都自带帮助说明和提示,天然适合课堂演示。

不过有一条边界必须说在前面:

⚠️DVWA 只能部署在你自己的电脑、虚拟机或内网隔离环境里,严禁发布到公网或任何对外服务的服务器上。它的全部"价值"就在于不设防,一旦暴露到 Internet,几秒内就会被扫描器锁定,你的机器会立刻成为肉鸡。官方 README 里也专门用加粗警告了这一点。

装之前:环境和端口两件事

如果你打算用 Docker 一键跑(下文默认路线),前置要求只有一个:装好 Docker 和 Docker Compose(Docker Desktop 默认都带)。

docker version docker compose version

两条命令都能输出版本号,就可以直接开始。

如果你更想"手动搭一套"(Windows 上通常是 XAMPP,Debian/Ubuntu 上是 Apache + MariaDB),依赖大致是:

  • PHP(建议 7.3 以上,PHP 5 已不受支持)+ Apache
  • MariaDB(官方更推荐它而不是 MySQL,开箱即用,不需要额外改配置)
  • API 模块还需要 Apache 开启mod_rewrite,并在vulnerabilities/api下装 Composer 依赖(详见 README.md 的 Linux Packages / Apache Modules 一节)

第二个容易踩的坑是端口:Docker 方式下 DVWA 不是跑在 80 端口,而是映射到4280,且 compose.yml 里默认只绑定127.0.0.1,也就是只允许本机能访问——这其实是官方帮你做的一层"不上公网"的保险,访问时记得用http://localhost:4280

5 分钟跑起你的第一个 DVWA 靶场

整个过程就三步,全程不需要手动建库、不需要配数据库账号(Docker 编排文件里已经内置了一个dvwa用户)。

第一步,把仓库克隆下来:

git clone https://gitcode.com/gh_mirrors/dv/DVWA.git cd DVWA

第二步,一键启动:

docker compose up -d

它会在容器里拉起两个服务:一个 PHP + Apache 的应用容器,一个 MariaDB 10 数据库容器(账号密码由 compose.yml 自动注入)。

启动后可以随时在终端看日志确认两个容器都 Running:

docker compose logs

第三步,浏览器打开http://localhost:4280。首次进入没有登录框,这是正常的——它还在等你初始化数据库。

进网页建库:点两下按钮,顺便记牢默认账号

在页面顶部菜单里进入Setup页,你会看到环境自检列表(PHP 版本、mysqli、gd 等扩展是否就绪),确认没有红色报错后,点Create / Reset Database按钮,数据库和示例数据就建好了。

这里有个必须记住的坑:

⚠️Create / Reset Database 会把目标数据库整个删掉重建。所以这个数据库应该专门给 DVWA 用,别复用你项目里存了业务数据的库。这一点在 config/config.inc.php.dist 顶部注释里写得很清楚。

建完库,登录账号是默认写死在文档里的:

  • 用户名:admin
  • 密码:password

(练习暴力破解、认证绕过等模块时,这个默认账号本身就是你最好的"靶子"。)

第一次进靶场怎么玩:难度、源码和练习顺序

登录后左侧菜单就是全部 19 个漏洞模块。每个模块的玩法都一样:

  1. 切难度:页面右上(或顶部)的 Security 下拉框,low最脆弱、impossible基本无懈可击;
  2. 看源码:每个模块都有source/目录,把low.phpimpossible.php并排对比,你能直观看到"少写了两行校验代码"会导致什么后果;
  3. 看提示:页面底部 Help 按钮打开官方提示,卡住了就看一眼,别干憋;
  4. 按自己的节奏走:可以固定一个难度横向把所有模块通关,也可以单点突破(比如只在 SQL 注入里从 low 一路打到 impossible)。官方还故意留了文档未提及的隐藏漏洞,鼓励你自己去发现。

各模块对应的代码都在vulnerabilities/目录下的同名子文件夹里,练习时随时可以翻源码对照:

模块练什么对应目录
SQL Injection经典报错/联合注入vulnerabilities/sqli/
Blind SQLi布尔/时间盲注vulnerabilities/sqli_blind/
XSS (Reflected/Stored/DOM)反射、存储、DOM 型 XSSvulnerabilities/xss_r/ 等
File Upload绕过文件类型校验vulnerabilities/upload/
File Inclusion包含任意文件vulnerabilities/fi/
Command Execution系统命令注入vulnerabilities/exec/
CSRF跨站请求伪造vulnerabilities/csrf/
Brute Force / CAPTCHA撞库与验证码绕过vulnerabilities/brute/ 等
Auth Bypass / Backdoor认证绕过、后门文件vulnerabilities/authbypass/ 等
Weak ID / Open Redirect / CSP弱口令、开放重定向、CSPvulnerabilities/weak_id/ 等
API接口层面的鉴权与越权问题vulnerabilities/api/

如果你要练 Burp Suite、OWASP ZAP 这类抓包扫描工具,DVWA 的每个模块都是现成的靶标,配合四档难度,正好可以观察工具在不同防护水位下的表现。

安全与伦理红线:练完记得收摊

再重复一遍最重要的三件事,练之前、练之后各读一次:

  • 🔒只在自己可控的环境里跑:本机、虚拟机(NAT 网络模式)或隔离内网。Docker 路线默认只监听127.0.0.1:4280,不要改绑公网地址;
  • 🔒别改默认密码后忘记它,也别用它去攻击别的网站——DVWA 上的每一个漏洞手法,放到没有授权的真实系统上都是违法行为;
  • 🔒用完就清理:不再练习时执行docker compose down停掉容器;如果连数据都不要了,把项目目录删掉即可,别把这套源码留在任何长期开机的机器上。

进阶:往更深处走

  • 完整安装文档和多语言说明(含中文版 README.zh.md):README.md
  • 数据库各难度初始化脚本(想手动复现数据时看):database/
  • 旧版本更新记录,了解哪些漏洞是后来加上的:CHANGELOG.md
  • SQLi 模块支持切换 SQLite 后端,切换方式在 config/config.inc.php.dist 的SQLI_DB注释里有说明
  • 觉得 DVWA 通关后"不够难",可以再去找 OWASP 的同类训练项目和更复杂的虚拟靶场继续进阶

照这篇文章走完一遍,你应该已经能回答三个问题:每个漏洞在低难度下长什么样、加两行防护代码为什么就免疫了、以及为什么同样的代码绝对不能上线到公网。能答上来,这五分钟的靶场就没白跑。

【免费下载链接】DVWADamn Vulnerable Web Application (DVWA)项目地址: https://gitcode.com/gh_mirrors/dv/DVWA

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4174782.html

相关文章:

  • PDFMathTranslate:免费公式级PDF论文翻译
  • 单链表专题
  • 从awesome-python3-webapp到iOS App:跨平台开发实战经验完整指南
  • Xplorer文件管理器完全上手指南:跨平台文件管理一次搞定
  • 告别手写提示词:llava-v1.6-mistral-7b-hf 的 apply_chat_template 完整使用指南
  • Stronghold Procedures 完全参考:BIP39、SLIP10、Ed25519 签名等 20+ 密码学操作一览
  • orga分词器源码剖析:基于text-kit读取器的lexer逐行设计解读
  • 免费打造FIFA 23梦想球队:Live Editor 生涯模式修改器完整上手指南
  • 流媒体时代,本地音乐播放器如何以“简洁”定义核心价值?
  • 工业具身智能落地的工程基石:从概念到实战的系统化底座构建指南
  • Qt插件机制详解:QPluginLoader动态加载与模块化架构完整指南(Awesome_Qt_Learning)
  • 为什么你的Redis客户端太慢?异步Redis客户端aredis完整概览
  • 铸铁平台与钢结构平台选型对比:从阻尼特性到全生命周期成本分析
  • XUnity.AutoTranslator:十分钟让没中译的 Unity 游戏跑起来
  • Connect You 开源联系人应用开发者指南:Jetpack Compose + Room 架构完整解析
  • 从斯大林排序算法看算法正确性与数据完整性
  • 猫抓 Cat-Catch:免费的网页视频资源嗅探与流媒体下载扩展
  • BBDown 命令行下载器:一条命令把 B 站视频存成本地 MP4
  • DRF Docs 安全指南:HIDE_DOCS 配置全解,为什么生产环境必须隐藏 API 文档
  • 多元分数多项式为何衰落?从统计建模稳定性与机器学习范式演变谈起
  • gogstash源码解析(三):codec编解码机制与simpleQueue队列暂停恢复的背压设计
  • SceneKit节点克隆与材质独立难题:Shinkansen 3D Seat Booking Prototype的NodeFactory深克隆技巧
  • 美赛微分方程建模实战:从识别到求解的完整指南
  • rack-tracker 埋点中间件安全深度解析:从 XSS 防护到线程安全的完整设计指南
  • 腾讯前端面试核心考点:JS基础与框架原理解析
  • LÖVE Potion架构深度剖析:modules/objects/utilities三层设计,LÖVE框架移植方法论全解读
  • TP6-Vue-Admin:ThinkPHP6 后台 + Vue 管理后台,前后端分离后台管理系统快速搭建指南
  • 分布感知算法设计:LLM智能体如何根据数据特征优化算法性能
  • 数学建模实战:从数据清洗到趋势预测,解析全球变暖问题的数据科学方法论
  • 突破大数据处理瓶颈:Awesome Data Analysis收录20个高性能工具,Polars、Dask一网打尽