XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。6 J; \! |9 S+ f$ _
* e w: h' g9 K; R7 } 0 b/ d. G! `: \' @/ @
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
5 {& t/ m8 r+ p$ c d: F ' t$ ~9 c( a9 s
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
' ^3 F% t# B! P4 ^/ K 2 F5 d7 ?* z# Y
! ]# t) f3 Y& h) T/ H1、针对性挂马$ Q2 }. I% h% Z1 M8 Y5 Y
; z' H4 |: o6 A! z( H0 {所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。( L! \& p* D1 ]2 H2 i
! A% |2 b, L1 P+ o4 O( X
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
# N8 o$ G5 {# y; e
) H/ o& f7 L4 p& a5 Z k2、用户权限下操作
! d: C% p- L3 ^4 N" w
, C' b: J: O8 K. d! W) d: ~这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
- x1 H) ]% F6 O. B$ I7 _6 l+ u$ Z B9 ?" F
3、Dos攻击或傀儡机1 F2 N6 H+ \$ ?) j! ]# i# \ L
* E8 \) I, Z, `8 g这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
* d" A% N; { }; h) A/ z! n1 M
1 c2 B7 U' h! e) \2 b4、提权' P0 D8 k: L3 U% I' _/ z
! _' r9 G& `( `# ?一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
" E# {+ C5 M8 y5 o$ x X2 \7 r6 R1 @& K; }# @
5、实现特殊效果! P: H1 i# N2 D% f
- _: `; k+ u2 R
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
8 A& s0 F& `8 ]* \& p$ n8 b0 y! A0 ^6 V& o) e4 }7 G( w! J
结论: ^" d6 E; l% Z
( @ t4 ~. u0 Y- [从而你应该了解到这些网站应该具有的性质:% M2 N$ x; e# P$ D5 s( W7 n
$ Y& I. A# Y3 t( v- v- t( E( k
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。" J/ R- x# P$ }7 @8 w
0 K8 d) ^2 ^: D! A9 ?' n |
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
' g; K3 z1 D; s# k$ e& P
: H# s. }! s$ h& x# n$ M其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
8 J h& w5 S$ w& U- D" B7 V' U( u$ i( E; I: j h U
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
/ E* L+ Y* K. M* |, m7 a
" w0 @5 N2 w0 c' Y( k" _% a所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。. q( `( G& M! O0 f2 E
5 y3 i# M% Y* w q Y
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。* y3 R' H& y' g2 r. d, _( A
|