首页
社区
课程
招聘
Mac OSX Safari 8.0.5 UXSS漏洞技术分析
发表于: 2015-6-29 21:08 1144

Mac OSX Safari 8.0.5 UXSS漏洞技术分析

2015-6-29 21:08
1144
新闻链接:1b8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3k6J5k6h3g2T1N6h3k6Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2M7#2)9J5c8Y4y4&6M7%4c8W2L8g2)9J5c8U0M7I4x3U0f1&6i4K6u0W2K9s2c8E0L8l9`.`.
新闻时间:2015-06-29
新闻正文:漏洞描述:

该漏洞影响版本在6.2.6,7.1.6,8.0.6[1]之前的Apple Safari浏览器,攻击者可以通过精心构造的网址,绕过同源策略任意读取文件。

漏洞说明:

在Safari浏览器中输入类似http://localhost:12345(该端口应该是没有开放的)的地址,会出现出错页面。在console下输入 window.location.href会显示:

> window.location.href
< "file:///Applications/Safari.app/Contents/Resources/"
因此错误页面是通过file URL来呈现的。这本身并没有问题。但是,它允许任意的网页能获得file:// 的窗口的引用。虽然并不能在嵌入的iframe中显示该错误页,但是可以打开一个新的窗口(从而能出现该错误页,当然就需要诱导用户进行点击操作-自动弹出的窗口通常会被拦截),如:

window.onclick = function() {
  var fileWin = window.open('http://localhost:12345', '_blank');
}
此时变量fileWin就是file://url对应窗口的一个引用。通常情况下,由于同源策略的影响,我们并不能直接向该跨域窗体中注入脚本。而Safari中,一个窗体能访问到跨域窗体的一些受限的属性,包括location,postMessage,和history.如:

> console.log(fileWin.history)
< [Object object]
> fileWin.history.replaceState({},{},'/');
SecurityError
虽然能够访问到history对象,但我们并不能访问history对象的pushState和replaceState属性,那么使用当前history对象的replaceState并作用于跨域的history对象,会怎样了?

history.replaceState.call(fileWin.history, {}, {}, 'file:///');
因为仅仅是状态改变了,并没有发送新的页面请求,因此并没有显示的变化。重新加载如下:

history.replaceState.call(fileWin.history, {}, {}, 'file:///');
fileWin.location.reload();
重现加载后safari崩溃。崩溃的原因是,Safari在访问文档时会导航到file://URL.Safari对于可以直接使用file://URL进行浏览的file://URL有一个白名单。如果该URL没有在该白名单上,或者不是允许的URL的子目录,浏览器就会崩溃(If the desired URL is not on the list, or is not in a subdirectory of a URL on the list, the browser crashes on an assertion.)

绕过URL白名单

浏览器中通过后退(history.back())操作访问的页面允许是file://url型地址.该特性用于浏览器崩溃后或退出后的修复(修复时这些窗口的history state也会修复)因此可以利用该特性访问用户会话结束前访问过的file://URL页面。

history.replaceState.call(fileWin.history, {}, {}, 'file:///');
fileWin.location = 'about:blank';
fileWin.history.back();
上面的代码会打开一个指向“/”的Finder窗口.由于根目录file:///存在于history中,攻击者可以应用它访问任意有效的file URL。

Safari下的file://URL的利用

file://URL下的html文档可以读取文件系统中的任意文件,并可以注入javascript脚本到任意的domains.然而,有一个限制是如果html文件有Apple的Quarantine属性(下载的文件,挂载的文件系统都会自动设置上该属性),该html将允许在沙盒环境下。此时可以利用.webarchive文件[2]。

参考链接:

【1】58dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4k6h3u0Q4x3X3g2F1N6X3c8Q4x3X3g2F1K9i4y4@1i4K6u0W2k6$3!0$3i4K6u0r3N6X3W2W2N6#2)9J5c8Y4k6#2L8r3&6Q4x3V1k6V1k6i4c8S2K9h3I4Q4x3@1k6$3N6h3I4F1d9h3c8Q4x3@1c8o6g2V1g2Q4x3X3b7J5x3o6p5#2i4K6u0V1x3e0p5#2y4b7`.`.

【2】1f3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3A6G2k6i4k6W2L8X3&6A6P5q4)9J5k6h3y4G2L8g2)9J5c8U0t1H3x3e0y4Q4x3V1j5H3y4q4)9J5c8U0t1#2i4K6u0r3b7h3u0#2M7$3W2F1k6#2)9J5k6q4y4S2k6X3q4J5K9i4y4Q4x3X3c8%4k6h3u0S2M7X3y4Z5K9i4k6W2i4K6u0V1k6X3W2D9k6g2)9J5k6r3k6G2M7X3#2S2N6q4)9J5k6h3S2@1L8h3H3`.

【3】87cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3A6G2k6i4k6W2L8X3&6A6P5q4)9J5k6h3y4G2L8g2)9J5c8U0t1H3x3e0g2Q4x3V1j5H3y4W2)9J5c8U0t1@1i4K6u0r3b7h3c8$3k6h3&6@1N6i4u0W2M7#2)9J5k6r3W2F1i4K6u0V1b7Y4u0G2N6%4y4W2M7W2)9J5k6p5g2^5M7r3I4G2K9i4c8S2N6r3W2G2L8W2)9J5k6q4m8S2M7Y4c8Q4x3X3c8u0d9g2!0q4x3W2)9^5x3q4)9&6x3#2y4S2k6X3q4J5K9g2)9J5k6o6S2Q4x3X3c8g2h3q4y4e0i4K6u0W2K9s2c8E0L8q4)9J5z5q4!0q4y4#2!0n7c8W2!0n7b7W2!0q4z5q4!0m8c8W2)9&6x3g2!0q4y4W2)9&6y4W2)9^5y4#2!0q4y4#2!0m8b7W2!0m8x3q4!0q4y4W2)9&6c8q4!0m8y4g2!0q4y4W2!0n7b7g2)9&6x3q4)9J5z5b7`.`.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回