网站运营
位置:首页>> 网站运营>> 上传漏洞解析-小韩网站编程安全系列二(2)

上传漏洞解析-小韩网站编程安全系列二(2)

作者:小韩 来源:蓝色经典 发布时间:2007-07-13 10:08:00 

标签:上传,漏洞,安全


第三、       不足的黑名单过滤。

知道了上面的替换漏洞,你可能已经知道如何更进一步了,对了,那就是直接比对扩展名是否为asp或者asa,这时你可能采用了下面的程序:

Function checkExtName(strExtName)
    strExtName = lCase(strExtName)        ’转换为小写
    If strExtName = "asp" Then
        checkExtName = False
    Exit Function
    ElseIf strExtName = "asa" Then
        checkExtName = False
        Exit Function
    End If
    checkExtName = True
End Function

你使用了这个程序来保证asp或者asa文件在检测时是非法的,这也称为黑名单过滤法,那么,这种方法有什么缺点呢。
黑名单过滤法是一种被动防御方法,你只可以将你知道的危险的扩展名加以过滤,而实施上,你可能不知道有某些类型的文件是危险的,就拿上面这段程序来说吧,你认为asp或者asa类型的文件可以在服务器端被当作动态脚本执行,事实上,在windows2000版本的IIS中,默认也对cer文件开启了动态脚本执行的处理,而如果此时你不知道,那么将会出现问题。
实际上,不只是被当作 * 页执行的文件类型有危险,被当作SSI处理的文件类型也有危险,例如shtml、stm等,这种类型的文件可以通过在其代码中加入<!--#include file="conn.asp"-->语句的方式,将你的数据库链接文件引入到当前的文件中,而此时通过浏览器访问这样的文件并查看源代码,你的conn.asp文件源代码就泄露了,入侵者可以通过这个文件的内容找到你的数据库存放路径或者数据库服务器的链接密码等信息,这也是非常危险的。
那么,如果你真的要把上面我所提到的文件都加入黑名单,就安全了吗,也不一定。现在很多服务器都开启了对asp和php的双支持,那么,我是不是可以上传php版的webshell呢,所以说,黑名单这种被动防御是不太好的,因此我建议你使用白名单的方法,改进上面的函数,例如你要上传图片,那么就检测扩展名是否是bmp、jpg、jpeg、gif、png之一,如果不在这个白名单内,都算作非法的扩展名,这样会安全很多。

第四、       表单中传递文件保存目录。

上面的这些操作可以保证文件扩展名这里是绝对安全的,但是有很多程序,譬如早期的动网论坛,将文件的保存路径以隐藏域的方式放在上传文件的表单当中(譬如用户头像上传到UserFace文件夹中,那么就有一个名为filepath的隐藏域,值为userface),并且在上传时通过链接字符串的形式生成文件的保存路径,这种方法也引发了漏洞。

FormPath=Upload.form("filepath")
For Each formName in Upload.file ''列出所有上传了的文件
     Set File=Upload.file(formName)  ''生成一个文件对象
     If file.filesize<10 Then
        Response.Write "请先选择你要上传的图片 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
        Response.Write "</body></html>"
        Response.End
    End If
    FileExt=LCase(file.FileExt)
    If CheckFileExt(FileExt)=false then
        Response.Write "文件格式不正确 [ <a href=# onclick=history.go(-1)>重新上传</a> ]"
        Response.Write "</body></html>"
        Response.End
    End If
    Randomize
    ranNum=Int(90000*rnd)+10000
    FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt

大家可以看出这段代码,首先获得表单中filepath的值,在最后将其拼接到文件的保存路径FileName中。
在这里就会出现一个问题。
问题的成因是一个特殊的字符:chr(0),我们知道,二进制为0的字符实际上是字符串的终结标记,那么,如果我们构造一个filepath,让其值为filename.asp■(这里是空字符,即终结标记),这个时候会出现什么状况呢,FileName的值就变成了filename.asp,再进入下面的保存部分,所上传的文件就以filename.asp文件名保存了,而无论其本身的扩展名是什么。
黑客通常通过修改数据包的方式来修改filepath,将其加入这个空字符,从而绕过了前面所有的限制来上传可被执行的网页,这也是我们一般所指上传漏洞的原理。
那么,如何防护这个漏洞呢,很简单,尽量不在客户端指定文件的保存路径,如果一定要指定,那么需要对这个变量进行过滤,如:

FormPath = Replace(FormPath,chr(0),"")

第五、       保存路径处理不当。

经过以上的层层改进,从表面上来说,我们的上传程序已经很安全了,事实上也是这样的,从2004年的动网上传漏洞被指出后,其他程序纷纷改进上传模块,因此上传漏洞也消失了一段时间,但是今年春节的时候,另种上传漏洞被黑客发掘了出来,即结合IIS6的文件名处理缺陷而导致的一个上传漏洞。这里简单说一句,这个漏洞最早被发现与*易CMS系统。
在该系统中,用户上传的文件将被保存到其以用户名为名的文件夹中,上传部分做好了充分的过滤,只可以上传图片类型的文件,那么,为什么还会出现漏洞呢。
IIS6在处理文件夹名称的时候有一个小问题,就是,如果文件夹名中包含.asp,那么该文件夹下的所有文件都会被当作 * 页,经过ASP.dll的解析,那么此时,在*易系统中,我们首先注册一个名为test.asp的用户名,而后上传一个webshell,在上传时将webshell的扩展名改为图片文件的扩展名,如jpg,而后文件上传后将会保存为test.asp/20070101.jpg这样的文件,此时使用firefox浏览器访问该文件(IE会将被解析的网页文件当作突 * 理,因为其扩展名为图片),此时会发现我们上传的“图片”又变成了webshell。
这个漏洞其实是十分有趣的,他不只是简单的asp漏洞,而是结合了IIS的一个缺陷,的确非常的隐蔽。
当然,防御这个漏洞也是很简单的,如果没有必要,那么不要将突破按照用户名分目录保存,如果一定要这样,那么需要检测用户名中是否有非法字符,例如.等。

0
投稿

猜你喜欢

  • 我在很多帖子里一直大力提倡运行自己的电子商务网站。也许有的人会误解,网站赚钱靠广告不行。其实广告是网站盈利模式的其中一个方法,不是不行,而是
  • 很多人做网站在为自己的主机,VPS头疼,总觉得速度慢,但是速度快的又花费过大,但是怎么样才能让网站速度快,又经济呢。今天imshu分享一下在
  • 在FreeBSD系统中,一个标准的FreeBSD系统,至少要有一个网络界面以便与其他计算机通信。它支持Token Ring和FDDI,以及普
  • 最近的一份调查报告显示,有相当一部分用户将会采用新的服务器操作系统,并且持这种意向的人越来越多。由于新的服务器系统和Vista类似,有着与V
  • 虽然WordPress.com在Alexa网站流量排行榜上名次很高,但你可能想不到,这家网站的员工还不到20人,确切地说只有16人,他们都是
  • 打开:template/admin/setstyles.htm查找<script type="text/javas
  • 08年4月,或者再晚些的6月,SNS开始真正成为互联网圈内的第一热衷话题,起到推波助澜作用的,kaixin001首当其冲。病毒式的营销、 *
  • 随着电子商务的进一步发展,越来越多的朋友除了开网店之外都已经有了自己的网站或者正准备做自己的网站。由于目前网站建设市场还不是很规范,所以难免
  • 搭建 PHP 其实不很难,只是有点繁琐。要是自己搭建一次 PHP + MySQL 环境很是费时。更糟的是,很多新手在配置 PHP 时常常出现
  • 搜索引擎会对恶意进行SEO的网站进行惩罚,如清除所有链接。百度对作弊的判断条件:(1)在网页源代码的任意位置,故意加入与网页内容不相关的关键
  • 在Godaddy注册一个域名,还可以获得Godaddy赠送的一个10G的免费空间。虽然是免费空间,速度还挺快的,容量也蛮大,遗憾的是网页顶部
  • 1、一个月前的某天,我顾问的一个公司决定找专门的SEO服务优化他们的网站。开会的时候他们CEO精彩讲述了SEO将要给企业带来的价值和利益,以
  • 环境:RedHat as3jdk安装路径:/usr/java/jdkTomcat安装路径:/usr/local/tomcat/总共分为以下几
  • 百度主任架构师廖若雪廖若雪,这个颇有些中性化的名字,却是一个在IT和互联网圈内都鼎鼎大名的&ldquo;纯爷们儿&rdquo
  • 内容摘要:本文详细介绍了 Google AdSense 支票广告费用达到100美元后接受支票的全过程,给各位投
  • 一个高中没毕业的草根创业者,从域名入手,做着被很多人看作是“投机”的生意,却在不经意间成为中国域名投资领域最成功的人,很多知名公司都从他手中
  • 核心提示:10天后,我的网站出现在搜索结果的第九页上。这也给我上了关于SEO的最后一课:一切都需要耐心。我很讨厌在搜索页面的前几位看到自己写
  • 10月30日消息,UCWEB董事长近日在博客上表示,创业者必须牢记两个关键词:“专注”和“极致”。雷军表示,集中所有资源做一件事情,才能把这
  • Godaddy Linux主机帐户的免费软件您了解多少呢?我们的所有托管计划都含有一些免费的server-side applications
  • Photoshop官方提供免费相册,非常酷的一个相册,全站基于Flash技术架构的,其操作非常方便。容量大小为2G,支持图片直接外链,仅可上
手机版 网站运营 asp之家 www.aspxhome.com