博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP代码审计学习笔记 -5.文件下载漏洞
阅读量:5823 次
发布时间:2019-06-18

本文共 1192 字,大约阅读时间需要 3 分钟。

文件下载漏洞

漏洞代码:

<%   function download(f,n)   on error resume next   Set S=CreateObject("Adodb.Stream")   S.Mode=3   S.Type=1   S.Open   S.LoadFromFile(f)   if Err.Number>0 then   Reaponse.status="404"   else   Response.ContentType="application/octet-stream"   Response.AddHeader "Content-Disposition:","Attachment;filename="&n   Range=Mid(Request.ServerVariables("HTTP_RANGE"),7)   if Range="" then   Response.BinaryWrite(S.Read)   else   S.Postion=Clng(Split(Range,"-")(0))   Response.BinaryWrite(S.Read)   end if   End if   End function   dim filename   filename=request("filename")filename=filename&".asp"call download(server.MapPath(filename),filename)   %>

在 MapPath 的 Path 参数中不允许字符 '..',需要启用父路径(IIS6.0出于安全考虑,这一选项默认是关闭的。)

漏洞利用:

 漏洞修复:

如果存在.. 就结束脚本,禁止跨目录进行操作

If InStr(filename,"..")>0 ThenResponse.write "禁止跨目录操作!"response.endEnd IF

错误处理1:

filename=Replace(filename, "../", "") '替换../为空 filename=Replace(filename, "./", "")

代码对../和./进行过滤用来防止目录跳转,但可以通过构造参数饶过检测.由于检测替换只进行一次可以使用....//代替上级目录,程序替换后....//变成../ 

攻击代码示例:filename=.....///sql.asp

错误处理2:

If InStr(filename,"../")>0 ThenResponse.write "禁止跨目录操作!"response.endEnd IF

代码对../进行检测,但是忽略了对..\的情况,在windows下,..\也可实现跨目录。

攻击代码示例:filename=..\sql.asp

 

转载地址:http://qfddx.baihongyu.com/

你可能感兴趣的文章
MapReduce经典案例——合并文档
查看>>
我的友情链接
查看>>
兄弟连cocos2d-x3.0 final视频教程2014
查看>>
一道搜索好题
查看>>
Windows server2008R2证书安装应用
查看>>
我的友情链接
查看>>
python3的getter方法setter方法以及property修饰
查看>>
XML电子口岸自动报关项目 下载
查看>>
Struts2拦截器
查看>>
启用IIS的Gzip压缩功能
查看>>
Linux初级运维(十二)——磁盘及文件系统管理
查看>>
在android studio中安装findbugs
查看>>
网络中各层协议
查看>>
360搜索引擎亮相
查看>>
Redhat6.4_ISCSI服务器搭建
查看>>
百度关于SEO的建议
查看>>
拓网浏览器
查看>>
linux服务器的搭建(mysql+java+tomcat)
查看>>
Memcached安装以及PHP的调用
查看>>
Python字符串格式化
查看>>