XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
% _# Q: e" P, J( B$ _
0 O# m2 |* M4 {
3 M& x' w5 W9 T6 b大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
; \- ?! B) F; r# v+ x! S4 {3 I
8 }) f! {$ k( w: L其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点:
/ k0 J0 |; c+ }& B+ `( P ' ]5 s( T7 W: q% w5 ~6 H0 A& s z
( y( ]' b$ t; p" d; s6 \
1、针对性挂马
2 z* f3 Y. _) f( B* ^0 y% j6 b/ E h7 j8 ^7 n
所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。% E1 t; W/ i) l
) P) o9 H" S. O" o! P5 l4 U" L1 y" `而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。
! b: m- F. R& A5 k4 z0 X; F6 L& C# z3 f
2、用户权限下操作
& r" ]) `! ?( r9 k. N
+ _5 x, L7 P( D! {, v- N这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
* |9 p8 q) i7 t) e' \9 ]% e
$ |: K" [. _& u9 X t4 E3、Dos攻击或傀儡机4 R$ t9 {/ H$ n1 H
# P( e6 X9 O0 J
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
$ b4 {9 x; f% H2 C& S5 _. R$ S$ h# V w) ?6 f5 y' G
4、提权6 E8 w) f0 D/ }* D
9 ~5 I( c- j+ z! ?' s% V L一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
q; r! G4 `; ~$ z. U, t, e" g" v! j3 N) j
5、实现特殊效果( M) w3 u. m- r/ O+ E& u
4 w! J. z5 H$ H' f- [8 U3 Z& U
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。4 u- G# I1 L% E: `
- G# B! _; `* X! h% o2 o
结论:3 c0 |! E. G& X2 p) f
* a# u& h3 X5 {; S+ D4 Y. M
从而你应该了解到这些网站应该具有的性质:: G$ T- \& D0 w1 h' L6 A' r
3 [; O5 u. ~* n$ O' l极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。 O/ s9 f% d5 G5 \* E( ? k
% n7 o+ Q& i. c' I" m1 ^2 l如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
7 }) i& \5 ^5 u- ~( t) b! E. g9 W1 F% a
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。' M+ I4 H4 o# |7 I
" T& U, g, I6 Z$ g) s Q8 t
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。" E8 U+ C9 {3 A" v% x
, l, n t5 J6 s( C- Q
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。
" A& R/ t: H7 J+ M% e) b0 U! T% j; }1 L. W) W) o9 X7 @
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
3 X5 @4 z0 b/ x4 I' Z/ D) z' T |