XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。( _& A! N: v! s. B7 p5 V, m0 m8 r
# U9 v9 _4 _2 X$ S
5 Q) l8 X% j0 w% k
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
8 V' o$ N9 D a4 t ; i( s9 b% h; u+ r
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: : o) K, T* j: F% J4 C" _5 F
9 w2 u2 U+ K" ?; [2 p1 w: {
# y" ~- w* {6 K) |! z T" U' q
1、针对性挂马( O' Q W/ c6 l5 z
& U& _9 ]9 O9 R* }% Y1 Z& |3 Y
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。) s5 h* q( \# J
t$ _% T- |% J! E# p
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。5 H4 |+ L' y% T% a
7 O" O8 ~' |0 {$ l2、用户权限下操作7 c Y# [7 p$ y: ]/ ^7 \
- B6 G" M$ J) I. f8 P, h/ `, o
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。4 t6 j: B6 t6 R) |" w& g O, e7 P
; x( X E2 M2 V4 S" N% h3、Dos攻击或傀儡机3 e% }# d/ E( B' b$ _
( c7 Z' v- W7 L# q: q) d& s, K: I
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。3 f, X" ]5 B$ h0 B: i
( v- y! e: g* w
4、提权
C& c) w6 a- W
+ w! f/ D2 f. F8 n5 |/ j: V一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
- D2 X- m6 M' y: _2 h( l* \* S& y5 D) _6 P2 r
5、实现特殊效果% ]$ B1 E7 Y7 j4 g7 d! ^1 i( v
3 ^. Y7 R. H' {( \7 [3 L0 E譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
1 S/ T# R+ ]! ]/ b. C+ d6 f& l6 \4 b# O( j6 S
结论:& t' q# ]# @) f/ V
4 ?% l7 J. F: a5 `
从而你应该了解到这些网站应该具有的性质:( C1 D- Q, N, O+ B
5 J: ], E! o/ R
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。3 o+ K5 r4 t M+ W. H* f" \
* E; D, U9 G( @8 k5 h' Z
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。1 {/ B$ M9 W6 n) C/ } l0 N
, z4 r3 q- H2 Y7 p其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
& {5 x4 G& B# l' K, _2 u+ D$ g P( u& J8 `
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。2 u% D6 ] `3 \ G* |+ p
% W: S' K: t% j( d2 Q! Y: F; ^
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
' c) R/ }$ ?1 S6 |; m5 n1 X# M; p
' P' M. w( C# k( r/ [% I* Q2 H* L, V. f这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。# x) V8 O/ B3 U& Q4 M T
|