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

2024-06-18 08:05
文章标签 上传 网络安全 筑基

本文主要是介绍网络安全筑基篇——文件上传,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

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博客

这篇关于网络安全筑基篇——文件上传的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071726

相关文章

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Java文件上传的多种实现方式

《Java文件上传的多种实现方式》文章主要介绍了文件上传接收接口的使用方法,包括获取文件信息、创建文件夹、保存文件到本地的两种方法,以及如何使用Postman进行接口调用... 目录Java文件上传的多方式1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用总结Java文件上传的多方式1

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

如何做好网络安全

随着互联网技术的飞速发展,网站已成为企业对外展示、交流和服务的重要窗口。然而,随之而来的网站安全问题也日益凸显,给企业的业务发展和用户数据安全带来了巨大威胁。因此,高度重视网站安全已成为网络安全的首要任务。今天我们就来详细探讨网站安全的重要性、面临的挑战以及有什么应对方案。 一、网站安全的重要性 1. 数据安全与用户隐私 网站是企业存储和传输数据的关键平台,包括用户个人信息、

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路