XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
4 T0 @( \* t+ @: S0 L' ~
3 d5 s' ?6 E) _2 k 0 M+ i4 B5 X% X
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。# \2 @5 z5 J$ J e4 x; L
! O% w$ c: l8 W. p) b其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: 0 B4 Q6 @2 U0 X7 d3 v% ~# Q
9 L7 k5 c( j V0 U x
; b$ [+ o1 ]: ]! V4 Z1、针对性挂马
9 h; {0 w N7 T$ ?9 m9 r7 a- q1 T! L8 u
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。8 E) D: e2 Y: p, l4 Q7 r* [
) C" {) e' ~+ F/ M2 h而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
' E( M) a+ Z9 {0 b! ^# ^$ o( ^& Z9 u i' F5 \: q5 V
2、用户权限下操作
f2 c% Y3 Y. I" w/ ^, [9 A) f7 H1 C$ j8 y
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。6 J4 n: j/ f6 v) f. ?
% N' _' \6 c1 f+ @3 \. `3、Dos攻击或傀儡机5 t/ {! Z; f$ j( G) k/ _9 |) K
# x3 \5 D6 D" P+ ?3 @& C
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。: Q. ~% t6 b1 f5 L+ y; `' A3 i" T, R- G
: R/ ~2 ?5 c9 V& m- I4、提权
( r, Z5 j9 h0 h# ^) F8 k2 I! B l
8 p* \! F6 a' b6 K& m一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
) M }* q, _# O8 j0 l+ f
$ N: T$ {4 m0 ?: Q5、实现特殊效果9 [4 ^: E& X" @; R5 r8 l: e8 ^
7 P6 b: o+ u: e; L- M% o. n
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
! ]7 P( a3 y6 n% b3 w; O7 ~3 |: i% Z* a2 l+ S7 h
结论:+ A3 v) e/ Y& j5 W) H) i
' a0 w c7 s! ]5 [: g
从而你应该了解到这些网站应该具有的性质:
! t- D3 N6 L/ v) |, M
0 P8 i, p6 F Q& K# T极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。4 \# V2 O5 f- O f3 S
5 x) ^* q8 r) n. y
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。) H" X/ t. s |) f
$ Q& h' q6 P' Z' Q7 e! M0 t
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。 u8 t& d8 B' _3 J" E$ T7 _5 R& ]0 G6 b
! J1 }8 n5 b& H2 O* t: s3 C这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。: H* |9 k* U* r% V( G
) R) _% C- J+ D- c& S
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。/ J3 h9 J W% {; l) M
) T% V& _4 B$ |
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。+ L4 e* k, o, ?3 h i5 G
|