XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。5 H0 V4 h5 L! K% [% x
9 V! B+ ~0 }9 n' p- K# A
) \9 H% V) ~, q, z8 Q2 z9 J
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
0 O" U3 e$ k5 {; c& F
0 b3 l) w$ e# ~/ x/ h+ c" W其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
8 L P7 i2 U6 o: p+ T5 ?6 n
# L1 V+ z0 S! t' D( Y9 K: @7 L Z$ u' i. J7 }
1、针对性挂马! D* _9 ?5 K/ A4 x; d) d
: j' f' u/ l( N所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
% @ p! j- L) v5 u# q( q7 [1 c, T1 F4 u5 W& b2 Q" `3 }0 o% S/ _
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
5 Y: M0 H/ l* V* G3 h7 t$ C* x3 C1 U ` e2 N+ r+ P
2、用户权限下操作5 T) i: p0 t- }& k5 U% L* W: f
0 S0 D! M9 R8 U* y5 c
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。7 G. J+ ~2 {0 G# O" a( D: j
$ i9 C/ | S! j8 V, M9 e3、Dos攻击或傀儡机
6 Z" v* i& g' ^( X& a
v6 h& F. B4 O1 q4 [这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
& b; M0 S/ D6 ^
1 n/ U9 c1 {3 I, M1 J3 v# W& P4、提权( B E4 F1 w8 P3 E' e
7 F J( ^+ Z3 x
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。( E- u$ M7 e1 d v
1 c4 U% g% T( ~( q
5、实现特殊效果3 B: A& X& a9 B; _$ |# G; z, P8 E
0 M" `& [$ ` c譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
; H) m: }: t5 e0 s
3 h& c# _" i7 d. o结论:. @' _/ A7 D1 Q5 q" a
% A7 ?5 C; `, |5 Q* S7 `( y$ s从而你应该了解到这些网站应该具有的性质:
0 |$ k& _6 F5 x. Y- }5 k
* l8 N# ^, \4 K5 I+ e, n极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
# p: _% O* O4 o2 i0 ~: S
6 b% _9 l, q" S% c x0 [) h如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
# o/ n+ ^4 U- H2 Z+ ^) i/ V3 u( }
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
2 ]7 Q9 w I `& v
* _% H" q: B4 H! F8 T这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
y9 [7 g5 b f/ N& T
6 _0 u# [. [1 n# e所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。, \0 ]$ {6 w; B1 c: \9 v* e2 I
# J# Q0 o% w: ~; c$ b$ s
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。2 |# ~1 o* m6 M0 S
|