XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
0 j) |0 g% q% }' i+ F9 I( i4 D* t: \! S, S, ] G. Z
; j$ m& w D) I8 }
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。
2 d6 @7 ~ q( L, b* `0 y4 ]) W 8 z4 q# y; j W/ Z
其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: , T" j6 K- N( |6 D6 q$ i' r
- X) f( O: c. _; e" [* l9 d/ K
* ]6 N, {0 n C( a% x) _! E1、针对性挂马: a6 E5 F0 @% O/ L# ?6 \( Q
3 n; E; m+ o+ h }* i7 A' g所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
; L# z. i; r! }5 f, y
7 a4 G6 ]$ N1 j+ |3 ^( G而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。% [9 Z" Y- |0 y
) T7 u! S2 u& u1 U
2、用户权限下操作: l: n# K( `& m$ O& {) o4 Z1 O2 l
# w" H7 o/ u$ S; z这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。- E+ H, i5 r9 H- Y- n
* a/ h) g; a8 Z: }3、Dos攻击或傀儡机
' y! `/ [1 X5 T& k2 Z7 ]' F, H; k% e7 q& r' f
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。" _4 k) q F9 K; s$ T" S2 w
+ d- g2 d; V9 O3 ^; X P4、提权8 `" R1 Q" M* `; i' g2 i4 l1 {
9 i5 a) l& v# ^. q, i一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
( |, f( f; Q; z( [
$ h2 a/ l0 A1 h" p5、实现特殊效果
1 v" f$ Z4 z/ C9 q y2 W b4 q% x8 N6 I1 \9 g
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。
$ P, ^' s; `) ]3 F0 u
9 Y# A, s1 B; w$ U. Z0 A结论:' D6 M: z& I" w$ ^$ T: w
4 q) @) q0 f7 U: y9 K从而你应该了解到这些网站应该具有的性质:$ ?$ V/ X% V' w) B- d2 g
( C8 H, b: u6 D8 I7 |+ u3 `# n/ C/ y
极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。1 R2 u, I2 [$ I+ g V. b% O. I
2 x. ?- }% u+ o
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。' S9 F* r' ]$ K, k! Z
9 s8 Z5 ^8 J$ p3 ^! w, }! z" a其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
, j/ f' r. h1 t2 H% C" m0 W' U# K; r* Y
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。" E+ H& o: ?/ c/ G$ K$ F& o/ A
$ L! l" ]0 j: Q8 S; a1 A所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。) l+ j( K7 q, y" b( D
- b, J( {/ J n6 R/ s$ W
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。0 y3 U8 ^5 T! t; d, a3 F: U
|