文件上传验证

文件上传的攻击方式

一、JS检测绕过

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

2、先把需要上传的文件后缀改成允许上传的格式,通过js校验,抓包把后缀名改为可执行文件的后缀上传实现绕过

二、文件后缀绕过

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

比如:xxx.xls.xxx.xxx.xxx 因为后缀xxx不可以解析,所以向左解析后缀,最后解析出来是一个Excel表格

三、文件类型绕过

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

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

四、文件截断绕过

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

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

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

五、竞争条件攻击

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

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

六、文件内容绕过

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

修复方案

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

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

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

4、单独设置文件服务器域名(如果有条件),由于浏览器的同源策略一系列客户端攻击将失效。

  

猜你喜欢

转载自blog.csdn.net/hanshoukai/article/details/81713927
今日推荐