XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。* A5 k$ M1 E5 ?% ~6 E3 O& u
% L! o5 Y$ F& ]/ ^
' ^3 s- z9 c) w大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
" U5 e( w9 [3 v2 X5 N# F % V' J& G: @+ v/ \
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: . |8 O& P3 O- U; e
1 @" ^4 H* F& O) z, I$ L: ]! \6 `0 W3 j: { d6 E! ~; a
1、针对性挂马! u- z1 z! p D* D6 p, L
$ l" ? a1 A: q6 q& Z' W
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。0 T" a" @$ r. I$ ^9 G
9 O; _8 F/ x, t6 H: X \; A而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
$ X" u2 E% f2 f8 e& n- C' M4 ?! a# q- @! K$ J- m0 x
2、用户权限下操作9 \2 B" m9 v/ H+ N
+ n; {% M2 t* E- u) z o: u$ |
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。0 a2 e& v& I7 Y7 H9 q
3 @0 x; ]/ z- ~: P( G
3、Dos攻击或傀儡机: k4 t( g+ V% g% F
: @8 F4 J+ u( V这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。1 z5 y! z! ]' [5 j( S7 _
3 T5 u+ w# {) u3 N
4、提权1 t+ F4 z, g2 ?- @
3 p1 h8 d* {3 R, `8 B B
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
$ }3 \# K1 L* N0 u0 r+ m; w# ^( b' z, O
5、实现特殊效果
+ K, Z7 f' s/ C- g8 X+ ~0 x7 W" A9 m4 z- p, Y4 @1 n) Z! v1 X
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
! T9 N) l* p" v; W7 J% m4 z3 `; l' o7 j* ^
结论:4 N8 k' P3 w# j- p) p
: ~ S. t/ Q5 T/ P* f从而你应该了解到这些网站应该具有的性质:
9 x4 I8 {& Z+ A" O! H, b& s7 C- g% u/ ~% X9 J; ]
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
: q- t, `0 ]4 W$ H( m3 V) y9 t$ F* q' j5 {+ \% Q# X
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。( r' o% B" l% y3 |
, {5 j2 W+ s/ N( I
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。. h) P; H3 H8 G0 d
5 D! W4 V2 U3 F7 M2 r8 Z1 M这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
9 S! n7 [" z$ G% P+ m9 ?% a" t
, C9 H0 a9 x+ m/ ?6 l所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。: |1 `% R2 _* L# T7 M. s
; d0 Q) Z' b# B; D+ X; J
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
* O: O) n! p1 e/ |: i4 z' E' M' u$ v |