文件上传漏洞防御

本文详细阐述了文件上传漏洞的原理,包括前端绕过方式,以及从系统运行时、开发阶段和维护阶段的多方位防御措施。强调了白名单策略、MIME类型检测、文件重命名和安全设备防御的重要性。还给出了修复上传漏洞的具体步骤和注意事项。
摘要由CSDN通过智能技术生成

参考文章:

文件上传漏洞-原理篇_文件上传漏洞,find提权-CSDN博客

网络安全-文件上传漏洞的原理、攻击与防御_文件上传漏洞原理-CSDN博客

网络安全课第七节 文件上传漏洞的检测与防御_$post=file_get_contents("php://input");-CSDN博客

文件上传漏洞

概念:

文件上传漏洞发生在有上传功能的应用中,如果应用程序没有对用户上传的文件没有经过严格的合法性检验或者检验或者检验函数存在缺陷,攻击者可以上传木马,病毒等有危害的文件到服务器上面,控制服务器。

前端js过滤绕过:

前段JS过滤绕过通过上传漏洞是因为应用程序实在前端通过JS代码进行的验证,而不是通过程序后端进行的验证,这样就可以通过修改前段JS代码的方式进行绕过上传过过滤,上传木马。

文件上传流程:

用户上传文件 -->服务器的缓存目录 -->移动到目标位置并且重命名

 URL编码原理:

把字符变成16进制,然后加上一个%。URL编码的核心是为了更好的传参

漏洞防御

文件上传漏洞攻击与防范方法_xml 文件上传漏洞-CSDN博客

1.系统运行时的防御

(1)文件上传的目录设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。

(2)判断文件类型。在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

(3)使用随机数改写文件名和文件路径。文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

(4)单独设置文件服务器的域名。由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。

(5)使用安全设备防御。文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,专业的安全设备防御此类漏洞主要是通过对漏洞的上传利用行为和恶意文件的上传过程进行检测。恶意文件千变万化,隐藏手法也不断推陈出新,对普通的系统管理员来说可以通过部署安全设备来帮助防御。

2.系统开发阶段的防御

(1)系统开发人员应有较强的安全意识,尤其是采用PHP语言开发系统。在系统开发阶段应充分考虑系统的安全性。

(2)对文件上传漏洞来说,最好能在客户端和服务器端对用户上传的文件名和文件路径等项目分别进行严格的检查。客户端的检查虽然对技术较好的攻击者来说可以借助工具绕过,但是这也可以阻挡一些基本的试探。服务器端的检查最好使用白名单过滤的方法,这样能防止大小写等方式的绕过,同时还需对%00截断符进行检测,对HTTP包头的content-type也和上传文件的大小也需要进行检查。

3.系统维护阶段的防御

(1)系统上线后运维人员应有较强的安全意思,积极使用多个安全检测工具对系统进行安全扫描,及时发现潜在漏洞并修复。

(2)定时查看系统日志,web服务器日志以发现入侵痕迹。定时关注系统所使用到的第三方插件的更新情况,如有新版本发布建议及时更新,如果第三方插件被爆有安全漏洞更应立即进行修补。

(3)对于整个网站都是使用的开源代码或者使用网上的框架搭建的网站来说,尤其要注意漏洞的自查和软件版本及补丁的更新,上传功能非必选可以直接删除。除对系统自生的维护外,服务器应进行合理配置,非必选一般的目录都应去掉执行权限,上传目录可配置为只读。

1.文件类型判断,后缀白名单,MIME类型判断结合

2.文件重命名

3.将文件上传的目录设置为不可执行

4.使用多手段检测文件类型,不依赖单独检测手段,比如将MIME检测和后缀名检测结合,使用白名单策略

5.使用随机数来存储文件:防止.php.jpg等多后缀名引起的漏洞

6.单独设置文件服务器的域名,该服务器不能运行任何动态网页,只能静态访问HTML、图片等

上传漏洞修复

1、使用白名单限制文件上传的类型。
2、对上传文件进行随机重命名,并且文件的扩展名不允许用户自定义。
3、对文件上传的文件夹进行权限限制,去掉脚本的执行权限。
4、对文件的内容进行恶意代码的检测。
5、文件服务器单独设置。

1. 严格检测上传文件后缀名、文件头、Content-type(文件类型),尽量采用白名单方式限制。

2. 重编码文件,比如对图片或视频做转换处理。

3. 限制文件大小,避免被恶意上传大文件造成存储空间不足,进而网站无法正常运行。

4. 在服务端本地检测 Webshell,发现后告警出来,人工确认后再删除,同时排查是否为外部入侵导致的,查日志去追踪可能存在的漏洞来源。

5.上传文件重命名,建议使用随机文件名。

6.隐藏上传文件路径相关信息,比如关闭错误回显,不要把上传路径直接返回。

7.限制上传目录可不解析,不同的服务器有不同的配置方式。

限制上传目录

Nginx、Apache禁止上传目录的php执行权限_上传文件的存储目录禁用执行权限-CSDN博客

PHP上传目录禁止执行php文件的方法_如何禁用上传目录脚本的执行权限-CSDN博客

MIME检测

MIME类型检测与绕过_mime检测-CSDN博客

白名单

文件上传漏洞之白名单_文件上传白名单-CSDN博客

采用文件白名单方式构建主机安全环境_安全漏洞 白名单映射-CSDN博客

文件上传漏洞_以白名单方式只允许上传你们要求的文件类型-CSDN博客

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值