XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。 n% P* y* A; K
0 G/ ? k( z/ G+ k, a
( N7 h. d8 P. T6 O% r# T大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。( G3 [! H/ D6 `1 q' v/ M. Z1 {# p
2 k* d4 Y, {! f% n. }5 [ Y: w
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
9 z' H2 ~# G: G8 o& m: n
& d* n+ a, e' v+ K( \1 ~( f, q# y
4 V; ?! e# U: G3 H1、针对性挂马 W8 _ x& r2 t$ m! |, B
% U4 u+ e+ ?( f所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。; D/ W" g- \8 Q, P! A! \
6 z0 A" [! f: Z ?* H) V9 C3 L& {而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。& i( p( y6 y9 _& _6 x
& [1 {3 x0 l; V& O# a' b, Q2、用户权限下操作
' j# ?5 g4 B1 O/ G2 ^+ S* W4 N. N! [' \ m3 B
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。0 ?( ]/ {: L/ H& L; z7 q
: N8 X, K3 H! f0 q2 V7 S* F
3、Dos攻击或傀儡机
' S8 |& |2 s! a4 z( i
; P E Y- i8 j! B& A2 e这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。( b5 E* O% L+ U8 Y# F
% q s" t3 h; X7 O# ?
4、提权# Z& o! |7 o: u: ~9 j
6 U8 h+ T+ U0 |0 \
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
# W* ^1 k/ f# f* ]: L9 @
8 ?' |0 ^9 ^ {" O) {5、实现特殊效果
4 }% y. n4 |; O& `3 \1 Y9 N8 q
& i% _& ]8 {0 E譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。0 M: F" L! ]) ~4 ~1 t5 C
) V4 }' v& a- O2 Q0 P# f结论:; c7 g9 Y4 \: A6 H1 J/ ~/ m! `& j, v
9 P D9 D. W6 F# K9 U7 p( x从而你应该了解到这些网站应该具有的性质:
. P7 Y% C0 S3 m7 |! Y5 t7 j) T2 E% l% X7 W* R
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。8 w+ G" o! B- O1 m
# c* [4 h" Y% g% n
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。6 z4 v- y# D, c9 G- K" @
9 e: n% M8 k. S& |3 N. o/ T$ J
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。 |/ Q2 P" ^4 ]5 @4 |( m; E0 z
8 b3 ]2 }# ]( B- j8 N) L1 g这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。! ?: ]* m6 h1 g% U/ f6 `) a& f
2 H1 z. d; e% k
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。: Z3 ^* ^# ~; Q) I
; d5 \( V( I; ^' U2 r这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
8 s) E9 y: ^/ e5 X+ l; D: |6 [+ B& M v |