第二十一篇:存储型XSS(前续)

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

第二十一篇:存储型XSS(前续)

背景

在我们之前的一篇 报告 中,我们学会了关于反射型XSS的知识; reflect XSS 的缺点是我们需要欺骗用户访问攻击者构造好的URL。

但是,如果我们可以将我们的javascript代码存储在页面中呢?

那么影响只会更大;没有特殊构造的URL和万恶的XSS防火墙破坏我们的游戏。我们称之为存储型XSS或者持久性XSS攻击。

一如既往,我们正在寻找鼓励我们挖掘BUG的目标。那么Medium.com怎么样?他们的奖金超级丰厚

第二十一篇:存储型XSS(前续)

确定目标

存储信息并于他人分享信息是Medium的主要业务。我们只需找到一种将我们的恶意代码放入信息并执行它的方法,那么让我们来看看他们的编辑器吧。

编辑器支持不同类型的内容(纯文本,图像和媒体嵌入)

第二十一篇:存储型XSS(前续)

通过媒体嵌入,您可以丰富文章内容。例如:加载外部视频,显示您的twitter个人信息来丰富推文内容等等。要做到这些您只需要按下编辑器的(+)按钮,然后粘贴网址,最后按下回车就可以了,这种有趣的技术名为:oEmbed

第二十一篇:存储型XSS(前续)

[*]真正的oEmbed技术是将内容嵌入而不是图片,译者的博客没有集成类似的技术就只能图片代替

如果你拥有一个像Medium.com这样的平台,你想让自己的网站支持各种类型的嵌入。这意味着您应该要维护一个安全的白名单,不能让所有域名的代码都能嵌入到您的网页中去,这样才能保证安全。

第二十一篇:存储型XSS(前续)

[*]Embed.ly是Medium.com拥有的子公司

为了验证我们的概念,我们做一个fake login

寻找漏洞,Embed.ly如何运作的?

首先,他们声明他们支持oEmbed规范;

那么这是否意味着如果我们的恶意外部url包含正确的oEmbed标记我们就成功了?想象一个包含oEmbed标签的html页面,声明它自己是一个视频播放器,但是它的真实内容是加载一个fake login页面。

很遗憾,只有经过批准的提供者才能嵌入他们的代码。

第二十一篇:存储型XSS(前续)

让我们打开Medium编辑器,看看如果我们尝试嵌入Vimeo视频,浏览器会做什么。由于Vimeo在白名单上,它应该可以工作,我们可以更多地了解Embed.ly的内部工作原理。

第二十一篇:存储型XSS(前续)

[*]1. 请求我们的Vimeo视频的request信息

第二十一篇:存储型XSS(前续)

[*]2. oEmbed的响应信息,mediaResourceId是内部唯一标志符

第二十一篇:存储型XSS(前续)

[*]3. POST请求,告诉Medium.com使用mediaResourceId包含我们的视频

第二十一篇:存储型XSS(前续)

[*]4. 请求oEmbed HTML,用来显示oEmbed

第二十一篇:存储型XSS(前续)

[*]5. 响应oEmbed HTML,包含由Embed.ly托管的Vimeo播放器

第二十一篇:存储型XSS(前续)

[*]6. 请求来自oEmbed HTML中iframe标签的内容

值得注意的是,Embed.ly为每个嵌入的内容创建了一个mediaResourceId。这个mediaResourceId是URL的MD5哈希值。这是一个聪明的举动,允许他们缓存结果。是否有人嵌入已经处理过的网址?Embed.ly立即就能从缓存中提取,不必再去请求一遍。

因此我们需要欺骗Embed.ly为我们的fake login页面创建mediaResourceId。此外,这个mediaResourceId应该提供一个响应,通过iframe加载我们的fake login,这样当Medium请求mediaResourceId的时候就会加载我们的fake login

第二十一篇:存储型XSS(前续)

[*]7. 没有成功

没有公共,我尝试了多种办法均没有达到效果!

所以我们必须考虑其它办法了。

下面的代码是[截图6]的请求内容

GET /widgets/media.html?src=https%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F142424242%3Fapp_id%3D122963&dntp=1&url=https%3A%2F%2Fvimeo.com%2F142424242ℑ=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F540139087_1280.jpg&key=b19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=vimeo

Decoded:

GET /widgets/media.html?src=https://player.vimeo.com/video/142424242?app_id=122963&dntp=1&url=https://vimeo.com/142424242ℑ=https://i.vimeocdn.com/video/540139087_1280.jpg&key=b19fcc184b9711e1b4764040d3dc5c07&type=text/html&schema=vimeo

如果我们可以做某种中间人攻击[MITM]并假装我们是Vimeo呢?我们将更改Vimeo响应,以便加载我们的fake login页面。搜索指向Vimeo播放器的字符串 https://player.vimeo.com/video/142424242 并将其更改为 https://evildomain.ltd/fakelogin

MITM Attack

1. 快速设置:打开你的 PHP 服务器,上传fakelogin.html(包含正确设计的fake login),上传proxy.php(miniProxy,允许我们加载外部URL,更改响应,提供更改后的响应)


以上所述就是小编给大家介绍的《第二十一篇:存储型XSS(前续)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Beginning Google Maps API 3

Beginning Google Maps API 3

Gabriel Svennerberg / Apress / 2010-07-27 / $39.99

This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具