【xss漏洞-svg标签】详解svg标签+触发XSS

文章介绍了SVG标签在HTML中的使用,包括直接在<body>、<div>和<img>标签内的应用,以及onload事件如何在SVG加载完成后触发。通过示例展示了如何在不同场景下利用SVG标签,并提供了实战项目的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、理论知识

SVG标签的使用

二、实战部分


一、理论知识

SVG标签的使用

代码中的SVG标签和onload事件本身并不依赖于其他特定的标签来触发弹窗。无论它们被放置在哪个标签内,只要浏览器解析并加载了这个SVG标签,onload事件就会被触发。

注:SVG标签通常是在HTML文档中嵌入使用的,并且可以放置在许多不同的HTML标签内。具体取决于网页的结构和用途。以下是一些常见的情况:

<body>标签:

SVG标签可以直接放置在<body>标签内,这样当整个页面加载完毕时,onload事件将触发。

<body>
  <svg onload="alert(document.domain)">
    <!-- SVG内容 -->
  </svg>
</body>

<div>标签:

SVG标签可以作为<div>标签的子元素,当该<div>标签加载完成时,onload事件将触发。

<div>
  <svg onload="alert(document.domain)">
    <!-- SVG内容 -->
  </svg>
</div>
 

<img>标签:

SVG标签也可以作为<img>标签的src属性值,当图像加载完成时,onload事件将触发。

<img src="data:image/svg+xml,<svg onload='alert(document.domain)'>">

二、实战部分

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)icon-default.png?t=N5K3https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge

### SVG文件中的XSS漏洞原理 SVG(Scalable Vector Graphics)是一种基于XML的矢量图形格式,允许嵌入脚本和事件处理程序。由于其支持JavaScript代码执行的能力,当恶意用户通过上传或注入含有恶意脚本的SVG文件时,可能会引发跨站脚本攻击(XSS)。例如,在某些情况下,浏览器会解析并渲染这些SVG文件,并执行其中定义的`<script>`标签或者绑定到特定事件上的JavaScript代码。 常见的事件触发机制包括但不限于以下几种[^3]: - `<svg onload=alert(document.domain)>` - `<object onerror=alert(document.domain)>` - `<input onfocus=alert(document.domain)>` 上述示例展示了如何利用不同的HTML事件属性来实现XSS攻击。一旦用户的浏览器加载了这样的SVG文件,就会自动运行指定的JavaScript代码,从而可能窃取敏感数据、劫持会话或其他破坏行为。 --- ### SVG文件中XSS漏洞的原因分析 1. **缺乏输入验证**: 如果服务器端未对上传的SVG文件内容进行严格过滤,则容易被植入恶意脚本。 2. **不安全的内容展示方式**: 当网站直接将未经转义处理过的SVG图像显示给其他访问者查看时,就给了潜在威胁可乘之机。 3. **绕过技术的存在**: 即使有简单的防御措施如黑名单策略,攻击者仍可通过编码变形等方式规避检测[^2]。 例如下面几个变种可以用来绕过基本的安全检查: ```html <svg onload%09=alert(1)> <svg %09onload=alert(1)> <svg %09onload%20=alert(1)> <svg onload%09%20%28%3b=alert(1)> ``` 以上实例表明即使存在一些字符限制条件下的防护手段也可能失效。 --- ### 防护方法 为了有效防止由SVG引起的XSS风险,可以从以下几个方面着手: #### 一、服务端层面 - **严格的MIME类型校验**:仅接受合法类型的文件上传请求,拒绝任何不符合预期标准的数据包传输过来[^4]。 - **静态资源隔离存储**:把用户提交上来的媒体资料单独存放在专用目录下并通过专门子域名提供外链调用,这样即便出现问题也不会影响主站点正常运作。 - **Content Security Policy (CSP)** 设置:启用HTTP头信息中的CSP指令限定哪些源能够向页面供应动态脚本片段,进一步减少未经授权的操作可能性。 示例配置如下所示: ```http Content-Security-Policy: default-src 'self'; script-src 'none' ``` #### 二、客户端层面 - **禁用危险功能**:对于需要呈现来自第三方不可信环境里的图片素材场景而言,考虑采用沙盒模式(Sandboxing),即借助iframe容器配合相应参数剥夺内部网页部分权限以降低危害程度。 HTML代码样例如此: ```html <iframe sandbox="allow-scripts allow-same-origin" src="unsafe-svg.svg"></iframe> ``` - **DOM净化库应用**:运用成熟的开源工具比如DOMPurify去清理掉所有可疑节点及其关联动作后再予以展现出来[^1]。 综上所述,针对SVG文件内的XSS隐患采取综合性的预防方案至关重要,既要在源头处做好把控工作又要兼顾终端用户体验质量保障两者平衡发展才是长久之计。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值