XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
/ j- m& S7 n7 M- H" G2 Q$ O7 G7 L, m b: W8 i, ?
9 T( m3 o- T: q6 T) e; {大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
& W7 m+ v0 J7 w% P 4 c; g/ l2 `- @- q1 F+ n. Q# Q
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: " ^7 ^* {3 ]' @- n
( I3 {9 p% ^$ v& E, Y7 ?& m
2 y9 o5 K! M) h* O$ i6 r1、针对性挂马
0 g7 B( }$ F, H+ F/ { Z+ G) p {7 m# W
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
5 l) S! H. u7 z& d6 M6 v( V- U2 Y1 R+ m5 p$ b Q/ ~
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
; {+ i* E6 `3 K# m$ \
/ J1 {: h$ i3 ^2、用户权限下操作7 y: H1 v) v. o
1 W% E. ]+ [9 H9 f
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
6 d8 a3 A) G* V3 d& u v
* k& s' I0 O; i; u" h/ {% \ B5 T3、Dos攻击或傀儡机
- ~- g( `$ b; B" n- m7 ~* a5 J1 X4 n/ B- M) X
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
! ~& Y& ]! A+ C+ X7 Z& C. e' D$ s9 k+ U- B: q" g( `# W' g! `
4、提权$ c9 l+ @ R' s8 T( Y2 w, r
; M! B- q5 R$ Z# m1 e一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。" r. b- f- @% p& B
" s o" _" f9 @/ K- o; g9 \1 I5、实现特殊效果5 Z$ N/ r, H' u3 }/ f
$ e# I! }5 i( d+ b8 d* R9 M1 y
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
% q' n% D/ J; F9 G& N1 b0 s c' g2 U( T
结论:+ y& F3 y1 e& j, c& L2 h
" u! O" E2 S/ b! ^
从而你应该了解到这些网站应该具有的性质:9 T7 A: f6 f4 G; p
- U( D6 O0 d* Y6 c. i极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。. D+ Z# S5 D/ O0 h
, ?- n1 r) v5 Q* f如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。- D: W4 J# @, Q
$ b' q: {2 \" s( R( [
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
; r& y& B$ s; P( X O* t4 G# { b8 O1 B( p1 X+ n
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。9 K) ~+ i3 B$ }. g
& A# t0 q& I! ?所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
, G& Z; r2 V/ j8 }
& W. G# j& h! a! `+ `这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
4 A. n' ~% ~' S% D |