XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。7 a1 t a$ d5 Q
) r- V2 Y" Q$ r: D
! s. `4 Q( h; F, w8 j大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
+ V9 j$ ~5 w2 @, d; X9 l X 6 \1 O: G& E/ p3 x% n# G# q% k3 \, L
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: 7 g7 d, d* V3 S5 \% T
x- n u0 B7 t9 g
9 Y: Z/ ?, A) t& D; D1、针对性挂马
0 F" k5 h) K3 P! |7 F( G# {0 D6 Z2 d* U
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。, C" h( N+ |0 g8 g- N# [
4 p9 e2 h N7 J& i# b. t! E而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
H" e! ~# ]' k& p' {
, f& ?! P& t/ o2 u$ o8 j, c2 \/ u2、用户权限下操作
2 I! _# F# C5 H6 J0 }2 d4 Z3 A/ w* f% Y' u
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。$ c# q/ D' W0 R
/ E- Y0 t6 H3 w% A+ i% ~4 n' n
3、Dos攻击或傀儡机 C; {5 D" L( I- i, J' o
$ I6 f6 l7 x- `0 Q( h$ |
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。$ S) `( C+ k( l1 V. ~
& { {$ ?, ?- H$ a( i5 f
4、提权
. \; W0 w! W( l$ d$ f' w1 P) W$ n8 ?( D& K: {1 S
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
8 E& O3 q+ J( X) _$ }0 j7 k* c& U
5、实现特殊效果
n- V* R9 q1 S# Z" ?. s A9 V; i) z7 U( U% l9 @7 A% n
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
2 J5 ^8 j9 T0 P% a U6 i6 A7 X' F. s9 o9 Y" f
结论:2 g$ m6 x5 j3 J+ f
# b% y: m: H8 e" ]9 `- X/ H/ F/ Z7 k
从而你应该了解到这些网站应该具有的性质:& }& H; E7 ]1 K) z
. O2 c8 C, Q- Q) e* F( Q极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。) z. D7 C8 \( Q' {
1 R6 i0 j8 e: D
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。7 S; P+ p/ X: O8 H
3 X' N' o' g2 t" y其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
7 M% a. j) N( q6 h" s; F4 }- R* o1 H9 ^% {
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
1 i f7 g/ p3 r# h% |" A5 a
. H5 D- N& t2 d- c6 S2 u5 G; t所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
6 H& I/ p' O7 }( _ z9 n3 ]- D" {/ D, |, O0 f: ]! s& R
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
$ X/ k3 Y4 D. Y6 U& k |