XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
: H( y$ j3 |' Y$ [4 b
7 G# o+ w" j3 T' O( R3 l
* g6 U( g& ]- A4 B3 U大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
9 S0 s6 z. G9 R* S
6 H C7 k* K' c/ N/ d; }( m其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
/ z: F5 T: K' H+ |# _/ A0 `1 C
" ]( |+ t$ O; r7 o/ F- \: ` t2 q! [4 h
1、针对性挂马6 }8 G# p* m* n: y7 I, r/ [
# c/ O" C- M& l9 T: ^所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。! e w: g! @) J2 i8 C' e
4 v8 g1 r1 k4 H而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。! }7 _1 Y1 y& J, g* o# m* P- F
( |( ^6 K' h" L1 z% u2、用户权限下操作 O* l5 b: g8 a% K, y
. l, W7 d) J" `6 P% @
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
4 }- a9 p W2 v. ~: [& |
1 T- P T( B% b" F: V5 ]& J3、Dos攻击或傀儡机1 A x% x+ p+ l9 F
) A: c9 ?3 W8 I这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
& b. O) ]7 Z; K) M: V8 \, c( U- \" W, q$ y
4、提权 ]; v+ k( e. U0 T. w/ {6 H
( Z- T' ]* \1 N) k# {一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。( y; V8 t# n3 Q: c; V r8 e8 F
D* e0 w0 ~) V& ^( x/ S5、实现特殊效果. ^" Y1 F, N' f/ X6 E t3 I
4 _5 y( n7 h% V' P# U) S' o
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。" }" g: I s" I! @
) E0 d& |8 J7 V4 x$ ?% ^0 u9 z
结论:
0 D. J/ _' A; {4 D! V4 X7 x2 c
% ^$ U9 Z7 e3 l+ I从而你应该了解到这些网站应该具有的性质:
* X' ?9 ^+ W9 f2 Q% u
$ h! Y$ B4 J& _3 f极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。" r# d" l1 T) C# A4 x
# H4 d: ~: ~- ~0 i
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。6 q. c+ f, D6 n7 J
( E6 n& ^5 r( D) y' G2 G其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
6 ?+ p8 P: I) z9 n
. L2 c. S( I4 c: d6 t' M* D) f3 F这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
1 Z0 N4 E3 A+ X5 @) N: p2 q0 f& X- W
' i5 E) b3 n! ?4 @* [7 @& R所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
_# h/ `; l3 W7 _) D
0 {" X0 s' s/ _9 j; }$ ?这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。- A$ _% f- l; [. {, F
|