DVWA Medium DOM XSS安全测试与防护分析
注意有关DOM XSS漏洞的基础知识与原理已在上篇文章指出此处不再解释。可参考该文章https://www.cnblogs.com/lky-sec/articles/21412117本文仅用于网络安全学习与防御研究。所有测试均在本人本地部署、合法授权的 DVWA 靶场中进行禁止将相关方法用于任何未授权系统。一 测试范围与环境本次测试目标为本地DVWA靶场中的XSSDOM模块。项目配置测试环境本地 DVWA 靶场安全等级Medium测试系统Kali Linux测试工具Firefox、Burp Suite测试方式黑盒测试、源码审计授权情况本人本地靶场合法授权二 页面与请求分析1. 设置难度等级进入 DVWA Security将安全等级设置为 Medium随后进入 XSSDOM模块。2. 观察模块正常功能页面提供语言选择下拉框可以选择 English、French、Spanish、German 等语言。选择不同语言后可以观察到浏览器地址栏中的default参数发生变化。3. 分析URL参数与DOM变化也可使用浏览器开发者工具进行查看页面源码开启Burp Suite Proxy模块进行拦截提交一次正常请求。右键将正常请求发送到 Burp Suite Repeater。发送请求观察Response包页面源码。发现程序首先通过document.location.href获取当前页面URL并查找其中的default参数var lang document.location.href.substring( document.location.href.indexOf(default)8 );随后通过document.write(option value lang decodeURI(lang) /option);将default参数对应的内容动态写入页面DOM。因此该模块的数据流可以表示为URL中的default参数 ↓ document.location.href读取 ↓ substring()提取参数内容 ↓ document.write()写入页面DOM这说明default参数属于用户可控数据并会直接影响页面DOM结构三 手工黑盒测试1.测试Low难度Payload输入scriptalert(x)/script无弹窗且URL处返回English。将该命令大小写混合输入ScRiPtalert(x);/ScRiPt无弹窗且URL处返回English。结合两次输入即其对应返回结果猜测此处对script标签进行过滤且不区分大小写。2.使用不依赖script标签的HTML事件属性HTML 中部分元素支持事件属性例如onclick onload onerror这些属性会在对应事件发生时执行其中的 JavaScript因此 JavaScript 并不一定必须写在script标签内部。例如输入img srcx onerroralert(x)其中imgHTML 图片标签。 srcx指定一个通常无法正常加载的图片地址 x。 onerror图片加载失败时触发的错误事件。 alert(x)事件触发后执行的 JavaScript 代码。其执行过程为img标签被浏览器解析 ↓ 浏览器尝试加载srcx ↓ 图片加载失败 ↓ 触发onerror事件 ↓ 执行alert(x)提交后未出现弹窗。结合前端 JavaScript 可以发现default参数最终通过document.write()被写入option元素内部因此img标签仍处于select结构中无法作为正常图片元素触发 onerror 事件。因此需要先闭合原有的 option 和 select 标签使后续 HTML 内容脱离下拉框结构。3.脱离下拉框结构输入/option/selectimg srcx onerroralert(x)或者/selectimg srcx onerroralert(x)弹窗成功四 黑盒测试结果分析测试Payload测试结果结果分析scriptalert(x)/script未弹窗URL返回EnglishLow难度Payload失效说明Medium等级增加了针对script标签的限制ScRiPtalert(x);/ScRiPt未弹窗URL仍返回English改变大小写后仍被限制初步判断过滤规则对script标签匹配不区分大小写img srcx onerroralert(x)未弹窗Payload未使用script标签但由于内容仍位于select/option结构中img标签无法作为正常图片元素执行/option/selectimg srcx onerroralert(x)成功弹窗通过闭合原有DOM结构使img标签脱离下拉框并正常触发onerror事件/selectimg srcx onerroralert(x)成功弹窗浏览器能够自动结束当前option元素仅闭合select同样可以脱离原有DOM结构并执行事件代码五 代码审计1. 查看Medium源码点击view source查看源码?php // Is there any input? if ( array_key_exists( default, $_GET ) !is_null ($_GET[ default ]) ) { $default $_GET[default]; # Do not allow script tags if (stripos ($default, script) ! false) { header (location: ?defaultEnglish); exit; } } ?2. 源码分析Medium 等级首先获取用户通过 URL 提交的 default 参数$default $_GET[default];随后使用stripos($default, script)检测参数中是否包含 script 字符串。stripos() 进行的是不区分大小写的字符串查找因此script ScRiPt SCRIPT均能够被检测到。当发现参数中存在script时程序执行header (location: ?defaultEnglish); exit;将页面重新重定向至?defaultEnglish这与前面黑盒测试中普通script和大小写混合ScRiPt均被重定向至 English 的现象一致。但该防护仅针对script字符串进行检测并没有限制其他 HTML 标签或事件属性。因此不包含script的内容不会触发该过滤规则例如img srcx onerroralert(x)结合前面已经分析的前端 document.write()此类内容仍可能被写入页面 DOM 并被浏览器解析。因此该漏洞的主要原因是Medium 等级仅通过 stripos() 对 script 标签进行黑名单检测防护范围有限未从根本上阻止用户可控数据进入 DOM 结构。3. 修复方案1对 default 参数采用白名单校验仅允许 English、French、Spanish、German 等合法值。2避免使用 document.write() 将用户可控数据直接写入 DOM。3使用 textContent、createElement() 等安全 DOM API 生成页面内容。4对需要输出到页面的动态数据进行上下文相关编码。5避免使用 stripos() 等黑名单方式过滤特定标签或关键字。6配置合理的 Content Security PolicyCSP限制内联脚本和事件属性执行。7对异常 default 参数及可疑 XSS 请求进行日志记录与安全监控。六 Low与Medium差异对比项LowMedium服务端防护无增加服务端检测逻辑default参数处理不处理获取$_GET[default]并进行检查过滤方式无使用stripos()检测script是否区分大小写不涉及不区分大小写遇到script时的处理不拦截重定向到?defaultEnglish普通scriptalert(x)/script可利用被拦截大小写混合ScRiPt.../ScRiPt可利用仍被拦截非script型 Payload可利用仍可能利用HTML 事件属性利用可利用仍可能通过onerror等方式绕过DOM 写入根因用户输入可进入 DOM用户输入仍可进入 DOM主要防护措施无任何防护仅对script进行黑名单检测主要安全问题用户输入可直接影响 DOM 结构黑名单检测范围有限未从根本上阻止用户输入进入 DOM漏洞是否存在存在仍然存在根本修复方式避免将用户输入直接写入 DOM并采用白名单校验避免将用户输入直接写入 DOM并采用白名单校验

相关新闻

ARM Cortex-M3/M4内核深度解析:从架构原理到嵌入式开发实战

ARM Cortex-M3/M4内核深度解析:从架构原理到嵌入式开发实战

1. 从零开始:为什么ARM Cortex-M内核是嵌入式开发的基石? 如果你刚接触嵌入式开发,或者从传统的51、AVR单片机转向更复杂的应用,那么“ARM Cortex-M”这个名字一定会高频出现。它不是一个具体的芯片型号,而是一个处理器…

2026/7/29 9:37:19 阅读更多 →
单机游戏MOD加载机制解析与高效管理工具推荐:汽游MOD平台深度测评

单机游戏MOD加载机制解析与高效管理工具推荐:汽游MOD平台深度测评

1. 引言与背景 在现代游戏开发与玩家社区生态中,MOD(Modification,游戏模组)扮演着至关重要的角色。从早期的《半条命》衍生出《反恐精英》,到如今虚幻5(Unreal Engine 5)与REDengine驱动的3A大…

2026/7/29 9:37:19 阅读更多 →
嵌入式Linux内核移植实战:从交叉编译到启动验证全流程解析

嵌入式Linux内核移植实战:从交叉编译到启动验证全流程解析

1. 项目概述:从零到一,构建你的嵌入式Linux内核搞嵌入式开发的朋友,尤其是刚从单片机转向Linux的,最头疼的莫过于“系统移植”这四个字。听起来高大上,做起来却是一地鸡毛。今天我们不谈虚的,就聚焦在系统移…

2026/7/29 9:37:19 阅读更多 →

最新新闻

lattice fpga芯片上电偶发性不工作

lattice fpga芯片上电偶发性不工作

问题原因:por时序不对,program管脚上电时被提前释放导致lattice上电启动异常

2026/7/29 9:47:22 阅读更多 →
IDOR 接口漏洞引发定向钓鱼风险及 Node.js 防护体系研究

IDOR 接口漏洞引发定向钓鱼风险及 Node.js 防护体系研究

摘要 面向垂直领域的轻量化 Web 应用普遍存在开发安全流程缺失问题,不安全直接对象引用(IDOR)水平越权漏洞极易造成大规模用户个人信息泄露,泄露数据将成为定向钓鱼攻击的核心数据源。本文以梵蒂冈官方 Click To Pray 祷告 APP 安…

2026/7/29 9:47:22 阅读更多 →
工业实训仿真设计实践:电机拆装软件的 DAG 流程建模、工具精度分级与数据体系搭建

工业实训仿真设计实践:电机拆装软件的 DAG 流程建模、工具精度分级与数据体系搭建

在职业教育工业虚拟仿真实训领域,电机拆装是极具代表性的标杆场景 —— 操作流程强步骤依赖、工具品类多、真实实操容错成本高,一款仿真软件的核心设计能力,往往能在这个场景中得到最直接的体现。本文以龙泽科技新能源汽车电机虚拟拆装仿真教…

2026/7/29 9:47:22 阅读更多 →
Twelve South推新版Valet充电托盘:小体积大升级,功率提升价格更亲民!

Twelve South推新版Valet充电托盘:小体积大升级,功率提升价格更亲民!

Twelve South推新版Valet充电托盘,专为小空间设计今年早些时候在国际消费电子展(CES)上首次亮相的Twelve South皮革包裹式Valet充电托盘,如今推出了新版本。该版本专为空间有限的场所打造,原版深度为7.5英寸&#xff0…

2026/7/29 9:47:22 阅读更多 →
Agent Skills技术栈:大模型行动力的核心架构与实践

Agent Skills技术栈:大模型行动力的核心架构与实践

1. Agent Skills技术栈全景解析:大模型行动力的核心引擎最近半年,AI领域最令人兴奋的突破莫过于大模型从"语言理解"向"行动执行"的跨越式发展。作为深度参与多个企业级AI项目的技术负责人,我发现真正决定大模型实用价值的…

2026/7/29 9:47:22 阅读更多 →
共筑国产 FPGA 生态!ALINX 携车载视频解决方案亮相 2026 紫光同创开发者大会

共筑国产 FPGA 生态!ALINX 携车载视频解决方案亮相 2026 紫光同创开发者大会

以“算力重构、智创无界”为主题的“2026紫光同创开发者大会”深圳站与成都站圆满落幕。本次大会汇聚了来自通信网络、工业控制、汽车电子、数据中心、边缘AI、测试测量等领域的 300 余名工程师、行业伙伴与生态开发者,围绕国产 FPGA 技术创新、AI 推理系统方案、工…

2026/7/29 9:46:22 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻