XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
% z" A% |# x7 q/ j2 {7 s* W! S/ ]5 b( r$ P( I0 ?
8 y$ M6 J8 i& J
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
6 k* P X* c' n
) K' K3 F# w0 X其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: ) Q8 ?3 t1 g8 M$ S
/ g/ e: ^# d3 K5 P3 y3 r* G7 `
% {5 P6 Y" y0 O6 R( X
1、针对性挂马
( ` x! ~4 f. s2 J1 o. D8 b" z4 M$ | k# i5 l% a! Z, Q2 n
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。 M$ F u. N& ?5 K+ E
2 t3 d. K$ _4 G
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。+ ^$ l8 k' M5 u% g. B3 Q7 x0 @, o
( W. l. i( G, ?" e. D7 q Z7 n2、用户权限下操作
0 w& q' N, R5 N$ X6 H* y) e9 z* ^& V1 a) z: ^
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
( F2 ^( K U6 C( w" _5 w: l( a* P. `" R c. K
3、Dos攻击或傀儡机: K) F7 p: e) r/ p0 [5 {% P
% f4 b) H" W/ _1 q
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。1 l2 A1 h. G" E: ` E! P k5 o
9 p7 U& a5 p$ b9 l) M4、提权! L8 L$ p; C% E, y5 u
: R" G) S3 o6 A& Q, u0 T
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
1 C6 P* a) @$ g0 V3 R, @4 H) r; c0 s/ I) h9 d
5、实现特殊效果: C. u% S8 u) |0 \$ E6 z
7 _! M8 U# c0 @* w5 T譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。 j. E- J Z; E( J. K g/ i3 W
; @3 `2 {! c3 r$ ~% r" r- H
结论:
! @& d2 }, g2 @0 t) {4 j2 m- Y0 P! J0 z1 @! C. \& Y9 |
从而你应该了解到这些网站应该具有的性质:
3 g Q* {' @2 T1 q
. g, ]! W6 ]" }( s, `% P" x9 c) }极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
' @; V$ d7 F! l/ L, N. W, j& h' h1 q$ U4 m! A- p# ?* H2 {
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
+ a$ `( f4 M. V I, c5 R6 j' O( P8 S% w5 ?6 @
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。, M F3 A, M8 v3 ~7 K+ p8 F. s4 ? B
$ A; f/ N4 {5 W3 U% C
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
9 k0 J, U% C! v, E$ g6 f% L* R9 D- \, x) e$ w8 V4 H4 l7 N# F
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。6 e ^& z' j) p' }
; R" R0 K! C3 W7 m# }
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。! o) J& e# @# R0 ]& _" }9 j: q2 @4 @
|