XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
' L: Z1 \7 l. E u2 c4 y. W1 h
l6 E9 ^. R* _; h9 C 1 @1 u2 ]4 W! }; s' |4 U# ~
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
) J' G! w9 J: p2 I : @9 D- N3 b1 l; m" i' C
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
" d2 r4 w4 e3 z9 [2 _6 E8 x
! s9 H; C* n) l5 q5 Y2 j6 C' @& B$ x7 j& N; \
1、针对性挂马
r% _: C" z8 [# V' y/ D& K, \: o. w+ \5 `7 p1 @' c- e
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。% K+ V2 H0 q3 A# V0 X" k
. W s2 C* v2 L1 M) U' x, e
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
: `) A* L0 J* u. j [, X
. M* B- C* W; h( ?' c9 `2、用户权限下操作% t& v6 D. S& W# M( \; A
+ x: l# C. C( G! u这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。. k1 }" J* Y6 ]( b. s% c( n
" _: n9 |" o+ F0 }5 j3、Dos攻击或傀儡机
: P: c% X% k3 C- B2 W9 Z$ ?7 H* u* g. g. l4 g
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
7 h, C$ C& |$ A! t# m3 h% Y4 l$ }7 `8 ]
4、提权( M" p" R; x* f6 O4 v8 q0 K1 j: S. j
, r( p/ Q' B* |1 {2 |
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
) C5 r; `" o. P' r$ Z2 m: T7 c/ R* X: o- Y' C, K; z
5、实现特殊效果
: ~" [/ F6 }% `: N
1 f0 q' X9 X$ M8 D j譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。9 k+ d' H) M4 C7 G8 o
1 k; e/ {# E3 b: S U# q结论:
# `9 w C% I- o) v
: _/ Y/ o5 P) [) K! G& [/ ?从而你应该了解到这些网站应该具有的性质:( d! k4 ?4 {. ~6 G( g( m' b
/ g$ S- Z* Q$ |( p2 Q9 o" A极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。8 o7 Y) X+ L3 F
3 T0 P) U! v, L% i* Q
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
; u. j3 E; Q% [( `5 j/ z3 k! k& ]; [; t! g; n% b
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
& \7 E* }% r0 I
2 v- }/ l2 T% w. _8 |, J8 `这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。4 R/ A# }% d3 u& l5 C
9 E6 B% n4 D1 v5 S J1 P
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
" S4 l2 I* q- B
9 d1 N3 a% @2 e/ w这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。; I6 @) J8 d4 D2 _/ I
|