XSS高手们的那些XSS,大家都是可以拿出来做些什么的,这样的东西才能算得上漏洞。" d+ W5 s0 N& @' Q4 Q, }$ x
4 V( _, `' X. q5 {4 k2 W- f/ q8 `
+ e* Y" q$ h( G7 P. ~) ?
大家经常看一些高手测试XSS漏洞都是alert一个窗口来。便以为XSS即是如此,当自己alert出窗口来,便说自己发现了漏洞。' A5 \9 w8 ]+ v& b2 u7 X( u
& e9 ^ y5 f& g: n其实远没这么简单。你发现的只是程序员的一个小bug而已,远谈不上XSS。它们的关系如同系统漏洞与漏洞利用的关系,不可同日而语。你的系统是否出现过“****内存不能为read”?你是否知道它是溢出漏洞的一种表现呢?但想因此做出exploit远不是那么简单的事情,你能说自己发现了溢出漏洞了么?那么利用xss漏洞能做什么?应该有几点: 8 t' |5 t. A$ N, ^9 O% `
' k+ [' X! v+ b$ ?: i. t6 H2 g' }. K. \6 t/ e+ N& y# ~
1、针对性挂马% B. Y; Y) L; ^( H, u
! x4 Z- t* M0 [! T/ H所以这类网站一定是游戏网站,银行网站或者是关于qq、taobao或者影响力相当大的网站等,它们必须有我们平常需要盗取的帐号密码;当然也或许是这个站点的浏览量相当高,我们能将更多的马挂出去。
, Z; }6 l2 G* J0 h1 B) Y& R# U' l' i" }6 ]& @% z) w/ D
而如果仅仅是平平常常的一个小站点的XSS漏洞,如果我们要挂马,那么莫不如就直接把木马页面地址贴出去。/ A: h; }2 F: m; `& @0 x7 S
& l6 {0 u# k9 ^4 b8 i7 z! F2 F* e2、用户权限下操作
: c; U' ?0 Y+ s/ ~. X- r3 v+ b: a" U. J
这类网站则必须有会员了,而且这些会员有很多有意义的操作或者有我们需要的内部个人资料,所以我们可以通过XSS对已登录访问者进行有权限操作。我认为cookies的盗取应该算作这一项,因为其目的也是获取用户操作权限(盗密码包括在内),从而获取用户某些信息或者进行权限下的相关操作。
* P+ d& N* ^( _( }7 l I2 p# T$ P* ?+ ?; j
3、Dos攻击或傀儡机1 `1 ]- q$ t8 F
- a3 Y' n+ U7 u: G
这同样需要一个访问量非常大的站点,利用小站点莫不如我们自己攻击或获取信息。我们可以通过此页的访问用户不间断地攻击其他站点,或者进行局域网扫描等等。这类js工具早已经产生,js端口扫描、jikto、xssshell等等。: h" w @) k T- R- j+ O* y
4 W3 s8 l1 Q! V& r. z4、提权
" G# Y5 A0 Y- Q r: s. p. F6 Z5 T3 y1 i& ^2 y5 B& E7 h
一般这主要发生在论坛或信息管理系统,总之一定要有管理员了。这需要攻击者对目标系统相当熟悉(一般这样的系统需要开源代码),从而知道怎样构造语句进行提权。
: Q/ i! S# C5 `& q
8 {+ o& Z# l' J# ]) I1 P5、实现特殊效果3 O& a3 d# @& r- M
/ Z5 i$ r, r+ U' E& K譬如在百度空间的插入视频,插入版块;譬如一些人在新浪博客或者校内网实现的特殊效果等等。7 w. `8 Z% {. Z1 b7 f
% k/ }' E3 k$ b6 {3 J* q结论:
9 \& b, S% J" n% j
- a$ y* @4 S& e% L/ D从而你应该了解到这些网站应该具有的性质:
/ X8 Q& \+ E( Q3 f7 @
V2 G0 f6 h0 j# n! y' X极高的访问量,有会员,有管理员,有具有价值的帐号密码,或者有意义进行特殊效果的实现。3 X+ F# K# m* C. Y2 c+ v7 e
5 F9 I( A% I- }8 W! c8 L# V2 I如果你读过《Ajax Hacking with XSS》,你应该知道XSS至少包含input XSS和textarea XSS等七种方式。$ p. \3 x" A7 c# v, W6 r
1 X5 k0 B+ H3 o" M! V; x
其中url XSS属于input XSS,这些漏洞大部分属于保留式的XSS,而textarea XSS等一般属于不保留XSS。
* r) c; b$ o* l
9 w/ W1 T2 ^6 E这意味着正常访问一个页面是不会触发保留式的XSS的,尽管这是大部分网站具有的漏洞,其中搜索部分又称搜索式XSS漏洞。
. m# b6 u$ V j: Y) W5 o" o, o
8 Q5 C3 H8 Q" s所以当你获取了一个input XSS,你仅仅alert出一个小框框。你跟别人大吹大擂,你发现了一个漏洞,并且你可以alert一个框框给他看,但是事实上你什么都做不了。即使你能挂些小木马,那也是很没意义的事情——因为你莫不如直接在自己的虚拟主机里做XSS页面发给别人。 D/ R3 {* H; b7 R
1 G& j$ o$ z; {/ F6 a! o* p这个跟sql注入不同,XSS毕竟是客户端的东西。sql注入的目的往往是为了得到目标系统的权限,并且sql语句本身执行的就是服务端的指令;但XSS一般却是为了获得客户端的东西,执行的也是客户端的指令。
/ L6 N$ A, A" ^1 b# ~- h6 F; L |