DVWA靶场实战:从代码审计到绕过,手把手教你搞定三种XSS漏洞(附Payload)
DVWA靶场实战从代码审计到绕过手把手教你搞定三种XSS漏洞附Payload在网络安全领域跨站脚本攻击XSS始终是最常见且危害巨大的漏洞类型之一。DVWADamn Vulnerable Web Application作为专为安全测试设计的靶场提供了从低到高不同安全等级的XSS漏洞环境。本文将带你深入三种XSS漏洞DOM型、反射型、存储型的实战演练通过代码审计→理解防御→设计攻击→成功绕过的完整闭环掌握XSS攻防的核心逻辑。1. 环境准备与基础认知1.1 DVWA环境配置要点推荐配置使用PHP 5.4与MySQL 5.0的组合避免高版本兼容性问题安全等级设置登录后通过Security Level调整难度Low/Medium/High常见问题排查# 检查PHP模块是否加载 php -m | grep mysqli # 修复文件权限 chmod -R 755 /var/www/html/dvwa/1.2 XSS漏洞分类对比类型触发方式持久性典型案例场景DOM型前端JS解析URL参数非持久下拉菜单动态渲染反射型服务端返回输入非持久搜索结果显示页存储型数据库存储后展示持久留言板、用户评论系统提示测试前务必在浏览器禁用XSS过滤器Chrome参数--disable-xss-auditor2. DOM型XSS从基础注入到锚点绕过2.1 Low级别无防护的代码逻辑// 后端代码low.php ?php # No protections, anything goes ?攻击Payloadscriptalert(document.domain)/script漏洞成因前端直接使用document.location.href获取参数并动态生成HTML无任何过滤。2.2 Medium级别大小写绕过技巧后端增加了脚本标签检测if (stripos($default, script) ! false) { header(location: ?defaultEnglish); exit; }有效PayloadScRiPtalert(1)/ScRiPt绕过原理stripos虽不区分大小写但未考虑HTML标签的其他表现形式。2.3 High级别白名单机制的突破后端采用白名单验证switch ($_GET[default]) { case French: case English: /*...*/ break; default: header(location: ?defaultEnglish); exit; }终极绕过方案English#img srcx onerroralert(1)技术要点利用#锚点使payload不发送到服务端通过图片标签的onerror事件触发JS执行3. 反射型XSS对抗过滤策略的实战3.1 常规过滤与双写绕过Medium级别使用str_replace过滤$name str_replace(script, , $_GET[name]);双写Payloadscrscriptiptalert(1)/scrscriptipt防御缺陷单次替换后未递归检查导致闭合标签被重组。3.2 正则过滤与HTML标签利用High级别采用正则表达式$name preg_replace(/(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i, , $_GET[name]);有效攻击方式iframe srcjavascript:alert(document.cookie)关键发现正则仅针对script标签未覆盖其他可执行JS的HTML属性。4. 存储型XSS持久化攻击的攻防对抗4.1 前端限制的突破技巧前端设置maxlength限制时浏览器开发者工具删除maxlength属性使用Burp Suite拦截修改POST请求4.2 复合过滤的绕过方案High级别同时使用多种过滤$name preg_replace(/(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i, , $name); $message htmlspecialchars($message);成功Payloadsvg/onloadalert(XSS)优势分析SVG标签常被忽略过滤onload事件在元素渲染时自动触发5. 防御方案设计与实战建议5.1 安全的输出编码实践上下文类型PHP处理函数JavaScript处理方案HTML正文htmlspecialchars()textContent属性赋值HTML属性htmlentities()setAttribute()URL参数urlencode()encodeURIComponent()5.2 内容安全策略CSP配置示例Content-Security-Policy: default-src none; script-src self unsafe-inline cdn.example.com; img-src *; style-src self unsafe-inline;效果验证阻止内联脚本执行限制外部资源加载域名在最近一次企业级渗透测试中我们发现即使采用High级别的过滤规则通过details ontoggle这类冷门事件处理器仍可触发XSS。这提醒我们安全防护需要持续更新对抗方案而DVWA靶场正是磨练这些技能的绝佳平台。