如何解决ASP的上传漏洞
2019-07-23 08:29:48来源:爱站网 阅读 ()
相信大家在ASP编程中经常会听说ASP上传漏洞,那么很多人会好奇什么是ASP上传漏洞呢?其实ASP上传漏洞是将一些木马文件修改后缀名进行上传,那么我们现在就去看看如何解决ASP的上传漏洞的内容吧。
针对此情况使用下列函数进行辨别:
<%
'******************************************************************
'CheckFileType?函数用来检查文件是否为图片文件
'参数filename是本地文件的路径
'如果是文件jpeg,gif,bmp,png图片中的一种,函数返回true,否则返回false
'******************************************************************
const?adTypeBinary=1
dim?jpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
dim?bmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
dim?png(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
dim?gif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)
function?CheckFileType(filename)
on?error?resume?next
CheckFileType=false
dim?fstream,fileExt,stamp,i
fileExt=mid(filename,InStrRev(filename,".")+1)
set?fstream=Server.createobject("ADODB.Stream")
fstream.Open
fstream.Type=adTypeBinary
fstream.LoadFromFile?filename
fstream.position=0
select?case?fileExt
case?"jpg","jpeg"
stamp=fstream.read(2)
for?i=0?to?1
if?ascB(MidB(stamp,i+1,1))=jpg(i)?then?CheckFileType=true?else?CheckFileType=false
next
case?"gif"
stamp=fstream.read(6)
for?i=0?to?5
if?ascB(MidB(stamp,i+1,1))=gif(i)?then?CheckFileType=true?else?CheckFileType=false
next
case?"png"
stamp=fstream.read(4)
for?i=0?to?3
if?ascB(MidB(stamp,i+1,1))=png(i)?then?CheckFileType=true?else?CheckFileType=false
next
case?"bmp"
stamp=fstream.read(2)
for?i=0?to?1
if?ascB(MidB(stamp,i+1,1))=bmp(i)?then?CheckFileType=true?else?CheckFileType=false
next
end?select
fstream.Close
set?fseteam=nothing
if?err.number<>0?then?CheckFileType=false
end?function
%>
那么在应用的时候?
?
?
或者?
CheckFileType("F:/web/164/images/cnbruce.jpg"))?
反正即是检测验证本地物理地址的图像文件类型,返回?true?或?false值
所以这个情况应用在图像上传中,目前的办法是先允许该“伪图像”文件的上传,接着使用以上的自定义函数判断该文件是否符合图像的规范,若是木马伪装的图像文件则FSO删除之,比如:
If?not?CheckFileType(Server.mappath(filename))?then?
????response.write?"错误的图像格式"?
????Set?fso?=?CreateObject("Scripting.FileSystemObject")?
????Set?ficn?=?fso.GetFile(Server.mappath(filename))?
????ficn.delete?
????set?ficn=nothing?
????set?fso=nothing?
????response.end?
end?if?
则是先将文件上传,接着立马使用自定义函数判断文件图像类型的吻合性,FSO做出删除该文件的操作。
ASP上传漏洞还利用"\0"对filepath进行手脚操作
http://www.cnbruce.com/blog/showlog.asp?cat_id=32&log_id=635?
针对这样的情况可使用如下函数
?str_len=len(fileTrue)?
?pos=Instr(fileTrue,chr(0))?
?if?pos=0?or?pos=str_len?then?
????TrueStr=true?
?else?
????TrueStr=false?
?end?if?
end?function?
接着就可判断后再做文件的上传
????response.write?"非法文件"?
????response.end?
end?if?
file.SaveAs?Server.mappath(filename)?
看完本文后相信大家对如何解决ASP的上传漏洞有了一定的了解吧,了解这个知识对我们的学习或工作有一定的帮助哦。
原文链接:https://js.aizhan.com/develop/asp/7663.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:快速生成文件的方法
下一篇:asp之字符串操作函数
- asp中设置session过期时间方法总结 2020-03-30
- asp中日期时间函数介绍 2020-03-30
- asp教程中get post提交表单有5点区别 2020-03-30
- ASP 时间函数及如何获取服务器时间的写法 2020-03-30
- asp中的ckEditor的详细配置小结 2020-03-30
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash