XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。" s1 B" A4 B8 S) W! s/ E) }
) o' T% o" }1 N- C! W: @
0 `% D: x" |4 C( Y大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
( z2 M. B' l2 Q
2 n" R2 b6 m; t# j- `其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: 4 B2 @0 G. o% {" _1 a; Y ?# @
" K9 i3 e9 O0 B; {) n8 b5 x y9 m7 ?) B8 T& r- \* O
1、针对性挂马
# q/ C: Y" @# v1 U8 S T
9 Z: k* ^. f) B8 O& I) G所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
) j; n) F. j0 \9 A: H A7 E0 G2 s2 i" Q7 d% n
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。0 U8 v6 i9 P- ^( A" j/ d( @
5 G0 W7 g2 [9 q) J g: _2、用户权限下操作
% W" ]6 [, z+ v% K+ e5 e1 N4 A( E' @6 \9 Y, R/ I% C
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
+ T- p; W7 ]& R; w4 a0 p3 ?: F. ]: B% D. ?6 N% z- P
3、Dos攻击或傀儡机
! V. p2 {$ U" O' y$ N' `" J9 ]# c5 G) n3 o9 e
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。; u9 k; s5 w7 E) L
. c5 p8 u# j; d
4、提权8 V& H3 G5 C; {
% q. n/ v9 z) O5 s1 b
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。1 o' h8 ], P& k8 B+ N! y
, x( g& q; r5 `, `: l/ \& Z4 Z
5、实现特殊效果: O! g" d4 J! ~$ c
5 k( y- b3 z+ Y: r0 E1 v譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
* o6 R5 S H& O1 f* V" [/ O* L: S; D! `9 e: w, {5 O
结论:
( r' Z6 ^5 z) |' z1 v( r' ]
$ X2 l$ `: ]/ G/ F1 H! u- W* a从而你应该了解到这些网站应该具有的性质:7 Q- [ y& C0 D. i* G7 a4 a
# ]5 O8 R) V; }$ O
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。) O" R- H& D1 q
2 L' F- I. S6 S7 m5 t' x0 c. S如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。2 V- @- R. y0 w& [' O
" n. ?& Z' L7 o) k* t$ C% [# W. s
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
" Y$ ~+ H$ P& n! [( t8 v' t- L2 ]7 a, w* D$ T/ [
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。$ ~; N3 ~0 a9 h$ z
) B: y: [! \' c% N# t$ x5 B所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。! ]* g6 g4 e# E8 }) b6 F
# k1 J8 y' J% G8 J0 s
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。* N) b: M# S: G. H- h$ u* R$ [
|