文件上传漏洞

网络协议
• 阅读 1712

文件上传漏洞是指上传了恶意脚本,然后通过执行恶意脚本来发送 hack 攻击,是非常常见的攻击手段,同时危害特别大。那么该如何防范,步骤如下

  1. 前端检查

检查上传文件的后缀是否在后缀白名单中。作用不大,但是还是要做

  1. 后缀检查

当文件上传到后端时,需要再一次检查文件后缀是否在后缀白名单中。依旧是作用不大,但是还是要做

  1. 检查 MIME

MIME 也就是文件类型,浏览器上传的时候,都会通过 Content-Type 将 MIME 传过来,但是由于 hacker 一般会使用工具进行上传,比如 Burp Suite,所以 Content-Type 是可以被篡改的。所以不单单要检查 Content-Type 是否在 MIME 白名单中,还要检查上传过来的文件的 MIME。在 PHP 中可以通过 Fileinfo 获取文件的 MIME

$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file('./demo.png');
echo $mimeType . "\n";
// image/png

我们来假设一个如果没检查后缀和 MIME 而导致被上传了恶意 PHP 脚本

// hacker.php
<?php

@eval($_GET['apply']);

一般会用 $_POST 多点,但是为了演示,我们这里使用 $_GET。启动服务

php -S 127.0.0.1:9000

在 URL 地址栏输入

http://127.0.0.1:9000/hacker.php?apply=echo%20%22Hello%20World%22;

然后你就能在浏览器上看到 Hello World

  1. 静态资源访问后缀白名单
  2. 静态资源目录不给可执行权限

这个主要是防止万一被上传了可执行文件的情况,防不了 PHP 脚本这类的

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
Vue (ElementUI)在前端浏览器读取文本文件(如JSON)内容
有时想要导入数据到数据库,需要上传相应的文本文件,而这种文件基本上是一次消耗品,也就是上传到后端服务读取了数据之后需要将上传的该文件进行删除。vue文件template中的代码:<eluploadaction"":onchange"readFile"
皕杰报表(关于如何上传和下载文件到数据库)
在皕杰报表中文件是否可以上传到数据库中,当然是可以的。然后在附件上传和下载中,设置相对路径或绝对路径,文件名称,文件类型和上传的空值条件(上传的大小,默认限制是5120kb和满足什么条件时上传)。在下载中选择相对路径或绝对路径,填写下载链接名称和下载文件名称。填报操作时有三个函数:filedata、filename、filepath。filedata:获取文
李志宽 李志宽
2年前
【小白必学】文件上传的漏洞介绍及常见防御方法
01文件上传漏洞原理在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。02文件上传漏洞触发点相册、头像上传、视频、照片分享、附件上传(论坛发帖、邮箱
Souleigh ✨ Souleigh ✨
4年前
【C 陷阱与缺陷 学习笔记】(一)词法陷阱
一内容0\.不同于当程序员本意是作比较运算时,却可能无意中误写成了赋值运算。1.本意是检查x与y是否相等:cif(xy)break;实际上是将y的值赋值给了x,然后再检查该值是否为0。2.本意是跳过文件中的空白字符:cwhile(c''||c'\t'||
CuterCorley CuterCorley
4年前
用Python实现批量高效文件处理 解放你的双手
1.批量修改文件后缀名有时候会有大量修改文件名的需求,比如修改文件后缀、文件名加前缀等,如果手动修改,效率极低,这时候可以使用Python来批量修改:pythonimportosdeffile_rename():pathinput("请输入你需要修改的目录(格式如'F:\\test'):")old_suffixinp
Wesley13 Wesley13
3年前
JAVA 反序列化攻击
Java反序列化攻击漏洞由FoxGlove的最近的一篇博文爆出,该漏洞可以被黑客利用向服务器上传恶意脚本,或者远程执行命令。由于目前发现该漏洞存在于Apachecommonscollections,Apachexalan和Groovy包中,也就意味着使用了这些包的服务器(目前发现有WebSphere,WebLogic,
Stella981 Stella981
3年前
Linux文件上传下载sz 和 rz 命令
windows系统和linux系统之间文件上传和下载用到rz和sz命令。rz:上传文件sz:下载文件1.先检查是否安装rz,sz模块!在这里插入图片描述(https://oscimg.oschina.net/oscnet/395e1364538ccb9baf814c5bab6da6f8de8.png)
Stella981 Stella981
3年前
Excel公式 提取文件路径后缀
原文:Excel公式提取文件路径后缀(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fkybs0%2Fp%2F6062889.html)我们在代码中获取一个文件路径的后缀,是一个很简单的事.如C中,可以通过newFileInfo(fil
Wesley13 Wesley13
3年前
PHP代码审计笔记
0x01最简单的文件上传未进行文件类型和格式做合法性校验,任意文件上传漏洞代码示例:新建一个提供上传文件的 upload.html<html创建上传脚本  upload\_file.php<?php漏洞利用:可上传任意文件!(https://oscimg.oschina.net/oscnet/a
Stella981 Stella981
3年前
File的几个常用方法
1.FilefilenewFile(Stringpath);只是创建文件对象2.file.exists();文件是否存在3.file.isDirectory();判断文件对象是否是文件夹4.String\\listfile.list();返回文件列表,文件夹名字或者文件名(包括后缀名)5.File.sep
h4ckb0ss h4ckb0ss
11个月前
文件上传(一):PortSwigger靶场通关笔记
文件上传漏洞通常指应用对用户上传的文件没有完善的检验,允许攻击者通过Web应用程序上传恶意文件到服务器,然后通过这些恶意文件来进行执行任意代码,在客户端影响用户等攻击