XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。- z$ a( b; h( l/ L' M) a- x
5 Q/ S; _4 X9 L4 u
8 U* a# I. Y/ ~5 z, k9 x大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
, A% ^* D: _9 s# B- [
, l/ P3 n2 ? |其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
- j7 T# W. s% Q
' R- C6 q7 N: n4 s' j0 _ s/ c3 N, L4 s" h8 V
1、针对性挂马
& W% N3 z j+ [3 v, [) p
# `. p; \8 X1 \( X# c$ l' K所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
; a: ]% ?/ E1 X- }- W; H4 q0 t
. [# |. Q6 q2 N" o. k而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
! j( ^6 g7 z! O K* |& N4 K# G2 o3 x5 S9 ^- V* o" `8 s
2、用户权限下操作7 _, H. Y2 o3 p1 m
0 H' L" X7 L5 o( b( ]
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。* N$ ^! L! h9 }
8 _1 u, u7 N' @, ^7 o2 W1 s2 f3、Dos攻击或傀儡机2 M. w6 ]. z+ o! M+ y4 O) t: p
' a/ k9 z* ^* t/ `3 x
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
: L0 Y5 ] \* K; L0 U* m( ~( [2 t. [
4、提权
- ]7 L" x: r4 u4 l! v
9 v" P* n# w o$ Z8 f8 A3 ]一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
- Q! g5 k& E# t1 [5 f: D$ ^+ k$ ~" V% V. ^' t5 J5 C( O, n- _
5、实现特殊效果
5 d4 D/ v3 ~/ C4 d- L* G* ]
+ P5 K9 x6 Y; M, q0 X# X譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
( `- b d* k8 t( O5 x1 [3 D0 {$ S( [+ S) r7 e) q0 l
结论:) I. ?2 J; `1 h# \/ p& a6 d: {/ ~% ]+ U
3 F+ N& d: B" D! `( J
从而你应该了解到这些网站应该具有的性质: Q7 f' T" U9 L2 X5 g0 z0 A2 q! Y
$ P& V' A9 }+ x4 I' v2 J" X极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。- q& f# f2 [8 `
' E; i* l( s" f- \如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
4 K6 J F/ n$ V2 m- a6 Q) c9 i3 a" z G) Z* f1 C1 ^
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。! e6 K: C, N; V4 n3 C: R
# d9 _9 ]; T. B% d这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。3 [# i/ B5 y, R& g" e8 H& v
) h, ] }' f9 |9 z2 P1 }
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
, ?) ^2 z* x* e0 s, V \0 ~% @& O! p0 h9 a* H1 n
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
& m' k5 R. Y- k$ Z _6 ` |