文件上传验证

文件上传的攻击方式php

1、JS检测绕过html

一、使用浏览器插件,删除检测文件后缀的js代码,而后上传文件便可绕过浏览器

二、先把须要上传的文件后缀改为容许上传的格式,经过js校验,抓包把后缀名改成可执行文件的后缀上传实现绕过服务器

 

2、文件后缀绕过函数

Apache的解析顺序是从右到左解析文件后缀的,若是最右侧的扩展名不可识别,继续往左判断,直到遇到能够解析的扩展名为止。网站

好比:xxx.xls.xxx.xxx.xxx 由于后缀xxx不能够解析,因此向左解析后缀,最后解析出来是一个Excel表格插件

看道哥那本书上写的是在1.x,2.x版本下有这个解析问题,如今使用的都是6,7甚至更高版本htm

 

3、文件类型绕过图片

若是服务器代码是经过Content-Type的值来判断文件的类型,那么就存在被绕过的可能。文件上传

Content-Type的值是客户端传递的,是能够任意修改的。

 

4、文件截断绕过

%00表明结束符,有可能会把后边的字符删掉。

http://www.xxx.xom/jieshu=111

把111改成 1.php%00a.jpg,文件被保存到服务器时,%00会把“a.jpg”截断,保存到服务器的是1.php

 

5、竞争条件攻击

一些网站是先容许上传任意文件,而后检查上传文件是否包含特殊脚本,若是有则删除文件。这就存在上传和检验的时间差问题。

能够事先写好 一句话,还没校验完成程序读取来内容就直接给我返回。

 

6、文件内容绕过

前256个字节是合规的,在后边加上可攻击脚本

 

修复方案

一、文件上传的目录设置为不可执行,去掉x

二、判断文件类型,建议使用白名单的形式,对于图片的处理可使用压缩函数或者resize函数,处理图片的同时破坏图片中可能包含的html代码

三、使用随机数改写文件名和文件路径

四、单独设置文件服务器域名(若是有条件),因为浏览器的同源策略一系列客户端攻击将失效。

相关文章
相关标签/搜索