XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
, h! @ w# e( s" B9 z7 w* r$ L0 h; Y& X
, F9 }% Z; M! `1 y1 e大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。2 ^1 M$ {5 Z- R9 ]. `2 O* y( G, V
3 E% o# |, p7 B. m* P% w, L其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: + S0 B4 o3 f: }( T" F2 ?
+ l5 J0 z+ Q% T0 h+ p
* z+ ^- t, B2 Y" a4 r
1、针对性挂马% Q/ w2 M8 N! L1 t8 I: \0 z
/ ]: U9 S" Z5 z9 G所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。* g5 y5 o; U" V
9 k% C0 |. Z4 A: e7 n: i+ _( E- c
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
: }/ M+ V9 U# | o1 X% e
- t9 O Q* h1 G. Q2、用户权限下操作
7 Y/ p5 c+ `; x
/ k' t; ~3 b% x3 }这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
7 i% i! q4 V4 g2 W6 t4 B/ D) j5 k* |# ]# f# F, V, \; |" I
3、Dos攻击或傀儡机
" F4 _' P: p# {+ T+ }" T+ D x* `5 t0 A) `% B$ k* \
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
6 ?$ b _) G$ S: b
6 z- y5 X- z/ H4、提权5 a- K2 W5 V2 l3 e- l1 I8 t3 ^; Y& l
* |. ?' O) M1 G" k
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
& j6 N7 N0 V" `2 e5 m, y. O
3 y! L9 | w y( J- a5、实现特殊效果
& J. W# j5 W7 r0 X1 @1 ^& O
3 e6 g9 s8 b# Z' L$ t) U譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。& ~" ^6 A5 R. O5 q1 ~
4 z# S4 \/ b0 n2 F
结论:8 m$ ?4 _6 N/ d) U# ]) l$ b
/ U p% y# x9 Y" ~. d从而你应该了解到这些网站应该具有的性质:! y& x2 i" D6 j4 c( ]
/ L7 [6 S+ ^0 ]5 m! {
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。+ A, {( f, x" B
) A# t* E$ x, H
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。% h+ ?1 G# ~0 c/ X4 S$ f4 ?
- S( I/ b1 P- a. j! o其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
0 ]6 u( ]5 p4 \& }. m* Y+ t6 y
% U; D. c; D, U- a5 f这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。6 J4 a- ]- N! D C& Y8 R
) v; P0 w1 ?: L" l6 `) l: X3 @
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
) `3 H1 i3 p# s: p* O" b! N+ r9 \$ H# O( z: U) V
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
$ n1 g+ F! [, i |