第60天:Web攻防-XSS跨站文件类型功能逻辑SVGPDFSWFPMessageLocalStorage

news2025/3/25 20:10:03
#知识点

1、Web攻防-XSS跨站-文件类型-html&pdf&swf&svg

2、Web攻防-XSS跨站-功能逻辑-postMessage&localStorage

术语:上传xss->其实就是将有恶意js代码的各类文件(swf,pdf,svg,html.xml等)上传->访问该文件->让浏览器解析执行其中的恶意代码->触发xss->其实作用不大(水漏洞)=>上传XSS主要是红队配合钓鱼用的(让受害者访问该文件链接触发xss,从而获取受害者cookie等信息)

一、文件类型触发XSS->SVG-XSS

SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。

创建1.svg文件->文件中添加以下代码

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />

<script>alert(1)</script> #1.svg文件中的恶意代码

</svg>

②上传该svg文件->用浏览器访问该文件:http://xxxxx/1.svg->浏览器便可解析执行该文件中的恶意js代码->触发xss

二、文件类型触发->PDF-XSS

1、用“迅捷PDF编辑器”创建PDF文件1.pdf,1.pdf中加入动作JS代码(如代码app.alert())->需要用浏览器打开该pdf才能执行触发xss->使用PDF编辑器打开就不会触发xss

2、通过文件上传获取直链,将该pdf文件在上传处上传

3、直链地址访问后被触发->访问http://xxxxx/1.pdf->浏览器便可解析执行该文件中的恶意js代码app.alert()->触发xss

项目:迅捷PDF编辑器试用版->可以创建pdf文件,并在pdf文件中写入代码

三、文件类型触发->SWF-XSS

也看浏览器,有的浏览器访问swf文件会直接将swf文件下载下来,有的则会解析执行

1、制作swf-xss文件:

①新建1.swf文件

②F9进入代码区域->在swf文件中插入如下js代码

③属性发布设置解析js代码

********

//取m参数

var m=_root.m;

//调用html中Javascript中的m参数值,通过修改url中的m参数值,实现xss

flash.external.ExternalInterface.call(m);->该js代码是触发xss的关键

********

触发:http://xxxxxx/1.swf?m=alert(xss) ->m传参,可以控制要执行的js恶意代码

项目:Adobe Flash Professional CS6->该软件可以写SWF文件并在文件中插入js代码

2、测试swf文件xss安全性:

①反编译swf文件->有时访问网站,可以意外获取下载swf文件

②反编译后查找swf触发危险函数->如“flash.external.ExternalInterface”

③找该危险可控参数->通过参数访问触发xss

xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等

项目:JPEXS Free Flash Decompiler->可以将swf文件反编译出来,还原源码->通过源码分析可以尝试寻找该swf文件是否有xss利用点,如可利用控制执行xss的参数(再源码中先找是不是有该代码flash.external.ExternalInterface)

3、swf文件两个利用方向:

①自己制作有触发xss漏洞js代码的swf文件->再文件上传swf文件->利用可控参数可以做xss漏洞

②找到目标上存在的swf文件->下载下来进行反编译后->找xss漏洞=>同理:上面的pdf,svg,html

文件如果可以获取,也可以分析一下里面的代码(看是否可以通过url传参来挖掘xss漏洞)

四、文件类型触发-HTML-XSS

单纯在html文件中下js代码->进行文件上传->访问该文件->触发XSS代码即可

五、文件类型触发-其他:XML格式等

挖掘:从安全文件上传到XSS的转换(红队玩法还可以配合钓鱼)

利用文件上传获取文件访问地址,访问触发(浏览器格式解析问题会导致失效)

五、功能逻辑触发XSS:

1、PostMessage XSS(重点->近年新出的xss)

一个用于在网页间安全地发送消息的浏览器API。它允许不同的窗口(例如,来自同一域名下的不同页面或者不同域名下的跨域页面)进行通信,而无需通过服务器。通常情况下,它用于实现跨文档消息传递(Cross-Document Messaging),这在一些复杂的网页应用和浏览器插件中非常有用。

安全原因:当发送参数可控且接收方处理不当时,将导致XSS

模拟漏洞挖掘场景:

①打开目标站点:http://192.168.1.2:91/60/xssreceive.html

②分析源码如下:

**********

<script>

// 添加事件监控消息

window.addEventListener("message", (event) => {

location.href = `${event.data.url}`; #源码中的这个参数很关键->思考怎样可以控制该源码中的这个参数值

});

</script>

***********

③自己写一个用来攻击的html文件,该html可以控制上面的${event.data.url}从而触发xss

黑盒挖掘:

如何去挖这种隐藏比较深的漏洞,这里强推一个国外白帽写的谷歌浏览器插件:

GitHub - fransr/postMessage-tracker: A Chrome Extension to track postMessage usage (url, domain and stack) both by logging using CORS and also visually as an extension-icon安装之后,只要是当前页面创建了message事件监听,这个插件就会定位到其代码。

挖掘到该漏洞的关键在于:目标站点的html文件里面有没有Message事件监听->如果有,就可以构造html攻击文件,用postmessage去控制目标文件中的${event.data.url}参数,从而触发xss

白盒挖掘:

找代码中此操作类函数及关键字分析

复盘:https://mp.weixin.qq.com/s/M5YIkJEoHZK6_I7nK6aj5w

2、localStorage型xss(存储型Xss升级版)重点->近年新出的xss)

Web应用使用localStorage在“用户浏览器”中存储数据;存储型xss是将用户的输入存在服务端数据库中(这是两者的区别点)localStorage允许网页在本地存储键值对,这些数据可以在浏览器关闭后仍然保留,并且在同一域名下的不同页面之间共享。当应用程序从localStorage中读取数据并将其显示在页面上时,如果没有对数据进行充分的验证和过滤,攻击者就有可能通过修改localStorage中的数据来注入恶意脚本实现XSS。

安全原因:当localStorage可控且有页面有操作其数据,将导致XSS

黑盒挖掘:寻找输入点(如表单、搜索框、评论区等),构造测试用例找页面调用

白盒挖掘:查找与localStorage相关的代码段分析数据存储及数据读取

挖掘:先看目标应用localStorage

1、先找能控制的键名键值(怎么找)

2、再找对键名键值做输出操作(怎么找)

其他:第三方或框架等因素触发XSS

Jquery XSS

Vue xss

React xss

Electron XSS

mxss

uxss

......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++都有哪些开源的Web框架?

CppCMS CppCMS是一个采用C语言开发的高性能Web框架&#xff0c;通过模版元编程方式实现了在编译期检查RESTful路由系统&#xff0c;支持传统的MVC模式和多种语言混合开发模式。 CppCMS最厉害的功能是WebSocket&#xff0c;10万连接在内存中长期保存占用的大小不超过600MB&…

RISC-V AIA学习2---IMSIC

我在学习文档这章时&#xff0c;对技术术语不太理解&#xff0c;所以用比较恰当的比喻来让自己更好的理解。 比较通俗的理解&#xff1a; 将 RISC-V 系统比作一个工厂&#xff1a; hart → 工厂的一条独立生产线IMSIC → 每条生产线配备的「订单接收员」MSI 中断 → 客户通过…

2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现&#xff1a; 甲骨文是我国目前已知的最早成熟的文字系统&#xff0c;它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值&#xff0c;不仅对中国文…

Python----计算机视觉处理(Opencv:霍夫变换)

一、霍夫变换 霍夫变换是图像处理中的一种技术&#xff0c;主要用于检测图像中的直线、圆或其他形状。其基本思想就是将图像空间中的点映射到参数空间中&#xff0c;通过在参数空间中寻找累计最大值来实现对特定形状的检测。 二、 霍夫直线变换 那么对于一个二值化后的图形来说…

多语言生成语言模型的少样本学习

摘要 大规模生成语言模型&#xff0c;如GPT-3&#xff0c;是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言&#xff0c;但其训练数据以英语为主&#xff0c;这可能限制了它们的跨语言泛化能力。在本研究中&#xff0c;我们在一个涵盖多种语言的语料库上训练了…

QT开发(4)--各种方式实现HelloWorld

目录 1. 编辑框实现 2. 按钮实现 前面已经写过通过标签实现的了&#xff0c;所以这里就不写了&#xff0c;通过这两个例子&#xff0c;其他的也是同理 1. 编辑框实现 编辑框分为单行编辑框&#xff08;QLineEdit&#xff09;双行编辑框&#xff08;QTextEdit&#xff09;&am…

Flutter 输入组件 Radio 详解

1. 引言 在 Flutter 中&#xff0c;Radio 是用于单选的按钮组件&#xff0c;适用于需要用户在多个选项中选择一个的场景&#xff0c;如表单、设置选项等。Radio 通过 value 和 groupValue 进行状态管理&#xff0c;并结合 onChanged 监听选中状态的变化。本文将介绍 Radio 的基…

3.23学习总结

完成了组合Ⅲ&#xff0c;和电话号码的字母组合两道算法题&#xff0c;都是和回溯有关的&#xff0c;很类似。 学习了static的关键字和继承有关知识

力扣刷题-热题100题-第23题(c++、python)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 记录前一个指针&#xff0c;当前指针&am…

vue3 项目的最新eslint9 + prettier 配置

注意&#xff1a;eslint目前升级到9版本了 在 ESLint v9 中&#xff0c;配置文件已经从 .eslintrc 迁移到了 eslint.config.js 配置的方式和之前的方式不太一样了&#xff01;&#xff01;&#xff01;&#xff01; 详见自己的语雀文档&#xff1a;5、新版eslint9prettier 配…

SAP GUI Script for C# SAP脚本开发快速指南与默认主题问题

SAP GUI Script for C# 快速指南 SAP 脚本的快速使用与设置. 解决使用SAP脚本执行后,默认打开的SAP是经典主题的问题 1. 解决默认主题问题 如果您使用的是SAP GUI 740&#xff0c;并遇到无法打开对话框的问题&#xff0c;请先将主题设置为经典主题&#xff08;Classic Theme…

FFmpeg + ‌Qt‌ 简单视频播放器代码

一个基于 ‌FFmpeg 4.x‌ 和 ‌Qt‌ 的简单视频播放器代码示例&#xff0c;实现视频解码和渲染到 Qt 窗口的功能。 1&#xff09;ffmpeg库界面&#xff0c;视频解码支持软解和硬解方式。 2&#xff09;QImage/QPixmap显示视频图片。 ‌1. Qt 项目配置&#xff08;.pro 文件&…

Unity跨平台构建快速回顾

知识点来源&#xff1a;人间自有韬哥在&#xff0c;豆包 目录 一、发布应用程序1. 修改发布必备设置1.1 打开设置面板1.2 修改公司名、游戏项目名、版本号和默认图标1.3 修改 Package Name 和 Minimum API Level 2. 发布应用程序2.1 配置 Build Settings2.2 选择发布选项2.3 构…

【嵌入式学习2】内存管理

## C语言编译过程 预处理&#xff1a;宏定义展开、头文件展开、条件编译&#xff0c;这里并不会检查语法&#xff0c;将#include #define这些头文件内容插入到源码中 gcc -E main.c -o main.i 编译&#xff1a;检查语法&#xff0c;将预处理后文件编译生成汇编文件&#xff…

TDengine又新增一可视化工具 Perspective

概述 Perspective 是一款开源且强大的数据可视化库&#xff0c;由 Prospective.co 开发&#xff0c;运用 WebAssembly 和 Web Workers 技术&#xff0c;在 Web 应用中实现交互式实时数据分析&#xff0c;能在浏览器端提供高性能可视化能力。借助它&#xff0c;开发者可构建实时…

【Linux文件IO】Linux中标准IO的API的描述和基本用法

Linux中标准IO的API的描述和基本用法 一、标准IO相关API1、文件的打开和关闭示例代码&#xff1a; 2、文件的读写示例代码&#xff1a;用标准IO&#xff08;fread、fwrite&#xff09;实现文件拷贝(任何文件均可拷贝) 3、文件偏移设置示例代码&#xff1a; 4、fgets fputs fget…

Ant Design Vue Select 选择器 全选 功能

Vue.js的组件库Ant Design Vue Select 选择器没有全选功能&#xff0c;如下图所示&#xff1a; 在项目中&#xff0c;我们自己实现了全选和清空功能&#xff0c;如下所示&#xff1a; 代码如下所示&#xff1a; <!--* 参数配置 - 风力发电 - 曲线图 * 猴王软件学院 - 大强 …

系统与网络安全------网络应用基础(1)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 TCP/IP协议及配置 概述 TCP/IP协议族 计算机之间进行通信时必须共同遵循的一种通信规定 最广泛使用的通信协议的集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的数据通信 主机…

JDK 24 发布,新特性解读!

一、版本演进与技术格局新动向 北京时间3月20日&#xff0c;Oracle正式发布Java SE 24。作为继Java 21之后的第三个非LTS版本&#xff0c;其技术革新力度远超预期——共集成24项JEP提案&#xff0c;相当于Java 22&#xff08;12项&#xff09;与Java 23&#xff08;12项&#…

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…