确保上传的文件不会被服务器解析成可执行的脚本,进而引发偏离功能设计的意外后果。
前端JS结合后端限制
判断文件类型时,可以结合使用后缀名检测、MIMEType检测、文件内容检测等方式。在文件类型检查时,通常采用白名单限制安全的文件类型,因为黑名单常常会出现遗漏或者大小写绕过等问题,如:
使用随机数改写文件名和文件路径,杜绝上传时的文件名攻击
对%00截断符进行检测
防范文件名包含空格、点等特殊字符的绕过方式
对于图片的处理,可以考虑对其进行二次渲染/压缩(使用压缩函数或者resize函数) , 在处理图片的同时破环图片中可能包含的代码
文件上传的目录设置为不可执行。只要Web容器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响
1、限制上传文件的大小,防止由于内存、磁盘耗尽造成的拒绝服务
2、可以配置web server允许的最大Post大小
3、可以在代码层面获取上传文件的大小,根据文件类型的不同进行进一步的过滤
1、确保上传的文件放在安全的路径下,必要时可将上传的文件存放于web server之外的远程服务器。
2、确保web server版本为最新,防止由于web server漏洞造成的文件意外解析
3、部分文件上传攻击会配合本地其他漏洞进行,所以也要保证web服务器减少其他可利用漏洞。
升级IIS版本,IIS5.1与7.5均无此漏洞
不要使用AddHandler , 改用SetHandler , 写好正则 , 就不会有解析问题
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
禁止.php.这样的文件执行,
<FilesMatch ".+\.ph(p[3457]?|t|tml)\.">
Require all denied
</FilesMatch>
1.将php.ini文件中的cgi.fix_pathinfo的值设为0。这样php在解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404。
2.将/etc/php5/fpm/pool.d/www.conf中security.limit_extensions后面的值设为.php。
1、Tomcat任意文件上传漏洞环境较为苛刻,将Tomcat、jdk、php更新。
2、避免开启可、通过 PUT 方式创建 JSP 文件的功能。
本文部分图片摘自深信服安全服务认证工程师课程课件中,为方便个人学习使用,勿作商用!!!!文字内容为自己手打,并非直接搬运!如有侵权,请联系删除!!!
本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。