用SVG来找点乐子,Svg Fun Time Firefox Svg Vector

admin 2021年4月2日19:49:02评论67 views字数 1001阅读3分20秒阅读模式

感觉挺好玩的就翻译了一下 求轻拍 >.

原文链接:http://insert-script.blogspot.co.at/2014/02/svg-fun-time-firefox-svg-vector.html

0x00 一个新的FF SVG Vector

如果你对SVG没有任何的概念,可能阅读起来会比较吃力。如果你觉得看不懂可以先百度一下SVG是什么,我们都用它在干一些什么。

首先介绍一下SVG里的元素:

使用结合#来可以引用外部SVG文件中的元素。举个例子来说就是这样:

test.html:

external.svg:



这里需要注意的是这个外部的svg文件需要和引用这个文件的网站同源。这意味着这种方法在XSS的利用上会十分的鸡肋,或者说没有存在的意义。但是有什么方法可以让它变成一个有用的XSS向量呢?Firefox在这里就可以帮上忙。因为我们都知道我们可以使用data URI的方式在内部创建一个svg文件来调用它。利用代码会像这样:

我们再进一步看一下这个svg文件base64解码后的样子:



我们之前也强调过,我们需要做一个有意义的攻击向量。但是这个方法存在一个缺陷,就是需要用户点击我们的rect才会触发。但是很少会有用户去点击一些莫名其妙的东西。所以我们需要做一个自动触发的vector.但是有一个问题,就是script标签出现在一个外部的svg当中时,并不会被解析。为了证明这一事实,我会在接下来的POC当中插入一段script。但是值得庆幸的是,svg还支持元素。通过指定该对象所需的扩展属性,就可以实现对非SVG元素的载入了。这意味着我们现在可以使用iframe embed或一些其它的HTML元素。在这里我选择了embed+javascript URL scheme

现在我们会在内部创建的svg文件看起来会像是这样:

让我们再用use元素+data URI来在内部创建这个svg文件:

一个新的FF SVG Vector就这样诞生了。(我用这个方法绕过了某邮箱禁止执行js的限制)

0x01 绕过chrome XSS Auditor

我们还是想和前面一样来引入一个外部的SVG文件。但是我们需要一个同源的SVG文件。这意味着data URI在这里是不可行的(chrome下 data URL都是在独立域执行的,SO..)。但是这也难不倒我们,因为我们可以把一个XSS漏洞用两遍来解决这个问题。

测试页面chrome.php

";
echo $_GET['x'];
echo "

文章来源于lcx.cc:用SVG来找点乐子,Svg Fun Time Firefox Svg Vector

相关推荐: 上传函数,求突破,简单分析一个上传函数

上传函数,求突破 thesums | 2013-12-25 14:04 Function fnUploadImg(ByVal upFile As HttpPostedFile, ByVal uploadPath As String) As String Dim…

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日19:49:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   用SVG来找点乐子,Svg Fun Time Firefox Svg Vectorhttp://cn-sec.com/archives/316772.html

发表评论

匿名网友 填写信息