深度探讨隐藏在你代码中的漏洞:变异型跨站脚本(mXSS),从零基础到精通,收藏这篇就够了!

【Tampermonkey】第一章:Tampermonkey简介 - 让网页听你的 Tampermonkey(油猴)是目前最流行的用户脚本管理器,支持包括 Chrome、Edge、Firefox、Safari 等主流浏览器。它允许你在特定网页上运行自定义的 JavaScript 代码,从而实现对网页的功能增强、界面美化或自动化操作。 阅读详情

各位靓仔靓女,今天咱们聊点刺激的!都知道网络安全这行水深火热,但你绝对想不到,就连XSS这种“老炮儿”级别的漏洞,都能玩出新花样!别眨眼,带你揭秘代码里的“变形金刚”——变异型跨站脚本(mXSS)!

啥是XSS?简单说,就是坏人往你网页里塞点恶意代码,你用户一访问,嘿,中招了!轻则被偷窥隐私,重则账号被盗,想想都可怕!

反射型、存储型、通用型,XSS家族人丁兴旺。但最近,mXSS异军突起,专挑DOMPurify、Mozilla bleach、Google Caja这些“数据清洗大师”下手,连Google搜索都栽了跟头!

故事的开始:你以为的安全,只是你以为

作为一名有追求的Web开发者,你肯定给自家应用装了数据清洗工具,想把XSS拒之门外。但理想很丰满,现实很骨感!HTML这玩意儿,复杂程度超乎你想象,各种元素、属性,排列组合一下,就能让你的清洗工具瞬间懵逼!

HTML:一个“容错率”超高的老好人

为啥HTML这么容易被搞事情?因为它太“宽容”了!就算你代码写得稀烂,它也尽量给你显示出来,生怕你看不见。

举个栗子,你写了个<p>test,少了闭合标签</p>,浏览器照样给你解释,还偷偷帮你补全了!

为啥要这么宽容?

  • 可访问性: 互联网要服务所有人,不能因为一点小错误就把用户拒之门外。
  • 灵活性: 程序员水平参差不齐,总有人会犯点小错误。
  • 向后兼容性: 老网站也要活下去啊!

问题来了,浏览器咋知道该咋“修复”你的代码?<a><b> 到底是 <a></a><b></b> 还是 <a><b></b></a>?

别慌,HTML有一套详细的规范,但架不住规范里也有模糊不清的地方,导致不同浏览器解析结果都不一样!

“变异”:躲过清洗的障眼法

重点来了!mXSS的“M”,指的就是“变异”。HTML解析过程中,任何对代码的修改,都算是一种变异。

比如:

  • 修复错误标签(<p>test → <p>test</p>)
  • 规范化属性引号(<a alt=test> → <a alt=”test”>)
  • 重新排列元素(<table><a> → <a></a><table></table>)
  • ……

mXSS就是利用这些“变异”,绕过数据清洗!

HTML解析:一场“七十二变”的大戏

不同的内容,不同的解析方式

HTML可不是铁板一块,它会根据内容类型,切换不同的解析模式。目前有七种:

  1. void元素: 像area、br、img这些“自闭症”标签,不需要闭合。
  2. 模版元素: template,里面的内容一般不直接显示。
  3. 原始文本元素: script、style,里面的内容会被当成纯文本,不会被解析成HTML。
  4. 可转义的原始文本元素: textarea、title,和上面类似,但可以转义。
  5. 外部内容元素: svg、math,用来嵌入SVG和MathML。
  6. 明文状态: plaintext,后面的所有内容都会被当成纯文本。
  7. 普通元素: 除了上面这些,剩下的都是普通元素。

看个例子,你就明白了:

1、普通元素:

<div><a alt="</div><img src=x onerror=alert(1)>"></div>

2、原始文本元素:

<style><a alt="</style><img src=x onerror=alert(1)>"></style>

解析结果:

看到了没?div里的内容被当成HTML解析,a标签成功创建。而style里的内容被当成纯文本,a标签直接GG!

外部内容元素:SVG和MathML的“异次元空间”

HTML5引入了svg和math,它们有自己的命名空间,解析规则和普通HTML不一样。

还是上面的例子,套个svg的壳:

<svg><style><a alt="</style><img src=x onerror=alert(1)>"></svg>

这次,a标签又活了!因为在SVG命名空间里,style不再是“原始文本”元素,而是被当成普通元素解析。

注意: 坏人可以利用命名空间混淆,让数据清洗工具和浏览器对代码的理解产生偏差,从而绕过检测!

从“变异”到“搞事情”:mXSS的攻击姿势

解析器差异:你眼中的安全,只是假象

数据清洗工具和浏览器,用的解析器可能不一样。HTML解析太复杂,出现差异很正常。但坏人就喜欢利用这些差异搞事情!

比如,noscript元素:如果JS启用,里面的内容不显示;如果JS禁用,里面的内容才显示。

数据清洗阶段,JS肯定没启用。但到了浏览器渲染阶段,JS就启用了。这就可能导致绕过:

<noscript><style></noscript><img src=x onerror=”alert(1)”>

禁用JS:

启用JS:

解析往返:DOM树的“乾坤大挪移”

解析往返是指,HTML经过多次解析,DOM树可能会发生变化。

比如,form元素不能嵌套form元素。但可以这样:

<form id="outer"><div></form><form id="inner"><input>

第一个</form>被忽略,div和input会和内部的form关联。但如果把这个DOM树重新解析,内部的<form id="inner">会被忽略,input就会和外部的form关联!

坏人可以利用这个特性,在数据清洗工具和浏览器之间制造命名空间混淆,实现绕过:

<form><math><mtext></form><form><mglyph><style></math><img src onerror=alert(1)>

数据清洗:画蛇添足的反作用

有些数据清洗工具会把svg元素重命名为custom-svg,这会导致元素命名空间改变,反而可能导致XSS!

上下文相关:换个环境,结果大不同

HTML解析很复杂,在不同环境下结果可能不一样。比如,解析整个文档和解析片段,结果就不一样。

有些应用会清洗输入,但在嵌入页面时,会把它放到SVG里,这就改变了上下文,导致解析差异,最终绕过清洗器!

mXSS案例:Joplin的“电子危机”

Joplin是一款用Electron开发的笔记应用。由于Electron配置不安全,JS代码可以使用Node.js的内部功能,导致坏人可以在你的电脑上执行任意命令!

漏洞在于Joplin用的htmlparser2解析器,它不遵循HTML规范,更注重速度而不是准确性。

用下面的代码,就能让htmlparser2忽略命名空间:

虽然清洗器的解析器不会渲染img元素,但浏览器会渲染。坏人只需添加onerror事件,就能在你打开恶意笔记时,执行任意代码!

如何应对mXSS?

为了避免踩坑,开发者们可以参考以下建议:

  1. 客户端检查和清洗: 使用像DOMPurify这样的客户端清洗程序,避免解析器差异。
  2. 不要重新解析: 清洗后的DOM树直接插入文档,不要序列化和重新渲染。
  3. 编码或删除原始文本: 杜绝任何原始文本在清洗器阶段出现,防止被重新解析为HTML。
  4. 不支持外部内容元素: 删除svg和math元素,降低复杂性。
  5. 父命名空间检查: 删除位于错误命名空间中的元素,解决命名空间混淆问题。

总结:与时俱进,才能笑到最后

mXSS利用了HTML处理方式的特殊性,让传统的数据清洗工具防不胜防。面对这种新型威胁,开发者们需要不断学习,提升安全意识,才能保护我们的网络世界!

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

*************************************优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************

油猴脚本(Tampermonkey Script)是一种用户脚本管理工具 油猴脚本作为一种用户脚本管理工具,具有广泛的应用场景和灵活性。通过油猴脚本,用户可以轻松地修改和增强网页的功能和界面。虽然油猴脚本和浏览器插件在某些方面有相似之处,但它们在开发复杂度、安装管理以及功能范围上有显著区别。通过多种途径,开发者可以利用油猴脚本实现盈利。 阅读详情

相关推荐

JavaScript实现的用户脚本:collapse_duplicates

本文还有配套的精品资源,点击获取 简介:collapse_duplicates是一个JavaScript编写的用户脚本,用于从网页中移除重复数据以提升浏览体验和数据处理效率。该脚本通常用于个性化浏览器设置,通过用户自定义行为来优化用户界面。它依赖于特定的浏览器扩展,如Greasemonkey或Tampermonkey,因此用户必须安装这些扩展才能正常运行。脚本提供了一个ma...

weixin_35794316的博客 1101

欢迎来到 Greasy Fork,这里是一个提供用户脚本的网站。

用户脚本是一段代码,它们能够优化您的网页浏览体验。安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则能隐藏网站上烦人的部分内容。在 Greasy Fork 上的用户脚本都是由用户编写并向全世界发表的,您可以免费安装,轻松体验。

githubcurry,985cs博士在读 29万+

Tampermonkey 用户脚本管理与应用指南

Tampermonkey脚本,作为浏览器扩展程序,允许用户在浏览器中运行自定义的JavaScript代码。其主要目的是增强网站功能、去除广告、更改用户界面、自动化常见的网页任务,以及实现其他用户定制的功能。控制结构是编程中用于控制代码执行流程的结构。JavaScript提供了多种控制结构,比如条件语句(if...else)、循环语句(forwhiledo...while)和开关语句(switch} else {函数是组织好的,可重复使用的,用来执行特定任务的代码块。

weixin_35754676的博客 1435

Greasy Fork,这里是一个提供用户脚本的网站。

https://greasyfork.org/zh-CN 转载于:https://www.cnblogs.com/tc310/p/11561408.html

weixin_30600503的博客 125万+

我们的用户脚本:一些日常使用的用户脚本

用户脚本开发框架 该框架允许您通过启用es6导入/导出,React等来开发多个功能强大的用户脚本。 用户脚本的结构为src/{topic}/{script}/index.js因为topic是相关用户src/{topic}/{script}/index.js的集合, index.js是入口点 每个脚本将作为{topic}-{script}.user.js为./dist进行分发 在每一个src/{topic}/{script} ,你必须有header.json作为userscript元数据 可重用的实用程序将放在./src/common下,并且可以作为import something from 'common/something' 发展历程 运行SCRIPT=./src/your/script/index.js yarn start启动监视和开发服务器,然后转到http://localhos

智能循迹小车之PID控制算法

从光电传感器获取信号确认小车和黑线的偏离角度,通过PID算法算出左右车轮速度,控制小车前进或者后退。

yzj199921的博客 4640

深度探讨隐藏在你代码中的漏洞:变异型跨站脚本(mXSS)

跨站点脚本 (XSS) 是一种众所周知的漏洞类型,威胁行为者可以将 JavaScript 代码注入易受攻击的页面。当不知情的目标用户访问该页面时,注入的代码将在目标用户的会话中执行。此攻击的影响可能因应用程序而异,例如帐户接管(ATO)、数据泄露,甚至远程代码执行(RCE),但不会造成业务影响。XSS有多种类型,例如反射型、存储型和通用型。

2401_84466229的博客 1478

舵机PWM信号转互斥继电器开关信号

-----------------本文由“麦粒电子”撰写,并提供相应产品服务。---------------- 叙述 上次的PWM转继电器开关方案得到大家的不少好评(博客链接),但是发现有些玩家需要一路PWM同时去控制两路继电器开关通断,并且两者是互斥的,好去控制两种不同的负载。所以就继续升级了如下的模块。 正常的控制部件顺序这样:遥控器按钮拨动,遥控器接收机相应通道PWM值变化,PWM转开关模块检测PWM值发生变化从而驱动相应机械继电器触点吸合释放。本模块的两个继电器动作是互斥的,也就是不会同时吸合。

Mai_LiElectronic的博客 1633

XSS类型 || 防御方法 || 绕过 || 原理 || 杂识 || mxss || uxss || cookie || session || jwt

XSS类型 || 防御方法 || 绕过 || 原理 || 杂识 || mxss || uxss || cookie || session || jwt

XXokok的博客 388

银河麒麟V10搭建vsftpd

1、查看是否有安装过2、安装3、服务启动步骤设置开机启动并此次立即启动启动重启停止查看状态4、系统防火墙放行ftp服务如果没有重要的数据在服务器里面,或者在本地虚拟机中外网无法访问的情况下,建议直接关闭防火墙即可省略以上繁琐的步骤。

hhq850741642的博客 6484

电磁场可视化

电磁场可视化 如题,做了电磁场可视化这么久了,也是颇有些心得了,简单描述一下怎么做这个项目的。 开始时是从最基本的OpenGL开始做的,必不可少的翻了许多的文献,后来是直接在unity中做,发现效果挺好,而且可控性强好多。反复琢磨后,发现可视化的渲染,有几种思路,第一就是用linerender,画线的方法,另一种就是用shader。 第一种我通过unity自带的linewave插件可以做到 详细的就是,linewave插件可以轻松画出曲线等,并且可以添加碰撞,控制频率幅度长度等一切的条件数值,而且令人惊喜

weixin_43979140的博客 1671

Chrome用户脚本管理器-Tampermonkey 油猴

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。俗称油猴

记录、分享技术总结,避坑经验等 9003

卡尔曼滤波原理详解及系统模型建立(simulink)

卡尔曼滤波原理详解及系统模型建立(simulink) 卡尔曼滤波器 卡尔曼滤波器是在上个世界五六十年代的时候提出的,到今天已经有六十年左右的时间,但卡尔曼滤波算法不管在控制、制导、导航或者通讯方面对数据的预测能力依然处在一个不可撼动的位置上,但是很多人对于其算法内部的工作原理究竟是怎么运作的依然不理解,所以在工程上很多人都只是把卡尔曼滤波当成是一种“黑箱”预测算法,并不清楚内部原理。但实际上没有任...

weixin_43942325的博客 7万+

如何开发一个用户脚本系列(1)——什么是用户脚本

这个系列总共 6 篇文章,将详细的介绍如何从零开发一个用户脚本。其中前两篇将介绍一下什么是用户脚本,以及开发脚本需要的一些基础知识。后面四篇将通过案例讲解的形式,选择之前我开发完成的 4 个脚本,由简到繁,带着你一起完成脚本的开发,让你看完这个系列文章之后,就可以自己动手开发出自己想要的脚本。 什么是用户脚本 用户脚本是一段代码,它们能够优化您的网页浏览体验。安装之后,有些脚本能为网站添加新的功...

7936

Win11移动热点连接故障排查:从IP配置失败到网络共享的全面解决指南

本文提供了Win11移动热点连接故障的全面排查指南,重点解决手机连接时卡在“获取IP地址”或提示“IP配置失败”的问题。文章从基础检查(如确认网络连接、选择正确共享源)入手,深入讲解了核心的网络适配器共享设置、关键系统服务检查、防火墙配置以及终极解决方案——网络重置。通过系统性的步骤,帮助用户彻底修复Win11移动热点无法共享网络的问题。

alice7model的博客 788

把开源 Skills 集成到 LangGraph 项目

1. 定义智能体状态(必须包含 messages,其他字段按需扩展)messages: List[HumanMessage | AIMessage | ToolMessage] # 消息流(核心)skill_output: Optional[str] # 存储 Skill 执行结果next_node: str # 控制流程跳转# 2. 定义智能体决策节点(决定是否调用 Skill)"""智能体决策逻辑:根据用户输入判断是否调用开源 Skill"""# 获取最后一条用户消息。

lpfasd123的博客 900

网安之web攻防第三十六天

1、XSS跨站-原理&攻击&分类等 2、XSS跨站-MXSS&UXSS&FlashXss&PDFXSS等

B_l_a_nk的博客 476

【即插即用模块】Transformer篇 | ICCV 2025 | MALA :注意力分布神似Softmax,告别线性注意力性能短板!

MALA(Magnitude-Aware Linear Attention)是一种改进的线性注意力机制,通过引入缩放因子和偏移项,解决了传统线性注意力忽视查询幅度的问题,使其分布更接近Softmax Attention。该模块具有线性复杂度(O(n)),结合RoPE和LEPE编码实现全局-局部位置信息混合,通过z值调制平衡信息权重。实验表明MALA在轻量级视觉任务中能有效平衡效率与精度,注意力可视化显示其分布与Softmax Attention高度相似。代码提供完整的RoPE位置编码和线性注意力

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1107

Tampermonkey(油猴)脚本编写快速入门

是一款免费的浏览器扩展和最为流行的用户脚本管理器,相当于一个管理插件的插件,它适用于ChromeSafariOpera Next, 和Firefox。虽然有些受支持的浏览器拥有原生的用户脚本支持,但 Tampermonkey 将在您的用户脚本管理方面提供更多的便利,它提供了诸如便捷脚本安装、自动更新检查、标签中的脚本运行状况速览、内置的编辑器等众多功能, 同时Tampermonkey还有可能正常运行原本并不兼容的脚本。,安装非常简单,与安装普通的插件无异。

蚩尤后裔-汪茂雄 5万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 吐血整理40个网络安全漏洞挖掘姿势,从零基础到精通,收藏这篇就够了!
下一篇: 云计算的十大潜在威胁及防范策略全解析,从零基础到精通,收藏这篇就够了!
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值