XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。4 u$ Q2 |1 n- y# K$ {! r" s) [
* \) G( w+ l. g) f # R$ I. @: P) }9 a' ~/ a) |1 B L4 ]
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。* n: B& [1 B! e! @/ `
, g2 U# _; S, r) Z其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: z3 \! g- _. G
& j; t9 h9 P7 A$ L7 P. M& @
+ c8 |+ ^9 n2 J+ [$ {
1、针对性挂马6 t; H4 `" O0 z! A7 Q
2 X/ |. T! \/ C5 H7 h: v所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
1 x( {. \+ u2 s$ d7 [+ ~- Q; G% L8 q4 D
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。- s$ } ?0 [7 H" |2 X+ D" `0 O3 b; e
8 Q7 Q7 t( b7 T! B
2、用户权限下操作
! E' f n& w) P1 r3 O
/ }9 d" n' D! B9 x! J这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
& }0 p. t0 ]: Q4 q
; z6 b6 C3 b: j% k3、Dos攻击或傀儡机
Z) Z- r5 D! p% |, k# X1 x, C2 [
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。 w5 Y- V1 N% d1 G) P+ n, }1 G
1 Z Y0 v) p0 ~: f$ J- M: K; j4、提权
/ D8 l% k, o5 ?1 X7 s9 p$ U
: `/ {, c5 r6 |一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
7 ^' q8 O* z$ W- h6 S+ u& `6 G9 U$ I1 q# Q9 P8 I3 w
5、实现特殊效果
: n; S }+ Y2 d( C- Q) `
# s5 o7 b; Y# {: m5 E7 ~/ z譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。8 S& s' E9 b0 f4 _$ A' R, ~. B
* Q0 z/ S s- m" L( ~结论:
% u- U- P/ W& n* h2 U5 `7 z2 r, i; y* S/ a7 W, D8 x; v
从而你应该了解到这些网站应该具有的性质:; N7 D7 d# w5 D
* \- C E0 s1 U& ^
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。$ x% f$ i/ s+ T' Y8 f& F7 ?8 e8 M, Z0 j
% v# K9 ?# \# J' n# [如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
, L" x" E5 b& q Q& T
4 w3 @3 j* J5 r其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
* Z, n, P6 H3 i/ E$ {
$ b }8 D4 ?9 J' ]! T这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
" V- _3 V* I1 j3 P" `+ o7 e7 n. i& G) O6 H+ b! O) F
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。' a9 _7 F' U! j% b
3 D( J2 Z. i' A7 w, Y这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。0 V" E0 e1 A" v0 ^4 o/ H/ j
|