所有文章均来自网络(除测试总结部分),如果涉及到版权问题请与我联系,我会及时删除~~~~

谈跨站脚本攻击之综合篇(转贴)

上一篇 / 下一篇  2007-01-15 09:33:34 / 个人分类:安全测试

 

近日,由于发现一些站点仍然存在UBB的跨站脚本攻击的漏洞.跨站脚本攻击虽然很少会对服务器造成一些什么比较大的影响,但对于一个站点来说,存在这种漏洞实在是太不值得!小则,弹点什么东东出来;中则改改主页;重则窃取用户的COOKIES资料,更甚者将会G掉浏览者的硬盘.一个站点被变成一个恶意网站,还有谁敢来?如果再加上该站的站长比较"盲"一些,岂不乱套了?51Testing软件测试网O}B&C }B4B

小小的一段代码就真的能使一个站点成这样?好叫我们来具体的看看所谓的跨站脚本攻击到底会成为什么样的攻击模式.进入一个含UBB功能的站点,比如留言板,论坛,或是含提交程序的站点.首先,讲一下最简单的脚本攻击:<td ></td >等HTML字符的过滤问题.51Testing软件测试网+l|+Jq"C]q5U

登陆过一个CGI制作站点.以原来ASP的眼光看CGI的站点,感觉CGI对脚本的过滤应该很好.于是做了最初的测试.在用户一栏中填写<td >,提交用户注册后发现并没提出非法字符的提示.注册完成后,点击资料也发现页面变形了.如在其他几个如国家,性别里填写也会出现同样的问题,那页面就没法看了.于是换了一个站点,再次提交<td >出现了非法字符提示,看来站点是已经过滤的<>等HTML的脚本字符,那好,我们改用ASCII 码替换<> 如& #60; & #62;代替提交后再来看,又出现了上面页面变形的情况,看来非法过滤机制还不是很完善. 更有甚者,我竟发现一个站点内的姓名栏填写时没有字数大小设置,没有过滤任何非法字符,如果我提交个什么恶意代码那还不成全了我?

.`W4on%TX%Ok&B0

简单的脚本攻击如<td >等HTML格式的代码一定要过滤好,上面的一些站点还没牵扯到UBB就出问题了.那我们下面就开始重点讲一下UBB过滤漏洞的问题.UBB是论坛中用来替换HTML编辑的一种格式符号,如[b ][/b ]可以替换成HTML中的< b></ b>..然而就是这一个替换问题,就成了跨站脚本攻击的最佳积聚地.测试了一个ASP留言版以及一个整站的程序代码:

ZDD#wa ]{3{5ti0

初级问题: [url ]的过滤,在提交该代码时可以构建一个onmouseover函数的恶意代码,既然onmouseover可以生效,那还有什么办不到的?一些原码程序在变换[url ][/url ]时,只是将[url ]s2[/ url]中的s2直接提交到< a href="s2" target=_blank>S2</a >中.看到如此转换我们可以使用相应的ASCII 码中的& #34;来代替",我们多提交一个"然后在构建onmouseover函数进行操作,后果?你应该知道!:P

$kb9l^ QKd/t:Ja Ch;\0

[img ]的过滤,这真的算是个老大难的问题.很早以前就是[img]的脚本攻击流行一时啊.这次测试中,很多站点还是仍然存在这个漏洞.有点程序根本没有进行过滤.尤其是一些免费留言板的提供站点很多都存在这样的问题.下面我们主要将一下[IMG ]标签的问题:

+t0Y6\"e3db1I }$B d __0

很简单的[img ]javascrīpt:alert();[/ img]提交后转换成的代码为< img src="javascrīpt:alert();">,好,到这里我们就可以看到javascrīpt:alert();被< img src="">标签激活了.表现就是弹出对话框.上面写着你在()中要提交的东西.如documents.cookie 呵呵..大多数人都应该知道这东西是做什么.更有甚者,使用document.write();函数,可以写网页.写什么?当然是恶意代码,如[ img]javascrīpt:document.write();[ /img].()中间加你要加的,写你要写的,想多危险就多危险.

c?Eb rR8GeY@0

高级问题: 由于[img ]的初级问题骚扰很多站点就对一个敏感的字符开始过滤.如ja连接,do连接,wr连接,提交后自动分为j a,d o,w r.或是对字符进行过滤java,document,等等.而这些只能难倒一小部分人.我们仍然可以利用ASCII码来代替.可能有人会对代替后的代码仍然不能正常显示而困惑.好,我们下面以一个完整的例子介绍:51Testing软件测试网t w J%J:i-H$g{ [;S;l

某站点UBB过滤代码段如下:51Testing软件测试网&F s;a3R0Z]e

<%51Testing软件测试网"V1A!YV$k;R'[?

Function code_ssstrers)

1|N#\6W8C1K{X*V0

dim strer:strer=strers

-xW7h`$`0

if strer="" or isnull(strer) then code_ss"":exit function51Testing软件测试网 dW)DCje-B [

strer=replace(strer,"<","<")51Testing软件测试网}0v.UZ;w9J?,OM Y

strer=replace(strer,">",">")

@ @E3^:M4r0

strer=replace(strer," "," ") '空格51Testing软件测试网:]fJI ^

strer=replace(strer,CHR(9)," ") 'table

#h1s4~ Mk D0

strer=replace(strer,"'","'") '单引号51Testing软件测试网3RD p#WfF(GJ

strer=replace(strer,"""",""") '双引号51Testing软件测试网 j(y D'B(t[+q1[

dim re,re_v51Testing软件测试网 L z^Y]+j

re_v="[^\(\)\;\';""\[]*"

[HmA;Ii0

're_v=".[^\[]*"51Testing软件测试网 DQylDV Ij

Set re=new RegExp51Testing软件测试网1A BI.ew^Ncp XOE

re.IgnoreCase =True

%^COriC0

re.Global=True

p4f(_-H5}k x-j*si#h#u7g0

re.Pattern="(javascrīpt:)"

9[_#Cm1D0q1R6xL0

strer=re.Replace(strer,"javascrīpt:")51Testing软件测试网#o6D@m9@.Z)z

re.Pattern="(javascrīpt)"51Testing软件测试网EQ9r [(O

strer=re.Replace(strer,"javascrīpt")

exkHnLO(d+`0

re.Pattern="(jscrīpt:)"

CC F8jea*c1EOF0

strer=re.Replace(strer,"jscrīpt :")51Testing软件测试网v9oe8_'u.f1Pf#I

re.Pattern="(js:)"51Testing软件测试网"hCA qa

strer=re.Replace(strer,"js:")51Testing软件测试网:\*~ bw+l^Y\

re.Pattern="(value)"51Testing软件测试网,V4U5VMk"qr

strer=re.Replace(strer,"value")51Testing软件测试网6Q.f4u-a"~`*mQ@

re.Pattern="(about:)"

:X ^|;|LJ&N5E0

strer=re.Replace(strer,"about:")

Zz+E` O0

re.Pattern="(file:)"

m `3^my+pK(p;o0

strer=re.Replace(strer,"file&:")

gm'tB?y\0

re.Pattern="(document.)"

9r9N2NFN"I7Xr0

strer=re.Replace(strer,"document :")

}xEe{E0

re.Pattern="(vbscrīpt:)"51Testing软件测试网 EZ I#^:i8Y.oH _8@

strer=re.Replace(strer,"vbscrīpt :")51Testing软件测试网rd|*j,~#b0um

re.Pattern="(vbs:)"

`,P9J W!Kc0

strer=re.Replace(strer,"vbs :")

4RRvl1@He~0

re.Pattern="(on(mouse|exit|error|click|key))"

P T J XUI0

strer=re.Replace(strer,"on$2")51Testing软件测试网I0k%oxl{ m5z

能看动ASP的朋友,就可以看出,以上代码段对javascrīpt,jscrīpt:,js:,about;value,document.,onmouse以及onexit等语句进行了过滤和替换.并对一些特殊字符进行了替换.如".",";""(",")" [替换代码为""中间的"..仔细观察代码后我们会发现其过滤机制并非想想象的那样完美.提交:[ mg]& #176& #93& #118& #97& #115& #79rip& #106& #57documen& #115& #76write& #30& #29哈哈又被黑了& #29& #61& #29[/ mg] 类似代码就可以实现更高级的脚本攻击.注:由于很多站点仍存在此问题,所以将代码修改过,无攻击性了.51Testing软件测试网&OF#z~^2y F

打开你的FT2000,使用文本编辑,你可以找到任何特殊字符所属的ASCII码.如:分号;可以代替为&# 59,句点.可以代替为&# 46,以这样的形式我们再次提交代码.果然,上面整个的过滤机制几乎完全失效了.根本没起到什么防御作用.

+e0y!]ke:V4i;TB0

看了以上的攻击方法,是不是觉得很郁闷?如果才能避免上面的问题发生?

3Q$^N6I%iT0

1.如果你的站点程序含论坛,留言板,以及其他程序中含提交数据格式的,没有很好过滤机制,请马上下载升级程序或是停止使用.避免造成更多的问题.51Testing软件测试网7n5yY W+U2b H/] Pw

2.各提供免费论坛,免费申请留言板的站,请将UBB格式关闭.或找到更好的解析UBB.ASP程序页.

y2Y m?/l@"Zt0

3.对一些会编写ASP的朋友,我建议大家过滤一下字符:(全部字符将写在[]中)如:

;X'cD5P9t8jF k0

["|.|;|:|\|/|&|$|#|`|)|,|'|"|-|~|[|(||] 注:其中|为分割符51Testing软件测试网X&vE DDdVRT

4.对于某些站点建议去掉问题比较多的留言板,或是其他含提交的程序.如:原www.sangel.net使用的guestbook,一些不知名的程序体问题更是多多.建议换掉它.51Testing软件测试网l;wV|)a G(g'C!Z+p

5.我本人也修改了一个国外的留言板,前台基本已经修改完毕.后台这几天正在赶.修改后感觉在文本提交和输入以及留言时都有了很好的过滤.本来打算全采用英文界面,但考虑到N多chinese 对英语不过关,我还是将部分程序汉化了.有兴趣的朋友可以http://www.e3i5.com/guestbook/测试.我们欢迎善意的测试.51Testing软件测试网y3f[&P'\&Clw,W~

以下是国内一些经过本人测试的站点的留言板有问题的地址,(请各位站长注意啦,及时修补程序免得造成不必要的麻烦),测试的时间比较短一些,可能有一些站点没有找到.可能存在着更严重的问题.:(51Testing软件测试网G B*_9qA;EC2_ }I

http://www.sangel.net

0QJh^6QsN0

http://www.shu163.com51Testing软件测试网e0^F/b x3|%C

http://www.lanho.com51Testing软件测试网rR&Y XB

http://www.mysega.com51Testing软件测试网!iWH XCo:q {5]2i2L y

http://www.xinxing.org51Testing软件测试网`p&MGM9g/ZE

http://www.enkj.net

%z[bGA|E-V2_0

http://www.exang.com

@%er%Z1BW0

http://www.wx-e.com51Testing软件测试网s$|*G.K&oJk+sK

http://www.leleba.net

Q \%]b(D([F~%zV0

http://www.newtide.net51Testing软件测试网1q!ct;Rx_#_'z"x

http://www.newok.net

l'kTn|C0

http://www.sxamp.com

s"v:C h2^!vS'}h0

http://www.itleague.org

|q%?l5t3`,J0

http://tj.desktopcool.com51Testing软件测试网7k4m~.sk'qD/m

http://www.nubiyang.com51Testing软件测试网d dv{$Z:^

http://www.emmmm.net51Testing软件测试网3hH4g3T-L)YF

http://www.5inet.com51Testing软件测试网E4^#n]G#c]]

http://www.cnzzz.net51Testing软件测试网_7e'I.g,K3Uq@.Z

http://www.ik68.net

y*FpSur-jp0

http://www.tx-studio.net

(S5y MWF]0

http://www.dznh.net

@'ZiImH#t3y0

http://czytxx.czonline.net

0^4QwL]"M ^T!B0

http://www.xinyer.com

*U9F R\9s%L&F#|0

http://www.nuowei.net

'M`7}.unk0z0

http://lulufa.net51Testing软件测试网+Ce[6b_:R)y D

http://www.4808.com51Testing软件测试网'h.@Q!Wb S5Hn g

http://www.21east.net51Testing软件测试网1G Ux1C f B"kb

http://ly.szxz.net51Testing软件测试网;g5D0xW Ua Y3t U;Z

http://www.chemcity.net.

:?X_0B5]P b3_oA0

http://333.lm365.com51Testing软件测试网`Q9Al*^u2zu

http://www.inbuy.com51Testing软件测试网s*M5o$D9W'tCgy

http://www.hulalacn.com51Testing软件测试网'y;E7y4R-i WR5t

http://fm818.tancd.com51Testing软件测试网`4@oC Qz

http://xingying.net

Fh7b[+Km{Q9o@0

http://www.loveofstar.net51Testing软件测试网`;{ c-l4Q7HIF

http://www.krdak.com

TbTF ue0?"{aj0

http://www.netwin.com.cn

l&h7~gv F7Yk9i0

http://www.9seek.com

GWo]!G| j0

http://www.lsxxtd.com

Y O b#f*W.^4i/rt OP;j0

http://www.ltpc.net51Testing软件测试网5Xy'Q zS6xe U3AP

http://www.ku68.com51Testing软件测试网`1wr2^6HYW Q1q5Y9]

http://www.joekoe.com---> 自发稿日起,该站已做修补51Testing软件测试网'Qa6r5mM T3qn rT

http://www.longker.com---> 自发稿日起,该站已做修补

)O5Jk0K9O x5mb0

以上就是这次脚本攻击测试的全部内容。综观全部站点,看上去安全性真是的不敢再想.问题多多.

O`R5[.Hs+X*T0

虽然只是举手之劳就可以解决的问题,但稍不小心就会造成大问题。别小看跨站脚本攻击的威力,如果真的灌注的恶意代码,那可就...Yy~汗

O$|a$g8n0v0

 

8?5Eg@cql0

源文档 <http://w.leadbbs.com/a/a2.asp?B=220&ID=409561&ac=pre&rd=255530>

f#kH/H/G l8E0

TAG: 安全性测试

 

评分:0

我来说两句

日历

« 2024-04-11  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 43579
  • 日志数: 61
  • 建立时间: 2007-01-15
  • 更新时间: 2007-07-23

RSS订阅

Open Toolbar