网络安全筑基篇——文件上传

目录

前言

1、什么是文件上传漏洞?

2、文件上传漏洞的原理

3、文件上传漏洞的类型有哪些?

4、文件上传绕过技巧

前端

判断是否存在前端js绕过漏洞

绕过技巧一:

绕过技巧二:

后端

黑名单绕过技巧

大小写绕过

重写绕过

特殊可解析后缀绕过

.htaccess绕过

使用Windows特性绕过

空格绕过

点绕过

::$DATA绕过

白名单绕过技巧

内容及其他绕过技巧

5、文件上传的攻击思路

6、文件上传可能存在的位置

7、文件上传漏洞能造成什么危害? 

8、文件上传漏洞的防护措施


前言

1、什么是文件上传漏洞?

文件上传漏洞是指在Web应用程序中,攻击者可以利用漏洞绕过应用程序的文件上传验证机制,将恶意文件上传到服务器上的漏洞。

文件上传漏洞通常是由于服务器端没有正确实施文件上传的安全措施造成的。常见的原因包括缺乏文件类型检查、缺乏文件大小限制、不正确的文件扩展名验证、不正确的目录权限设置等。攻击者可以通过绕过这些不足之处来上传恶意文件。

2、文件上传漏洞的原理

当用户可以上传文件并将其存储在服务器上时,攻击者可以通过构造恶意的文件来利用该漏洞。攻击者可能会上传具有恶意脚本代码的文件,例如Web shell、恶意程序或恶意内容的文件。一旦文件被上传并存储在服务器上,攻击者就可以执行恶意代码或利用上传的文件进行进一步的攻击。

3、文件上传漏洞的类型有哪些?

  1. 后缀绕过:上传文件时绕过后端对文件类型的检查,使用不常见的文件后缀来欺骗服务器。
  2. MIME类型绕过:通过修改文件的MIME类型来绕过服务器的检查,使服务器误认为文件类型是允许上传的类型。
  3. 文件重命名:通过修改上传文件的名称来绕过检查,使服务器误认为是允许上传的文件类型。
  4. 目录穿越:利用文件上传功能将文件上传到其他目录,导致可以访问非预期的文件或目录。
  5. 可执行文件上传:上传恶意的可执行文件,导致服务器执行恶意代码。
  6. 图片文件上传:上传带有恶意脚本的图像文件,在浏览器解析图片时执行恶意代码。
  7. 图片木马:向图片文件中嵌入恶意代码,使其在服务器解析时执行恶意操作。
  8. 文件内容检查绕过:使用特殊字符或编码来绕过服务器的文件内容检查,上传包含恶意代码的文件。
  9. 客户端验证绕过:绕过前端的文件验证机制,直接发送恶意文件到服务器。
  10. 上传到可执行目录:上传文件到可执行目录,即使文件类型受限,也可以通过执行文件来实现攻击。

4、文件上传绕过技巧

前端

判断是否存在前端js绕过漏洞

 在站点页面按F12键或者站点页面空白处右击,打开调试面板,选择“网络”,然后上传图片文件和非图片文件,然后对这两个文件的变化进行对比,如果网络中没有数据变化,说明存在,如果有变化,那说明此漏洞不存在。

绕过技巧一:

删除JS或者禁用JS

绕过技巧二:

使用Burpsuite对浏览器进行代理,然后BurpSuite抓包  修改文件后缀名,或者文件内容

后端

黑名单绕过技巧

大小写绕过

windows对大小写不敏感,所以上传文件的时候可以使用大小写混合的方式进行绕过

重写绕过

服务端将黑名单的后缀名替换为空,但是仅替换一次,所以可以上传.phphpp后缀,替换后成了.php

特殊可解析后缀绕过

php1  php2   php3   php4

.htaccess绕过

前提条件:Apache开启.htaccess文件功能

黑名没有过滤.htaccess;

编辑.htaccess文件,写入

*1.把目录下的shell.jpg的文件当做可执行的php脚本进行解析并执行。*
<FilesMatch "shell.jpg">
  SetHandler application/x-httpd-php
</FilesMatch>
 
*2.上传后缀为.aaa的文件,让其做为php类型文件进行解析*
AddType application/x-httpd-php .aaa



*上传一句话木马并以.jpg结尾,一句话木马内容写入*
<?php  @eval($_POST['pass']);?>

*webshell工具连接*

使用Windows特性绕过
空格绕过

程序中的检测代码却不能自动删除空格

点绕过

Windows系统对于文件的重命名会自动把点给去掉

::$DATA绕过

Window系统对于文件名+"::$DATA",会把::$DATA之后的数据当成文件流处理,自动去掉文件名后的::$DATA,并且不会检测后缀名,保持::$DATA之前的文件名。

白名单绕过技巧

MIME绕过

%00截断

0x00截断

0x0a截断

内容及其他绕过技巧

文件头检测

二次渲染

条件竞争

5、文件上传的攻击思路

6、文件上传可能存在的位置

  • 图片上传功能
  • 头像上传功能
  • 文档上传功能

7、文件上传漏洞能造成什么危害? 

  • 服务器被入侵:上传可执行代码可能让攻击者获得服务器控制权。
  • 数据泄露:攻击者可能会上传恶意工具来窃取或篡改数据。
  • 分布式拒绝服务(DDoS)攻击:攻击者可以上传大量恶意文件,导致服务器资源被消耗殆尽,从而导致正常的服务无法使用,对用户体验和业务连续性造成严重影响。
  • 恶意软件分发:服务器被用来分发恶意软件。

8、文件上传漏洞的防护措施

  1. 对文件上传进行严格的输入验证:对上传文件的格式、类型、大小等进行限制,只允许上传安全的文件类型,并限制文件大小,避免上传恶意或危险的文件。

  2. 对上传文件进行病毒扫描:在文件上传之后,通过病毒扫描引擎对上传文件进行扫描,确保文件不含有病毒或恶意代码。

  3. 文件重命名和存储路径随机化:将上传的文件重命名,并将存储路径随机化,避免直接使用上传的文件名和固定存储路径,防止攻击者通过文件路径遍历漏洞或直接访问上传的文件。

  4. 设置文件访问权限:对上传的文件设置适当的访问权限,避免非授权用户访问上传的文件。

  5. 实时监测和日志记录:监测文件上传操作,实时记录上传文件的相关信息,包括上传者、上传时间、文件类型、文件大小等,便于追踪和审计。

  6. 使用安全的文件存储策略:对上传的文件进行安全存储,可以考虑将文件存储在非web根目录或数据库中,避免直接存储在可通过URL访问的目录下。

  7. 定期更新和修补系统:及时更新和修补系统和应用程序,避免文件上传漏洞被恶意利用。

  8. 加强网络安全防护:通过加密传输、防火墙、入侵检测等技术手段,加强网络安全防护,防止攻击者利用文件上传漏洞进行网络攻击。

参考链接:文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案_java文件上传黑名单白名单处理-CSDN博客

相关推荐

  1. 网络安全——文件

    2024-06-18 07:18:03       33 阅读
  2. 网络安全——反序列化漏洞

    2024-06-18 07:18:03       24 阅读
  3. 网络安全——XSS、XML、XXE

    2024-06-18 07:18:03       26 阅读
  4. 网络安全文件

    2024-06-18 07:18:03       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 07:18:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 07:18:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 07:18:03       87 阅读
  4. Python语言-面向对象

    2024-06-18 07:18:03       96 阅读

热门阅读

  1. c++日期类的实现

    2024-06-18 07:18:03       30 阅读
  2. 计算机组成原理-期末考前常见简答题总结

    2024-06-18 07:18:03       33 阅读
  3. TensorFlow音频分类修复

    2024-06-18 07:18:03       24 阅读
  4. 在历史课堂教学过程中培养学生的计算思维能力

    2024-06-18 07:18:03       28 阅读
  5. 【C#基础】C#中的IEnumerable<T>接口介绍

    2024-06-18 07:18:03       32 阅读
  6. 企业级-pdf分页数据推送接收解析保存

    2024-06-18 07:18:03       29 阅读
  7. [absl_py][python]absl_py所有whl文件下载地址汇总

    2024-06-18 07:18:03       39 阅读
  8. XML 应用程序

    2024-06-18 07:18:03       29 阅读
  9. C#语言进阶(一)—委托 第二篇

    2024-06-18 07:18:03       32 阅读
  10. 数实融合创新发展 隆道分享企业级AI应用

    2024-06-18 07:18:03       30 阅读
  11. oracle SCHEDULER

    2024-06-18 07:18:03       26 阅读
  12. mysql面试题 Day2

    2024-06-18 07:18:03       28 阅读