普通视图

发现新文章,点击刷新页面。
昨天以前首页

A New Attack Surface on MS Exchange Part 3 - ProxyShell!

2021年8月18日 23:08
Author: Orange Tsai(@orange_8361) from DEVCORE P.S. This is a cross-post blog from Zero Day Initiative (ZDI) This is a guest post DEVCORE collaborated with Zero Day Initiative (ZDI) and published at their blog, which describes the exploit chain we demonstrated at Pwn2Own 2021!  Please visit the following link to read that :)FROM PWN2OWN 2021

关于浏览器混合内容的安全性

作者 余弦
2016年11月22日 10:48

Seebug Paper之前收录了三篇文章有些关联性,分别是:

  1. 绕过混合内容警告 – 在安全的页面加载不安全的内
    http://paper.seebug.org/112/
  2. 检测本地文件躲避安全分析
    http://paper.seebug.org/87/
  3. 基于浏览器的指纹识别:影响和缓解措施
    http://paper.seebug.org/64/

有个关键点是:混合内容的安全性

这里提到的主要是协议的混合,如https/http/file/res/mhtml等,现代浏览器逐渐开始隔离这些协议,比如https下加载http的内容时,给出安全提示;再比如“修补”file/res/mhtml这些协议在http协议的网页里带来的安全问题,如本地文件探测(常见的是杀软探测)。

玩前端Hack的都知道,修补与绕过总是在博弈,而且浏览器们的修补是存在差异的,也就是可能出现浏览器安全差异。

很早以前,我在写https协议下的XSS exp时,就注意到:当载入http内容时,浏览器的安全提示。后来解决方案是采用DOM动态操作来绕过,这个技巧和第一篇文章里提的一样。为什么这样可以?这个关键点就是浏览器安全机制的触发机制,采用DOM动态操作时,这个浏览器安全机制并不会触发。我的理解是DOM的操作实在过于繁杂,为了性能平衡,许多浏览器安全机制并不会触发,而仅在页面加载时触发。当然,我也认为这种理解不总是成立,具体问题还得看场景分析。

这种特性能带来很多有意思的前端Hack技巧,比如AngularJS发布时,我就做了个有趣的安全测试(Bypass CSP),当时利用AngularJS丰富的前端异步加载机制,有些外域内容通过合法的异步加载再在本页面渲染解析,达到无视CSP策略的效果。

顺着这个关键思路,我们的绕过就不需要那么直接去面对对应的安全机制,而是采用规避方式:也就是想办法不触发某些我们不喜欢的安全机制,这是我们绕过的核心点。

还有,第二篇文章提到的window.open技巧,是一种好技巧,浏览器需要特别对待,否则这对于前端Hacker来说也是个非常好的“触发机制混沌区”。在我看来,浏览器对待window.open多少有些无奈,首先是历史原因导致还未摒弃,然后奇特的父子权限模型,及为了用户体验而允许点击事件下的不拦截弹窗,这还导致了一系列其它类别的安全问题,如钓鱼。

回到混合内容的安全性。现在及未来,不仅协议之间如此隔离,内容也一样,CSP策略正是为此而生。

在HTML5如日中天及前端框架百花齐放的现在,DOM里的博弈不会消减,可预见的是会更加激烈。虽然,这三篇文章都是上古时代的Hack延续了…

本文,手机上写的。先这样:-)

❌
❌