XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
h2 K. @3 e1 ?8 l- a# d a9 q1 V% o( |
4 c& Y5 J4 }4 ?4 C/ I; X" o. O大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
" d1 Q; n; r! b! t$ S& S6 S: J 5 h# S) e! h* c5 e+ t! y' A5 l
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: 3 N4 ^7 k# j$ e5 o* H( ~$ o
/ c# \& J6 N- b
, x+ m" y" W$ r& o/ X" w' d5 ^" {
1、针对性挂马
% E2 _2 ~# l1 [% C N/ P; A; X. |) O' W6 q/ C E; W$ C
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。. p( R- b4 L r- R% g: t
, S+ E4 W+ Q, I) H* u4 m0 G- T2 [1 |
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
2 e, K; J* a3 V5 x. v
1 X$ a& s( U- W" n e2、用户权限下操作
8 M, {% ^+ P' X% }0 o5 ^7 V1 w: q7 a
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
* B7 F0 {9 L3 _: E- v. D7 J& m; c# k9 F! v; h
3、Dos攻击或傀儡机0 [/ G1 M( S# l' k$ \
- S& U! r- \& v0 C( U* w, S4 R这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。- G0 f! R& A! F9 Y J+ b7 ^0 \
6 M# Z& ~( `9 i q8 \7 t4、提权" M K( h# r8 u+ M. U4 g* F
) g' N5 ]3 E) S" x+ v6 u一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。4 k* }0 v) M/ R$ s+ {
' @: U$ C1 `" n
5、实现特殊效果
( r: F3 R( D1 @4 E, h
, r6 v5 Y% b) \$ O譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。2 Z$ f" a* v& |+ f6 A
% J/ z( G) l3 n% a
结论: R4 \7 `6 d1 @0 x
( K6 e$ M# b' P+ Z+ |从而你应该了解到这些网站应该具有的性质:7 ^4 e+ M1 f4 s6 _, n
/ ~% ]' B- G! T. o7 a% i
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。
$ a- f5 \: O4 i( R4 ?9 Z6 m
# k! f/ O: _0 u: ^ h- G5 I如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。( [, @% }8 g4 E) [( n
+ h6 h9 _+ t3 P/ O5 P5 n其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。# w& P, g# l' x9 @. T9 w0 Z
$ z0 s' s5 R" Y6 ^ |* S
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。: j8 ]' K1 I' `0 n& |/ N
+ b0 w2 [# v% P" L9 n( Z5 k所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。$ b4 b# M/ ?6 o4 K+ S% g$ Y! v
( {/ f% y8 j1 ~9 \
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
! p1 n3 I; k( L+ ]) z |