LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

上传漏洞-ASP 中 chr(0) 文件上传漏洞原理及解决方法

admin
2011年1月31日 1:38 本文热度 2584

我们在用 ASP 开发文件上传功能的时候,为了防止用户上传木马程序,常常会限制一些文件的上传,常用的方法是判断一下上传文件的扩展名是否符合规定,可以用 right 字符串函数取出上传文件的文件名的后四位,这样很容易就能判断了,但是这里面有一个漏洞,非常危险,就是 chr(0) 漏洞,详情请接着往下看。

一、首先解释下什么是 chr(0)?

在 ASP 中可以用 chr() 函数调用 ASCII 码,其中 chr(0) 表示调用的是一个结束字符,简单的说当一个字符串中包含 chr(0) 字符时,只能输出 chr(0) 前面的字符,chr(0) 后面的字符将不被输出。举例如说明:

<%response.write "HTMer.com"&chr(0)&" 欢迎您 "%> 以上代码你在 IIS 下运行下看看,是不是只会输出“HTMer.com”呢?后面的“欢迎您”就没有了,因为读到 chr(0) 时就认为该语句结束了。

二、chr(0) 漏洞上传原理:

假设我在 ASP 程序中已经设置只能上传 jpg 文件,这里看我怎么利用 chr(0) 漏洞上传 ASP 木马的:

这里假设有一个 ASP 木马文件为 htmer.asp,我把它改名为 htmer.asp .jpg,大家有没有看到中间有一个空格?我们在获取该文件名时,这个空格就被认为是 chr(0),当用 right("htmer.asp .jpg",4) 看的时候,确实是 .jpg,但是当实际读取 htmer.asp .jpg,并生成文件的时候,系统读到 chr(0) 就以为结束了,所以后面的 .jpg 就输出不来了,上传后的文件名被自动生成了 htmer.asp,这意味着什么?我想你应该知道了吧。(由于显示的原因,文中“.jpg”前面的空格实际上代表 chr(0)。千一网络编辑注)

三、解决 chr(0) 漏洞的方法

解决办法是检查上传的文件名里面有没有 chr(0),在 ASP 中直接用 replace 函数替换掉 chr(0) 字符即可。

(chr(0) 漏洞是在完全按客户端的文件名来保存时才存在,如果文件标识符是系统决定的,而文件扩展名由客户端文件名来提取,则不会出现安全问题。实际上,我们应用中不可能完全按照客户端文件名来保存,因为这本身就是一种漏洞,因为这样客户端就可以上传文件来覆盖已经存在的文件了。)


该文章在 2011/1/31 1:38:36 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved