XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。( O- ?: ] }7 V! W2 i( ?
1 u: q6 l6 ~1 F& h3 \& [1 c( G( T
4 O% H& w9 |# `2 ~" K; t5 r大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。' Y& d( M- c B; w: n0 j6 A+ ~
3 K' j* K; Q% M! Z3 E& y
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
& ]; Q8 ]( M O8 d( J2 a9 ^) G' H
& r8 O3 ^& z% o+ d. A0 l& j
/ o4 {4 ~- A! K$ m2 I9 \ j0 ?1 H1、针对性挂马
, r; Y# L) ? N: t- W
. R2 r6 W5 o4 U& q$ U所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
& ]+ g7 M* Y' d, K5 l. p ?7 _4 p' Y1 }' [' h) M* E- ]
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。) J6 Y7 S4 O, D' j5 M( e1 ^+ o
2 E* k8 n& U3 \2、用户权限下操作6 x: s/ w* |: {3 B; q9 _! u! T
* k% I" R% ^ }& O2 n: r, g- X
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
. _! s; G0 _- J0 `/ f
( j3 P7 O, a8 E. u3、Dos攻击或傀儡机) R C; n, x; u! \, |
5 T' P; |) V, L' H) I
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
9 n) S+ S: x5 t' M I6 M6 d+ W3 y- U
4、提权
$ h. O4 S3 L4 e
. R1 g8 o6 V9 G& ^9 `一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
' q9 a5 j. k- E y4 |5 p( @0 G" L2 F* g
5、实现特殊效果
# I) D$ i: f, g) X" L* F8 o1 a( G. a3 Q5 v9 U- T
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
) y4 r& D0 J- a
8 A$ P0 a. |0 \5 N4 X0 G) A( }结论:) l2 t) u3 S1 S9 `5 P3 R1 u2 a9 m }. R
: g2 P d7 ]6 C' s从而你应该了解到这些网站应该具有的性质:
, @5 q3 J, L! J3 X5 O L/ f4 \2 ^: `5 z0 o$ b6 s
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。. C/ O; k A# s# H; i7 O( T
6 C% _1 n! k- t$ x/ W
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
5 @, `$ m' c# x0 M( L" `" h4 U% t1 Q5 u& i" a/ q
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。 p( z7 H5 }9 O6 D
0 x! U& q3 Q: h2 g
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
3 M% l+ R2 o- s
K4 Z, |& p* `1 R5 E所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。' c) k( I; N; I9 E# X
, j) Z- y J/ X N0 \' L4 t# \% P
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
* i& M7 l! E! N* d |