DVWA(Damn Vulnerable Web Application)漏洞靶场实战项目资源包

🔥有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。

生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。


DVWA(Damn Vulnerable Web Application)漏洞靶场实战项目资源包。这份指南涵盖了从环境搭建、核心漏洞实战到防御加固的全流程,旨在帮助你系统性地掌握 Web 安全渗透测试与代码审计技能。


📦 一、 项目核心资源清单

在开始实战前,请确保你已准备好以下基础资源:

资源类型 推荐工具/来源 说明
靶场源码 GitHub 官方仓库 始终建议从官方获取最新版本,包含最新漏洞模块与修复补丁。
集成环境 PHPStudy (Windows) / 宝塔面板 (Linux) 新手首选 PHPStudy,一键配置 Apache/Nginx + MySQL + PHP。
容器化部署 Docker 推荐命令:docker run -d --name dvwa -p 8080:80 vulnerables/web-dvwa
渗透工具 Burp Suite / HackBar / SQLMap 用于抓包分析、Payload 构造及自动化测试。
参考文档 OWASP Top 10 / DVWA Wiki 理解漏洞原理与防御标准的权威依据。

🛠️ 二、 环境搭建关键配置(避坑指南)

搭建过程中,90% 的问题源于以下配置,请务必检查:

  1. 数据库配置
    • 进入 dvwa/config/ 目录,将 config.inc.php.dist 重命名为 config.inc.php
    • 修改 $_DVWA[ 'db_password' ] 为你的数据库 root 密码(PHPStudy 默认为 root,宝塔需手动设置强密码)。
  2. PHP 函数禁用
    • 在 PHP 设置中找到 禁用函数必须删除 shell_execexecpassthru 等函数,否则"命令注入"模块将无法执行系统命令。
  3. 文件包含配置
    • php.ini 中,将 allow_url_include 设置为 On,否则"文件包含"漏洞无法利用。
  4. 初始化数据库
    • 访问 http://localhost/dvwa/setup.php,点击页面底部的 Setup / Reset Database 按钮完成初始化。

⚔️ 三、 核心漏洞实战路径

DVWA 提供 Low / Medium / High / Impossible 四个安全级别,建议按以下顺序进阶:

1. 注入类漏洞
  • SQL Injection :从 1' OR '1'='1 基础绕过开始,进阶到 UNION SELECT 联合查询、ORDER BY 猜列数,最后尝试 SQLMap 自动化注入
  • Command Injection :利用 ;|& 等管道符拼接系统命令(如 ping 127.0.0.1; cat /etc/passwd),学习 WAF 绕过与空格过滤技巧。
2. 跨站脚本 (XSS)
  • Reflected XSS :在搜索框注入 <script>alert(1)</script>,观察页面回显。
  • Stored XSS :在留言板写入恶意脚本,模拟用户点击触发,理解 Cookie 窃取Session 劫持 原理。
  • DOM XSS :分析前端 JS 代码,寻找 document.writeinnerHTML 的赋值点,理解客户端渲染漏洞。
3. 身份认证与会话
  • Brute Force :使用 Burp Suite Intruder 模块加载字典爆破,High 级别需编写 Python 脚本处理 Anti-CSRF Token
  • Weak Session IDs:分析 Cookie 生成规律(如数字递增、时间戳、MD5(递增)),尝试预测并劫持会话。
  • CSRF :构造恶意链接或表单,诱导管理员修改密码,理解 SameSite 属性与 Token 验证 的防御作用。
4. 文件操作
  • File Upload :上传 .php 木马,学习后缀名绕过、MIME 类型伪造、文件头检查绕过及 .htaccess 利用。
  • File Inclusion :利用 php://filter/read=convert.base64-encode/resource=../index.php 读取源码,或包含日志文件 GetShell。

🛡️ 四、 防御与代码审计(Impossible 级别)

实战的终点是防御,请重点对比 HighImpossible 级别的源码差异:

  1. 预编译语句 :SQL 注入防御必须使用 PDOmysqli_prepare,严禁字符串拼接。
  2. 输出编码 :XSS 防御需在输出时使用 htmlspecialchars() 进行 HTML 实体编码。
  3. 白名单机制 :文件上传必须校验 文件后缀 + MIME + 文件头,并重命名文件,禁止用户控制文件名。
  4. Anti-CSRF Token:所有状态变更请求必须携带并验证一次性 Token,且绑定用户 Session。
  5. 安全配置 :生产环境务必关闭 display_errors,禁用危险函数,设置 open_basedir

💡 五、 学习建议与扩展

  • 不要只做"脚本小子" :每完成一个漏洞,必须阅读源码,理解漏洞产生的根本原因(Root Cause)。
  • 代码审计训练:尝试不看前端,仅通过 PHP 源码寻找漏洞点,这是从渗透测试转向安全开发的关键。
  • 扩展靶场 :DVWA 通关后,可尝试 Pikachu (更贴近国内业务逻辑)、SQLi-Labs (SQL 注入专项)、Upload-Labs(文件上传专项)。
  • 合规提醒 :所有实战操作仅限本地环境,严禁对未经授权的真实网站进行渗透测试,遵守《网络安全法》。

如果你需要某个具体漏洞(如 SQL 注入 High 级别)的详细 Writeup 或 Python 自动化脚本,可以随时告诉我! 🚀

这些程序员职场"潜规则",让你少走5年弯路_【官方推荐】唐城的博客-CSDN博客


一边赶路,一边寻找出路,希望大家在每个幸福的日子里,都能快乐前行。