Chrome XSS审计之SVG标签绕过

在一年前,在我的私人Twitter账户 brutal secret ,我分享了一个有趣的方法来通过审计绕过chrome 的xss过滤器。我们将从黑盒测试的角度来观察,一个逻辑假设和结论, 导致我们的 XSS 向量绕过了xss过滤器。

我们从已知的所有 XHTML 解析器 (浏览器) 的麻烦开始:

Scalable_Vector_Graphics(svg):如果你不知道svg可以干什么,点击这里深入了解信息 (点击阅读原文查看链接)

我们需要知道的是, SVG 标记比简单的 XML/HTML 更复杂, 并且对攻击者充满了未知的资源。

开始一个简单的svg标签,我们再继续使用a标签制造一个空锚点.这个a标签创造了一个超链接。嵌套a标签我们制造一个矩形来创造一个可点击区域,最后是像这样的。

注意:由于是国外站。会导致js文件加载失败。请使用合理方法获取国外js文件

我们现在正在寻找一种与元素交互的方法, 但是由于xss过滤程序, 我们不能使用事件处理程序。所以我们将尝试创造一个动画,特别是这个<animate>标签。

animate 标签 采用父元素 (在我们的情况下为 rect 标签) 的一个属性并操作它的值, 例如 “宽度”。它在自己的属性 “from”、”to” 和 “dur” (持续时间) 的帮助下创建动画效果。

有趣的结论是, 我们实际上是在按顺序改变 “宽度” 属性的原始值,

但如果我们针对不同的属性呢?让我们取锚点 (a) 的 href, 它我们没有设置, 但是是隐式的.在属性和<rect>中进行一些调整后, 我们就可以开始了。

通过点击我们的<rect>现在, 我们被重定向到谷歌的网站。因此, 要弹出一个警告框,我们只需要尝试将其更改为 “javascript: alert(1)”

没那么容易,即使试图使用 HTML 编码欺骗xss过滤器也会被阻止

我们回到 SVG 属性参考, 找到一个有趣的替代属性”from” 和 “to”: 动画元素也可以使用 “value” 属性, 为动画提供相同的值.只需将 “值” 设置为 “javascript: alert(1)”, 我们就会再次受阻.但是, 令人惊讶的是, 这次我们使用 HTML 编码的形式成功弹出一个警报,“javas&#99ript:alert(1)”。

奇怪的是, 任何其他任意属性与我们的模糊测试使用的有效载荷将触发一个拦截, 但是似乎是一个 “黑名单”!

我们更改 <rect> 在他前面添加<image> 标签, 更适合于吸引受害者的单击。少量添加文本标记..

boom,点击后我们成功了

此绕过在版本51中找到, 尽管它可能在几个以前的版本中使用,但是它目前仍然可以在本博客写作的时候(2017年8月14日)谷歌 Chrome v60最新版本的时候使用。

注:现在我测试依然可用。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏无原型不设计

UI设计规范:单选按钮 vs 复选框,没那么简单

无论是网页设计,还是移动app设计,都经常用到单选按钮和复选框这两个组件。这两个组件看似意义明确,很好区分,但在实际设计中却很容易用错,带来不好的用户体验。 ...

2903
来自专栏程序员的知识天地

2018前端工程师成长路线图

成为前端工程师,第一步应该是学习HTML/CSS/JavaScript,这是基础。

3222
来自专栏不止是前端

Vue:基于Vue2的饿了么实战总结

3897
来自专栏从零开始学 Web 前端

从零开始学 Web 之 HTML(一)认识前端

前端对于网站来说,通常是指网页,网站的前台部分包括网站的表现层和结构层。因此前端技术一般分为前端设计和前端开发。

1153
来自专栏ytkah

html5开发制作,漂亮html5模板欣赏,H5网站建设

html5是什么? HTML5 是下一代的 HTML(超文本标记语言,网页的组成部分),HTML5是web开发世界的一次重大的改变,能适配pc、手机等各终端,跨...

1.3K6
来自专栏阮一峰的网络日志

也许,DOM 不是答案

有一个词"手机网站"(mobile web),指供手机浏览的网站,但它是不存在的。 人们提到"移动互联网"的时候,其实专指另外一样东西:手机App。 ? 一、W...

3355
来自专栏前端大白专栏

react 在使用数据请求的时候和setState的时候哪个先处理

1975
来自专栏IMWeb前端团队

全响应式web前端开发

本文作者:IMWeb Terrance 原文出处:IMWeb社区 未经同意,禁止转载 ? Responsive web design (RWD) i...

2917
来自专栏ml

JavaWeb学习之环境搭建

 1. HTML(Hyper Text Markup Language) , 超文本标记语言。 HTML文件的后缀名一般是: .htm , .html 表单(f...

2813
来自专栏Coding迪斯尼

寿司快卖,创建一个运行在电脑,手机及Pad上的多屏游戏

本节开始,我们将设计一个养成类游戏。游戏主题是创建一家寿司店,你是主厨,当客户点餐后,你根据菜单配置寿司。我们会先把游戏设计成页面游戏,然后通过不断的调试,将游...

1042

扫码关注云+社区

领取腾讯云代金券