XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
/ r. N" Z( e( @. d! l9 S" p. p- c' G+ i/ o
, s6 M! q' a3 h8 J7 S$ O
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
% \1 I) f' |3 W! W( N1 A * }- X- B; h: J2 ~0 z) l/ h% K
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
* f/ g- m) h( f, V 2 B5 a: H& Q/ u3 x3 [* j2 R
) q) a" h7 t1 ^& \5 Z" O' w
1、针对性挂马
' O: U( i- P* } C$ o
' ?+ Q% Y# \6 m所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
4 ]# |, v& y2 ^. O. a8 [ N r6 U0 n. f8 J! R, t h; N& t8 |
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。; e5 h! d# t+ i5 p! ]$ A$ ]
' p# w3 j4 ?+ _2 b2、用户权限下操作
! g$ @$ ~6 i0 L1 t7 n8 H' Z' i" v( N
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。0 ~# Q8 n* r* l9 z9 S$ f( @7 K
, w6 r' H. Y+ M! m- @0 U3、Dos攻击或傀儡机( a' S' W6 A3 {$ T" i) e
, e3 @' q+ M d" N8 A
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。: ~3 z0 j, Y+ @" g9 h& y* O; v
& n! f: Q) B- I$ X, B, Q1 B
4、提权0 G8 Q' j0 M4 I: n1 C
/ K6 }) _) x0 r- P$ b) Y) s9 b
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
D( k. A* P: M5 d
$ J( n6 g6 I: z& ]- n9 K5、实现特殊效果- }$ }6 o5 p7 ?5 e ^& ^/ {
, K! @1 B) Z0 l J1 T
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
0 P3 W4 `/ {, j& f2 z D' Z9 h/ @0 |
2 _1 C; i, Z4 }' N结论:
/ J6 u( I! K3 ~! y9 M+ z+ B% @( A3 V# l, s
从而你应该了解到这些网站应该具有的性质:7 g4 _! S" K$ u
; r3 k( \7 I0 r' I7 [; D
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
* `3 [" k# S- ?
$ F3 P7 P8 m ]* g, y( b2 q0 t如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。- p& ?, ^/ i2 z3 p( R$ X
% }/ [) z$ w7 D( U, _其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。% ?/ _2 O" O+ ?5 }' ~1 K. x
1 s0 o, x+ @* G1 P& g这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。: ~- Z2 e# y. v/ P: y9 f
1 j$ F W7 m% I7 d# J2 f/ D* a; F, A所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
# _6 S7 F7 O, }! S
5 L9 }# |4 ]5 x) K1 y2 {* Z这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。7 K0 i! p# C) l4 `
|