文件类型触发XSS
上传xss – 配合钓鱼 – 上传一个文件,这个文件能执行js代码
SVG-XSS
SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。
写入xss语句
<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>
</svg>
浏览器打开此svg文件即可触发xss
通过文件上传此xss文件,上传到网站某目录下,通过访问触发 — 上传xss
PDF-XSS
注意:必须使用浏览器打开才能触发(基于web),本地应用一般无效 — 用于钓鱼攻击
1、创建PDF,加入动作JS
2、通过文件上传获取直链
3、直链地址访问后被触发
项目:迅捷PDF编辑器试用版

本地:当使用浏览器查看此pdf文件时,触发xss
服务端:当有人访问这个上传后的直链地址后触发xss

SWF-XSS
制作swf-xss文件:
1、新建swf文件
2、F9进入代码区域
3、属性发布设置解析
//取m参数
var m=_root.m;
//调用html中Javascript中的m参数值
flash.external.ExternalInterface.call(m);
触发:?m=alert(/xss/)
项目:Adobe Flash Professional CS6



将此swf上传到网站目录下,使用flashcenter中浏览器进行访问(其他浏览器会下载)
传入参数m=alert(1),触发xss

测试swf文件xss安全性: — 审计
- 上传swf文件可以做xss漏洞
- 找到目标上存在的swf文件进行反编译后找xss漏洞
1、反编译swf文件
2、查找触发危险函数
3、找可控参数访问触发
xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等
swf反编译工具:https://github.com/jindrapetrik/jpexs-decompiler
打开ffdec软件,打开swf文件,选择脚本,即可反编译查看写入的语句

注意:由于浏览器不同,访问swf文件有些为下载有些为访问查看,测试时多准备几个浏览器
HTML-XSS
单纯在HTML代码中写XSS代码即可,上传到服务器,被访问就可触发
其他:XML格式等
挖掘:从安全文件上传到XSS的转换(红队玩法还可以配合钓鱼)
利用文件上传获取文件访问地址,访问触发(浏览器格式解析问题会导致失效)
功能逻辑触发XSS:
PostMessage XSS
一个用于在网页间安全地发送消息的浏览器API。它允许不同的窗口(例如,来自同一域名下的不同页面或者不同域名下的跨域页面)进行通信,而无需通过服务器。通常情况下,它用于实现跨文档消息传递(Cross-Document Messaging),这在一些复杂的网页应用和浏览器插件中非常有用。
安全原因:当发送参数可控且接收方处理不当时,将导致XSS
分析源码:当前页面创建了message事件监听
<script>
// 添加事件监控消息
window.addEventListener("message", (event) => {
location.href = `${event.data.url}`;
});
</script>
黑盒挖掘:
谷歌浏览器插件:只要是当前页面创建了message事件监听,这个插件就会定位到其代码。
https://github.com/fransr/postMessage-tracker
白盒挖掘:
找代码中此操作类函数及关键字分析
复盘:https://mp.weixin.qq.com/s/M5YIkJEoHZK6_I7nK6aj5w
localStorage型xss(存储型Xss升级版)
Web应用使用localStorage在用户浏览器中存储数据。localStorage允许网页在本地存储键值对,这些数据可以在浏览器关闭后仍然保留,并且在同一域名下的不同页面之间共享。当应用程序从localStorage中读取数据并将其显示在页面上时,如果没有对数据进行充分的验证和过滤,攻击者就有可能通过修改localStorage中的数据来注入恶意脚本实现XSS。
安全原因:
当localStorage可控且有页面有操作其数据,将导致XSS


当写入xss语句时 — 存储于本地,类似于存储型xss
当再次读取时触发xss
<img src="x" onerror="alert('xss 攻击')">

黑盒挖掘:
寻找输入点(如表单、搜索框、评论区等),构造测试用例找页面调用
白盒挖掘:
查找与localStorage相关的代码段分析数据存储及数据读取
挖掘:先看目标应用localStorage
1、先找能控制的键名键值(怎么找)
2、再找对键名键值做输出操作(怎么找)– 去加载的js里搜索有没有对应的键名,看相关代码是如何操作的
第三方或框架等因素触发XSS
Jquery XSS
Vue xss
React xss
Electron XSS
mxss
uxss
……
本节知识点
Web攻防-XSS跨站-文件类型-html&pdf&swf&svg
Web攻防-XSS跨站-功能逻辑-postMessage&localStorage
