WEB攻防-通用漏洞_XSS跨站_MXSS_UXSS_FlashXSS_PDFXSS

embedded/2025/1/15 6:42:41/

目录

MXSS攻击

UXSS攻击

FlashXSS

PDFXSS


MXSS攻击

MXSS,全称“Mutation XSS”,MXSS攻击是一种特殊的XSS攻击类型,简单来说,就是XSS攻击的一种特殊形式,它通过利用网页内容的动态变化或特定条件触发,使得原本安全的网页代码在特定情况下变得不安全,从而执行恶意脚本。

mXSS 主要是在DOM操作的过程中浏览器渲染造成的畸变引起的。比如,将数据赋值到a.innerHTML后,再取出重新赋值到b.innerHTML的过程中产生畸变。

可以理解为:用户可以输入破损的HTML,但浏览器必须要修复它。所以导致了变异,利用这个特性,从而绕过DOMPurify库,或者在第三方的可信机制认可的情况下预览时,对原网页内容进行提取和处理的过程中,将原本无害的XSS Payload进行了转码操作,于是导致了Payload 变异而产生了XSS,具体可以看下面的参考文章

参考文章:

利用突变XSS绕过DOMPurify 2.0.0 - 先知社区

跨站的艺术-XSS入门与介绍 [ Fooying ]

UXSS攻击

UXSS是利用浏览器或者浏览器扩展漏洞来制造产生XSS并执行代码的一种攻击类型。

造成这个漏洞不是因为你的网站问题,而是浏览器自身的问题。

MICROSOFT EDGE uXSS CVE-2021-34506

Edge浏览器翻译功能导致JS语句被调用执行,下面url是演示的案例

https://www.bilibili.com/video/BV1fX4y1c7rX

在微软低版本的edge浏览器中(版本 91.0.864.37)的案例中,特定的UXSS漏洞(CVE-2021-34506)源于翻译功能中的一段代码没有正确清洁输入。这意味着攻击者可以在网页的任意位置插入恶意的JavaScript代码,一旦用户点击地址栏的翻译提示按钮,这段代码就会被执行。

通过百度,bing,或者其他搜索引擎去搜索跨站语句并进入存在跨站语句的网页时候,如果使用到了浏览器的翻译功能的时候,这个语句会被执行。不是针对网站的,是针对浏览器自己的。

这些漏洞一般要隔很久才能爆一个,所以比较难挖掘。

FlashXSS

swf是小动画一些视频类的后缀,小游戏很多都是用的swf,网页广告等,

在互联网上显示矢量图形、动画、音频和视频内容。SWF文件通常包含ActionScript代码,这是一种专门为Flash平台设计的脚本语言。由三部分组成:

  • 图形和动画数据
  • ActionScript代码
  • 声音和视频数据

而swf和js是可以相互调用的,ActionScript中的ExternalInterface类提供了一组方法,允许SWF文件与嵌入它的HTML页面中的JavaScript进行通信。

SWF文件可以使用ExternalInterface.call方法来调用JavaScript函数。这个方法接受一个函数名和一个参数数组作为输入,并尝试在全局作用域中调用具有该名称的JavaScript函数。

// ActionScript代码
if (ExternalInterface.available) {ExternalInterface.call("myJavaScriptFunction", "Hello from SWF!");
}

在上面的例子中,myJavaScriptFunction是JavaScript中定义的一个函数,它将接收来自SWF文件的字符串参数。 

案例:phpwind9.0_5275

白盒分析,找相关swf文件进行反编译,直接打开看到的是乱码

黑盒角度其实也是,通过爬取是否找到swf文件,然后进行反编译

这里是下载了源码,找到项目中phpwind9.0_5275\phpwind\www\res\js\dev\util_libs\swfupload\Flash\swfupload.swf

利用反编译工具ffdec_15.1.0,可以对swf进行反编译处理。

主要看xx.swf文件的脚本代码:

 

上面提到swf调用js代码的函数:ExternalInterface.call 执行JS代码
在swf中,ExternalInterface.call函数调用JavaScript代码。

所以在反编译的代码中搜索ExternalInterface.call,这个函数是用来调用JavaScript代码的

phpwind9.0_5275\phpwind\www\res\js\dev\util_libs\jPlayer\Jplayer.swf可以搜索到关键代码ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",JplayerEvent.JPLAYER_READY,this.extractStatusData(this.commonStatus));
通过this.jQuery这个变量进行传参,

 

追踪变量jQuery,可以看到关键性代码:this.jQuery = loaderInfo.parameters.jQuery + "(\'#" + loaderInfo.parameters.id + "\').jPlayer";

可以看到通过loaderInfo.parameters属性,获取从宿主网页传递过来的参数,由jQuery变量接收。

 那么就可以构造payload:
127.0.0.1:8104/res/js/dev/util_libs/jPlayer/Jplayer.swf?jQuery=alert(1))}catch(e){}//

this.jQuery = (((alert(1))}catch(e){}// + "('#") + loaderInfo.parameters.id) + "').jPlayer");

黑盒怎么测试呢,可以寻找网站有没有swf格式文件,然后下载下来进行反编译,看他是否有安全问题。地址mickeymouse24.com/games/

这个案例是从别人那里copy的,我个人持怀疑态度,我看代码理解的话,jQuery应该是js传入的,应该是这段代码,var c, d = ...:这里定义了两个变量,c 用于稍后存储创建的 Flash 对象元素,d 是一个字符串,包含了传递给 Flash 对象的参数(如 jQueryidvolmuted 等)。在var d = "jQuery=" + encodeURI(this.options.noConflict) + "&id=" + encodeURI(this.internal.self.id) + "&vol=" + this.options.volume + "&muted=" + this.options.muted;这行代码中,虽然encodeURI被用于对部分参数进行编码,但如果this.options.noConflictthis.internal.self.idthis.options.volumethis.options.muted这些值来自不可信的源

我把代码copy出来:

if (this.flash.used) {var c, d = "jQuery=" + encodeURI(this.options.noConflict) + "&id=" + encodeURI(this.internal.self.id) + "&vol=" + this.options.volume + "&muted=" + this.options.muted;if (b.browser.msie && Number(b.browser.version) <= 8) {d = ['<param name="movie" value="' + this.internal.flash.swf +'" />', '<param name="FlashVars" value="' + d + '" />', '<param name="allowScriptAccess" value="always" />', '<param name="bgcolor" value="' + this.options.backgroundColor + '" />', '<param name="wmode" value="' + this.options.wmode + '" />'];c = document.createElement('<object id="' + this.internal.flash.id + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0"></object>');for (var e = 0; e < d.length; e++) c.appendChild(document.createElement(d[e]))} else e = function(a, b, c) {var d = document.createElement("param");d.setAttribute("name", b);d.setAttribute("value", c);a.appendChild(d)}, c = document.createElement("object"), c.setAttribute("id", this.internal.flash.id), c.setAttribute("data", this.internal.flash.swf), c.setAttribute("type", "application/x-shockwave-flash"), c.setAttribute("width", "1"), c.setAttribute("height", "1"), e(c, "flashvars", d), e(c, "allowscriptaccess", "always"), e(c, "bgcolor", this.options.backgroundColor), e(c, "wmode", this.options.wmode);this.element.append(c);this.internal.flash.jq = b(c)}

我认为这里才是导致FlashXss的原因,关于这个理解我参考的是下面这篇文章:

Adobe Flash XSS traps
 

PDFXSS

这个比较好理解,就是制作pdf嵌入恶意脚本,然后上传到一些平台或者个人,别人下载打开就会触发

首先是制作带脚本的pdf,用到迅雷PDF 新建页面,视图 - 页面浓缩图

点击浓缩图,右键属性,属性里面 - 动作

选中,新添加JavaScript代码

 新增代码app.alert(1);

然后保存为1.pdf,制作完成。
直接打开这个pdf没有任何问题(但不排除pdf阅读器也能执行脚本漏洞),但是把它放在浏览器进行访问,就会进行弹窗

 测试中只有火狐不进行弹窗

漏洞利用:

  很多网站有文件上传功能,把带有跨站代码的PDF进行上传上去,然后得到文件的下载地址(必须是直连地址),把地址发给别人访问,如果这个平台没有做PDFXSS的漏洞进行过滤,当别人打开这个链接,这个PDF就会弹窗,这样就可以做成一个钓鱼地址。

可以测试上传PDF文件的平台,比如腾讯文档、百度网盘等

 


http://www.ppmy.cn/embedded/154045.html

相关文章

Golang 并发之 Goroutine

Goroutine 是 Go 编程语言中的一个重要概念。它是 Go 语言实现并发的基础,可以简单地理解为 Go 语言中的轻量级线程。 具体来说,Goroutine 有以下特点: 1.轻量级: Goroutine 的创建和切换都非常快速,只需要几微秒。这与操作系统级别的线程相比要快得多。 2.并发性: Gorout…

工业视觉2-相机选型

工业视觉2-相机选型 一、按芯片类型二、按传感器结构特征三、按扫描方式四、按分辨率大小五、按输出信号六、按输出色彩接口类型 这张图片对工业相机的分类方式进行了总结&#xff0c;具体如下&#xff1a; 一、按芯片类型 CCD相机&#xff1a;采用电荷耦合器件&#xff08;CC…

【深度学习】PyTorch:手写数字识别

在这个技术博客中,我们将一起探索如何使用PyTorch来实现一个手写数字识别系统。这个系统将基于经典的MNIST数据集,这是一个包含60,000个训练样本和10,000个测试样本的手写数字(0-9)数据库。通过这个项目,你将了解如何使用PyTorch进行深度学习模型的构建、训练和评估。 文…

问题记录-Linux 下.sh脚本中变量不识别-2025-1-14

源文件: CROSS_COMPILE=/opt/cross_chain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- CC = $(CROSS_COMPILE)g++ 运行 ./auto.sh: line 4: CROSS_COMPILE: command not found ./auto.sh: line 4: CC: command not found 分析: 在 sh 脚本中…

Linux 高级路由 —— 筑梦之路

Linux 高级路由详解 本文将基于您提供的 Linux 高级路由极简教程 文章&#xff0c;深入探讨 Linux 高级路由的概念、配置方法以及应用场景。 一、什么是 Linux 高级路由&#xff1f; Linux 高级路由是指利用 Linux 内核提供的强大网络功能&#xff0c;实现超越传统路由表和默…

鸿蒙面试 2025-01-11

ArkTs 和TS的关系&#xff1f; ArkTS&#xff08;方舟开发语言&#xff09;与 TypeScript&#xff08;TS&#xff09;存在紧密联系&#xff0c;同时也有显著区别&#xff1a; 联系 语法基础&#xff1a;ArkTS 在语法层面大量借鉴了 TypeScript &#xff0c;TypeScript 里诸如…

SOLID原则学习,接口隔离原则(Interface Segregation Principle, ISP)

文章目录 1. 定义2. 为什么要遵循接口隔离原则&#xff1f;3. 违反接口隔离原则的例子4. 遵循接口隔离原则的改进5. 总结 1. 定义 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09; 接口隔离原则是面向对象设计中的五大原则&#xff08;SOLID&#…

Deep Attentional Guided Image Filtering

This work achieved the first place in the real depth map SR challenge held in ACM ICMR 2021. 目的&#xff1a;从一个target image(如低分辨的深度图)和guidance image(如高分辨的RGB图)&#xff0c;得到输出(如高分辨的深度图)。 主要思想是考虑了target和guidance之间的…