XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
2 N$ r. ]7 \) s& u) h
?( ]" P" }0 ?5 [, q
6 O3 Y. e6 \+ H0 t0 m大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
* y) `' }$ j4 `& z# E1 A% H4 u) v
" w) T3 x* G1 Z Z8 U) n6 V) U其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
) K a+ ^! L( u1 k. M a # T {* p- G8 h# t2 }
4 I; }! c6 x9 N; Q" N' K" o! g0 K
1、针对性挂马 b q) c* `; p0 u% s+ W5 p
3 u2 H+ o' D/ `. `所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。2 J! U; s; s5 s
- k, z* m \5 }& V) i
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
, b/ d# J* M% Y- n' O
. O# C2 H5 j8 q" j2、用户权限下操作. D5 U. L5 h+ O& K5 W
# N: M# B1 g& ^ j l这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
, L; D, _2 [( \+ K8 [0 d4 U3 J+ n( s) K" x$ l
3、Dos攻击或傀儡机
* V0 D+ J& a ^) p' }" C
2 y* G' t! D; g' V. A这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。6 F! z* Q8 c: R: Q! q3 {
1 r5 b( q; S/ p" x) L
4、提权9 @! b# B! h8 D4 A' m; }
4 T# \0 Q9 e; b一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。$ f5 z% m5 c% E
: H- ~9 e) u; i5 G+ L5、实现特殊效果9 x7 i2 P/ \; k. a5 m
! I; s" |* y& A7 W譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
& J: q F( u% ~; Y% V r7 e# [5 d$ V0 m* L9 T l* \) Y) l% ~ r
结论:. G' @6 M4 o/ q Z
. z% A C3 z; X0 q Q从而你应该了解到这些网站应该具有的性质:
5 X, k) l7 T: H Q0 |1 P& p2 w& b+ Z6 U$ S$ f4 |* n
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。8 h) N6 j( W6 I! l$ H' x
) H, x& Q7 e2 z5 C$ H
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
* Y" R0 |! S- x1 F" f6 C! _1 S
8 u1 g9 G. N; t; l. ]- ^4 E其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
7 r4 C0 o" [/ p0 ]* o& C/ @3 ]0 R
) @: k& A- W9 Z: j! ]8 e9 }这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
, x* W9 ]) R; p9 h9 C- e* ^4 `3 ^' f) u; Y7 x$ w, r- b1 m2 {3 }# r
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。7 h: G+ E4 Z) s. }; ^5 F
J5 [% }2 n1 z9 {; T" w
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
3 T2 A, Z8 I- Y; b ` |