您的位置:首页 > 其它

文件上传下载漏洞

2016-08-29 22:46 211 查看
一:文件上传漏洞:

由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。打个比方来说,如果你使用 windows
服务器并且以 asp
作为服务器端的动态网站环境,那么在你的网站的上传功能处,就一定不能让用户上传 asp
类型的文件,否则他上传一个 webshell,你服务器上的文件就可以被他任意更改了。

 


二:任意文件上传漏洞原理

前台:首先要对上传文件的上传大小做限制

前台:校验文件上传的后缀,也就是文件上传的格式,要校验文件上传的格式不要让别人上传.cer后缀的木马,要对文件上传的格式做严格的校验比如asp.与asp是不同的文件格式不能马虎。

 


 

其次:文件组成filePath+filename+fileposix

步奏:1 截取首先获得后缀,从后往前第一个.后面的是文件的真是后缀

步奏:2 若截取了后缀以后任然存在”.”,那么文件名不合法,可能是xxx.asp.jsp多后最的形式.

 

解决方案:

1.      严格检查文件上传后缀名

2.    
定义上传文件类型白名单,即只允许上传的文件类型
建议你使用白名单的方法,改进上面的函数,例如你要上传图片,那么就检测扩展名是否是 bmp、jpg、jpeg、gif、png
之一,如果不在这个白名单内,都算作非法的扩展名,这样会安全很多。
3.    
文件上传目录禁止脚本解析
 

文件路径:

1.      首先目录的僭越:

拦截原文件路径,在文件路径中加如../这样的话就实现了文件路径的僭越,把文件上传到非指定目录下。如果用户手输文件地址是:D:\abc\../index.asp,那么该文件实际地址是:D:\index.asp,如果服务器端解析文件名时,没有同时考虑到“/”和“\”,解析出来的文件名就是“../index.asp”,如果直接按这个文件名保存,就保存在了不是我们所期望的目录。
处理方式:str.replace(“../”,””)把文件路径僭越路径都替换成空,使其无法僭越。

./ 当前路径(可以省略)

../上一级目录下

/ 根目录下

 

攻击实例展示:



项目中前台已经通过javascript对文件格式做了校验,这时攻击者通过修改后缀名绕过前台js的检测。










\



2.通过拦截工具绕过MIME文件类型的判断

 


服务器端预防方法:

服务器端要严格校验文件的大小与文件格式,文件路径。服务器端的检查最好使用白名单过滤的方法,这样能防止大小写等方式的绕过,同时还需对%00截断符进行检测,对HTTP包头的content-type也和上传文件的大小也需要进行检查。

文件下载

任意文件下载:

         注意”..”或”../”字符(确保操作是在指定目录下,防止转跳到别的目录);

         文件类型(确保下载的文件类型正确)

         路径截断(常见于jsp,asp页面)



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: