XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
# q$ L* l2 l" S4 Q- [, \* ~( S# Z) R1 }' {1 c
# E6 `+ g6 z8 F. Z2 E大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
" \9 r4 w# R& v; ?9 [+ U, }2 b& I ( v; B& R( J8 O$ y
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
: ? r7 r; }6 w, z$ E5 M3 d
! r; v+ m1 K+ L4 ^4 o4 ~" z' Z" v7 X, C
1、针对性挂马
, c" S) R# |# b3 O8 z
6 q# L# L; ]( ]* v3 F所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。& ^1 f3 I1 e, i# Q0 B
8 W B/ z0 v6 C( E而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。! W3 q$ D- E [. }5 h
( T, u% s) W3 Y7 n _3 i5 Z2、用户权限下操作6 [9 S/ J/ s+ r6 ]0 A0 b% v
- {' T) y5 |6 E/ d2 S3 ^ ~! u3 h这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
3 }# \ B% g0 |. y9 F8 t+ \
6 r) @8 s" [+ g0 p: W# I7 `3、Dos攻击或傀儡机
4 r; }7 D, H4 o2 e1 `. ^9 r
; q; m( ]5 z& _. k3 j$ N这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
. P: z& U" y8 {, N+ H4 d. N! F
p% T1 @: `. L: S4、提权
# M: `, T+ ~, f& J0 ~: p* |$ O- K) [
/ u8 z. Z; {% q( Z0 }& e' [一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
1 g% i( c6 U! Y; b; q% a* H: j# M2 a! n4 l, Q! ^- F& J
5、实现特殊效果
) b7 R0 k {6 D1 Z1 W+ n
% l8 c3 }) Q+ t譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。+ `# u* \- P' @1 `9 E8 c$ W
: O! S {) R& N: }0 F7 ]结论:3 {8 S( z0 X- `7 L# m% p; i3 l
9 C& w- P, b P! n% {
从而你应该了解到这些网站应该具有的性质:
: p$ W7 v- {+ H- o5 O
/ x0 f6 z8 t* B/ E极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。) m8 N2 I- k$ I/ D2 ^" q
4 L1 L+ x" N7 ?# P如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。% T) H, {8 ` V7 [
, z% e8 W$ Y: F
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。4 V* c" N F. L2 K( D# n
" B" O& d0 I: a I2 t. N
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
0 i/ O2 U7 Q6 e+ |, C% c
- t# w7 J# t' ^( ~所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
/ h! X/ {/ e C
9 e' L# I5 S, a9 E9 P" ~$ m这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
( \3 e' X7 j) n* W5 ]% [" u |