XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。& K- Y* c0 V* d& y9 l, _
B) e' \/ a! m- H
. ]3 w% n/ U' p7 F7 J大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。( f1 t7 ]$ r9 H# c8 B4 P
) O4 q, @" @' p/ {6 \$ c; `
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
. u0 w2 T) `) N4 f ; I/ M' L# A% U# v$ W
0 H5 ^5 @1 m! {( r( [1、针对性挂马0 |! _6 R: V& e& A& N# y; J: Q
$ M+ Q/ \2 X+ [6 q1 @9 j所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
* K, O- c8 ~/ N) S/ b" N6 X
1 m7 R! R9 ]7 C# }) u9 d7 Y而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。9 P, X* n6 S0 M; _7 R8 X2 A
3 R: N# e) m) w4 C& r* J2 ~ A8 w
2、用户权限下操作* V3 [# r: Z" T @4 s# W
. M! {- ^( Y0 ]
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。6 T! s3 K# y; s3 ]
" Q! L! V, b7 w5 h& L! k% u
3、Dos攻击或傀儡机
# H3 J- y8 m* b+ z7 \4 J9 S2 d5 K0 Y: J9 o; e, `! N' w
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
" L+ z# w' S% F. J9 {; x, v6 d
9 Z' |$ v! |" p0 d4、提权
f3 z. w9 F4 U' n5 P$ x T
- K' [) c+ `" M" e0 B+ k- r6 w; P6 `一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。& n: d6 t! N& W
n { F9 T7 C& d! f
5、实现特殊效果) Z* B, c- V3 }! F
' b |& S/ L9 r% t. I) N" r% F
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。' V! o3 S, ?6 |1 Y5 i. Z# S x
) b) _3 W* ~1 h结论:2 a2 u& o7 v! W0 n2 F; d% e$ E5 M0 k
- D0 |' K# I0 h* k5 V2 m从而你应该了解到这些网站应该具有的性质:9 I1 @/ p% ^. a) m
; P/ S) \4 x; g* a' }+ L% z
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。) D7 W; K! {9 ~
* I! D5 M& m# D+ g, G s+ K如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
! j; F9 j3 z. u* w2 N# E* R# d1 k3 Y6 {
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。# @! A' t3 F; b; s1 \
' b2 d9 ?3 ?9 {. H6 X5 G w这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
5 x5 n" e# W% G( ?& N/ e- m, J, Y9 G4 B, G& ], E; i
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
& N8 G) P/ R, O
# i$ i: @4 X# A f! L9 R这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
- X6 R- t) ?& b. Q |