第二十篇:持久性XSS变异

栏目: 编程工具 · 发布时间: 6年前

第二十篇:持久性XSS变异

背景

在我之前的报告中,我们了解了一种特殊类型的持久性XSS攻击—— the unvalidated oEmbed attack 。这种攻击允许我们通过oEmbed功能来注入我们的HTML和javascript代码。

oEmbed是一种开放格式 ,用来将一个网站中的内容嵌入到另一个网站中。几乎所有富媒体平台都支持oEmbed标准。例如:你只需要将视频链接粘贴在文章中,即可轻松地将Youtube视频添加到Wordpress博客里。Wordpress会将此链接转换为HTML代码,这个HTML就会加载Youtube的视频播放器并且播放该视频。

例如:如果我在本篇文章中粘贴我的推特个人资料链接,那么媒体平台将创建一个包含我的推特个人资料的框架,这就是oEmbed的功能。正如我们之前所了解的那样,它们易受攻击并且允许未经验证的oEmbeds。

第二十篇:持久性XSS变异

第二十篇:持久性XSS变异

[*]oEmbed端点由Twitter指定,Medium将其用于嵌入

丰富视觉内容的另一种方法是使用 Open Graph Protocol 。网站可以将Open Graph标签添加到它们的网页,用来指定被嵌入的内容类型(图片、视频、gif)

第二十篇:持久性XSS变异

[*]维基百科有一个

大多数平台在嵌入内容之前都会先检查这些特定的oEmbed和Open Graph标签的URL,他们按照特定的顺序执行检查操作。在检查完所有标签之后,他们才会决定是否嵌入以及怎样嵌入链接。

嵌入式的最大优点是读者不必离开博客就能查看到媒体丰富的内容(例如:视频,图像,演示文稿)。此外,对于媒体平台,如Vimeo和Youtube,这是增加他们访问量的好办法。

大多数允许您嵌入外部内容的平台都具有白名单,只有白名单上域名的url才能被嵌入,比如Wordpress。您肯定不希望将未经验证的HTML代码注入到您的平台上。

但是如果这个白名单失效了,并且我们能够将我们的恶意代码注入到目标平台的话会发生什么呢?

之前我们已经证明过oEmbed是vulnerable的,现在再来看看我们是否可以通过操作Open Graph标签再次攻陷目标,let’s give it a try!

验证目标

如果让我们寻找在哪里可以嵌入外部内容的地方的话,博客往往是最好的选择。点击下图 Write an Article 按钮编辑文章

第二十篇:持久性XSS变异

我们得到一个漂亮又干净的编辑器,它允许我们编写文章,包括标题和内容。在我们的光标旁边有一个小图标,它允许我们”添加图像或者视频以获得视觉效果”。

第二十篇:持久性XSS变异

如果我们按下这个小图标,我们就可以选择链接按钮,并在我们的博客中添加丰富视觉的内容

第二十篇:持久性XSS变异

嵌入请求:

是时候启动Burp Suite并检查我们的网络流量了,在我们填写URL之后会发生什么?

第二十篇:持久性XSS变异

[*]链接被转换为嵌入Youtube播放器的HTML代码

可以看到LinkedIn将我们输入的URL转换为我们可以嵌入的HTML代码。响应是将 URL编码 之后的内容,解码之后如下所示:

{“embedIframe”:”<iframe src=\”https://www.linkedin.com/pulse/api/edit/embed?embed={"request":{"originalUrl":"https://www.youtube.com/watch?v=9hWgA7qjK2c","finalUrl":"https://www.youtube.com/watch?v=9hWgA7qjK2c"},"images":[{"width":480,"url":"https://i.ytimg.com/vi/9hWgA7qjK2c/hqdefault.jpg","height":360},{"width":1920,"url":"https://i.ytimg.com/vi/9hWgA7qjK2c/maxresdefault.jpg","height":1080}],"data":{"com.linkedin.treasury.Video":{"width":480,"html":"<iframe scrolling=\”no\” allowfullscreen src=\”//media.licdn.com/embeds/media.html?src=https://www.youtube.com/embed/9hWgA7qjK2c?feature=oembed&url=https://www.youtube.com/watch?v=9hWgA7qjK2c&type=text/html&schema=youtube\" width=\”480\” frameborder=\”0\” class=\”embedly-embed\” height=\”270\” />”,”height”:270}},”provider”:{“display”:”YouTube”,”name”:”YouTube”,”url”:”https://www.youtube.com/"},"author":{"name":"321 Relaxing — Meditation Relax Clips”},”description”:{“localized”:{“en_US”:”Rain HD video and forest, relaxing rain sounds and forest sounds for sleeping meditation. Nature sounds relaxation. Rainforest sounds: https://www.youtube.co..."}},"title":{"localized":{"en_US":"Rain Sounds and Forest Sounds — Relaxing Sleep”}},”type”:”video”}&signature=AcdfNDjBXZOjo2vdz4EOixtGBrlx\”></iframe>”,”universal”:true}

编辑器将这个iframe解析到我们的文章中,这导致视频播放器出现之前会有三个iframe互相嵌套。

第二十篇:持久性XSS变异

这意味着即使我们能够注入我们自己的恶意HTML代码,我们也无法访问LinkedIn域名;我们在iframe中被隔离了。我们无法访问任何LinkedIn cookies,并且我们无法操纵iframe之外的HTML。

但是我们可以注入一个虚假的LinkedIn登录屏幕并窃取访问者的密码,这种可能性还是挺大的。LinkedIn嵌入内容时没有任何视觉上的提示,被嵌入的内容只是干净的无边框,因此访问者很难将其与真正的登录屏幕区分开来。

一个完美的网络钓鱼登录:

首先我们需要设计钓鱼登录屏幕,因为我们希望让非技术人员也能够理解到它的严重性。一个简单的javascript警告框通常不够说服力。

SnappySnippet是一个复制其它网站HTML元素的工具。该Chrome扩展程序允许您选择网站中的元素,并将其粘贴为纯HTML和CSS代码

第二十篇:持久性XSS变异

我们将来自SnappySnippet的代码粘贴到一个新的HTML文件中,稍微调整一下,然后在最后添加一些javascript,以便捕获email和密码。如果有人提交表单,我们希望在javascript弹窗中显示登录详情作为概念证明

第二十篇:持久性XSS变异

让我们将这个虚假的登录html文件上传到我们自己的服务器上,并尝试将其嵌入我们的LinkedIn文章中。看看如果我们在没有任何oEmbed或者Open Graph标签的情况下链接会发生什么。

第二十篇:持久性XSS变异

我们可以看到它被放到了一个”通用嵌入式包装器”中,只是显示了我们的URL,周围有一个小的灰色边框而已。

利用Open Graph:

如果我们仔细查看Open Graph 协议规范,我们会发现有一个名为og:video的标签。它定义了如何嵌入视频播放器。

第二十篇:持久性XSS变异

现在我们创建一个带有og:video标签的HTML文件,然后在其中加载我们构造的虚假登录链接而不是视频播放器,结果会怎样呢?

第二十篇:持久性XSS变异

[*]我们试图将该文档作为视频播放器嵌入到文章中

第二十篇:持久性XSS变异

[*]我们的虚假登录被加载,LinkedIn认为它是一个真正的视频播放器


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Linux Programming Interface

The Linux Programming Interface

Michael Kerrisk / No Starch Press / 2010-11-6 / GBP 79.99

The Linux Programming Interface describes the Linux API (application programming interface)-the system calls, library functions, and other low-level interfaces that are used, directly or indirectly, b......一起来看看 《The Linux Programming Interface》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具