XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。
N# F' ]* m! i- {1 h3 D- J6 T9 L- i8 Z; m0 e) _
3 b. g7 W6 ~# E& o
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。3 O4 A4 m, Z$ d5 H# ?
3 K3 d6 U* V' i其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: 1 L" E, m0 R+ Z5 k% I4 o) l$ l
1 V. M- G# x9 B& [) }1 @" s8 S0 M y0 L" T K
1、针对性挂马
& M% P. v# o" t. ~8 f! U4 K+ P
& p# O& J( B" Z所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
, b. h" J% J2 c" ]! n5 j4 h, o5 a
1 G& ^* T$ E1 z4 j, M% | {) L而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。' e* ^+ J- f$ J [- q: H
) {6 R5 e% |9 x O3 p/ w( D
2、用户权限下操作
3 s. K( ]- \5 T) |/ n+ D6 S0 ^' z1 f
/ v' U( d9 C5 j8 `这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。9 I% Q ]1 k; F
* G6 S; O8 u. a* Z L( d; A3、Dos攻击或傀儡机% d: G$ D& r6 A/ x- @0 i1 m* {9 G
) j8 b; _2 \3 V- X$ V2 V这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。
( U8 d" Z+ @ `% v) ~6 ]' w7 k2 t9 ^) J
4、提权
/ |+ { z; H( x7 |7 M
( a6 m: {' \: Y. K- U一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。+ f; s+ e0 K7 D8 L
, Y" U( Z# K+ J5、实现特殊效果
' G9 Q- a% _+ D' z' V" {: E$ W4 \& s' Z
譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。* }# A. [+ ^: @! y# S
6 K2 {' m1 F+ w8 v结论:
; @" a4 f3 t7 f$ V. w
* `2 {/ f& P" c' b: o# C* M1 i/ W从而你应该了解到这些网站应该具有的性质:) \. F, Z0 O- R1 D
! @3 p/ Q: P$ _& E1 ~9 ^极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。4 r1 @: x! `3 _( c3 b
0 P" |! Z* N7 [2 R' Z* [
如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。
5 n, G; d6 T. }, z$ s9 Y1 b' G2 g y: C+ w v9 d" J
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。1 y7 g- ]7 H: m- t) K8 k
F7 \7 P, { C P" V r2 ^1 |
这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
& Q( i5 }$ k- A7 [/ U2 Z% |5 X& n5 _* h6 p2 p( G5 `
所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。7 d9 T* Q8 Y* n1 N0 `: K" I x+ a2 `. v
4 k7 c$ T( O. O
这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
, n7 Z: ~8 Z; }& C$ |' @ |