XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。/ ?( W6 B; ^5 v, x
1 }. a: e: z1 W& j. U9 R2 o u4 T. P% p0 k0 @! L
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。/ ^$ [( N" g5 j: H% l
4 e8 ]/ w1 u4 y) ]3 \( N/ Y其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
. K3 v/ j7 W& x5 ?5 r) j9 P 2 h7 q8 F- `! {0 @ D* e
& F0 N/ l ^: T6 U6 I
1、针对性挂马, C7 _7 |3 F" ^1 G0 Z% T7 o+ h
, b0 |5 z, m, d9 N; V+ j1 b% ^所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
% G' W5 |! s R" o7 G3 p: S! v4 d+ w, ^. v% `# @
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。( H' V y. G: }7 x' u
* N& m" i' |. _3 h
2、用户权限下操作
9 b" O# P% U1 v2 y, ~/ E) i& u# A- X( ]4 [( f. ]; r
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。* ?1 q5 P/ V( i/ Z& H$ j$ m! |
. N1 c. I O5 j3 }) ?9 z8 Q9 L
3、Dos攻击或傀儡机8 e9 i3 S+ e; a0 l
/ C5 I& W) B0 ?0 q* w* r. k( Q
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
6 u, v' s, u: }) y) p- x& m \3 z$ l' b) G3 ~9 ~, h
4、提权
' z4 u2 \6 a% m6 d0 W# s9 ]' `; b) j! C$ ~% v4 v9 x5 L! t- l4 O \
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。6 G @, {5 a" @# ?. h7 E
4 D2 J: g$ n* b! N3 p5、实现特殊效果4 p' z' p: T/ @6 E5 `
" n: e% D) E' `譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。& D$ p4 P: t m& r
! a3 G- P+ T& N g ^0 n. G
结论:+ ?% f7 ^# M: ?7 e7 U
x" o5 n+ v+ G; J4 S. e4 y3 p
从而你应该了解到这些网站应该具有的性质: l6 q$ r( K$ y, O- q2 h5 W
0 C! h( s% O9 |# {+ e
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。% b( H: I' R/ S/ M" e
A' W- D# U) ?0 `
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
+ U3 L {0 b' S: O H1 w+ C( o; d% P" T+ R* n
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
$ L; o) e2 L/ ] _! x0 K) n# J# ]% p! c! z
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。8 q% X& ^4 F$ o1 z* Z- I/ ~
/ S# f1 T! Y+ V" f所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。; A/ n" S5 K3 j5 E
6 A7 h+ m6 E v" T, T
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
1 F% ]- T4 v, L. O! i9 m1 Z! L5 x |