XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。8 c8 M" }8 R9 u: l; `" N
" l8 M) y ^, n1 j0 a& G
. \, U `8 T( w* Y. U
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
$ V ?" c3 K3 v& m. ^7 d& X! `! A, g " k, U- A. g8 O* k3 X4 o
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
7 |" q, i4 |. ~ 0 K9 G# |; t( F( f' K+ {
3 l+ h. s6 w# m: {7 s- G
1、针对性挂马
9 X; L6 K1 z& n# ]- Z" P. E1 z* T0 D' X3 G9 q9 V4 P# f5 F5 l0 T
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
/ [) _9 t" z) L
& k+ w+ r Q3 M. E+ u而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
, e, y% H# s5 a" C( y* R( E6 s" ?0 f: B% J/ P
2、用户权限下操作
: K- f7 e9 L( e2 |! W) d, d6 u8 ]3 q' j) i5 `$ f$ I
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
8 }1 C) n. i' r5 Z+ h" n
* A+ U" P" t' A. f! w, B3、Dos攻击或傀儡机
: C% z# f K R/ \. B1 V8 n- S \' n1 v
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。2 L9 k! K9 h+ g8 P5 _0 v& C
" ~; D5 D. H6 u3 p
4、提权
6 E4 t0 o' c9 [( |7 x0 h* Z- ~, d
6 E9 ]* r1 ~5 M+ U一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
, i1 R% i- w3 A, T% R ?
1 W' R' u- }* v5、实现特殊效果
; t. p3 ^+ g" U4 @% Q. M5 _; b/ J% j8 t$ o3 w$ Y* t
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。% }4 U! b' [/ s
# n5 n0 _( ~+ N1 S) @/ }
结论:1 f% C' x) Q& Q" P- A2 ?+ @
; h' ^, h# I5 I6 ?. W b9 l- G1 G
从而你应该了解到这些网站应该具有的性质:
% q8 ~5 _; S# ^8 W' E6 `, ]0 y$ d, O
6 J2 S1 D4 F5 w. G极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
" h# ^4 P F* W5 L& d" M8 b
! E3 u3 n. l/ v6 O$ n如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
1 w( [4 p% |$ u* \0 b
$ \- i' x+ C+ Q其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。0 t1 o1 H/ X% [5 J! a) ^
2 @, c0 S, i2 i
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。; R) i8 L. f& h3 L4 b
+ o0 f/ m, M3 }% P5 t所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
* \8 J# s! m; ~3 R0 L6 }' f. C% J4 o3 t& F. ^" @) s/ \
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
8 o" l5 J) i. E t9 [# I" l# w: T |