XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
& a! u6 Q$ \$ }4 A5 L) M4 _6 ^# K) c0 }% b
' R& m+ n7 U6 b6 P4 L$ E1 M/ H n) b
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。& a' r1 q. {8 w+ J* _" F- @. t
* B6 @0 J4 g& B, o I: B' S其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: " V B6 |# z L7 x0 q! B: ~
; G$ N- ]) C5 ^6 u B8 w' x! g
& u8 W9 e6 q! w) f
1、针对性挂马8 [7 u3 P7 g1 N% }4 O
' A8 Z7 F: A+ B- s% K, X所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。1 F3 S9 ~8 ]8 e" Y
# _" n5 M1 F9 Q* A
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。1 e8 |: g: |* N, }
, I, y0 U0 H) p' ~
2、用户权限下操作/ u, K, ]: I; P8 z: j& Z D8 B5 D
8 W; n% F& P! _这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
# a/ R0 m/ _4 I6 D1 R3 j0 f9 B# Y" F% i7 v, G' u) u) y! T
3、Dos攻击或傀儡机3 t/ @/ h0 W- Y! ^" K$ d0 C1 @. i
5 E/ k7 t# F, o6 w! c3 d( Z+ ~6 A4 y这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
% P0 ~7 o: |& x5 T1 L. q |* H. O( ^9 v @) }
4、提权1 c. Q/ x. h/ s+ H3 E; G. V
1 w! _8 c$ W0 L6 }8 ]一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
$ _$ }& y1 \- ~' W+ d# ^
, v9 x7 M. s7 i9 `5、实现特殊效果
+ w4 u N# s0 I; ~. A. W: ]1 W) K4 T, r7 d: x
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
0 t( K ]8 ~% A
- e; H: U2 S5 U结论:
# Y# d; n* v! S l
# K ^4 h# ?: r6 D从而你应该了解到这些网站应该具有的性质:
* I6 [- q# k7 |8 g H
) z8 a9 T9 r! F. x& H极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
T2 j6 x, y& m' G9 s3 ]) V1 o- r: Z- {. Q* q& A. V1 I" X7 S9 @- @+ N
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
9 g1 w* h$ e4 ^0 X5 c5 g2 z* @& c' M$ ~1 M) F0 U8 z
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
- j3 o9 S% s$ C+ s! T
5 k- Q% ^! Z3 Y4 z这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
, j' M( f, k* ], k" K2 O* r1 R
% h3 I! z) S6 x. I所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
2 y$ J2 t1 q' }, d
7 E, g. X8 P* H- k1 v这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
8 d N7 a' w: c! N G |