【Web攻防-08】XSS跨站-文件类型&功能逻辑&SVG&PDF&SWF&PMessage&LocalStorage

文件类型触发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

十二亿七千光年
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇