首页 > 其他分享 >file uoload

file uoload

时间:2024-01-31 10:24:58浏览次数:25  
标签:文件 Web 验证 uoload file 文件类型 服务器 上传

什么是文件上传漏洞?

文件上传漏洞是指 Web 服务器允许用户将文件上传到其文件系统,而无需充分验证其名称、类型、内容或大小等内容。如果不能正确实施限制,可能意味着即使是基本的图片上传功能也可用于上传任意和有潜在危险的文件。这甚至可能包括支持远程代码执行的服务器端脚本文件。

在某些情况下,上传文件的行为本身就足以造成损害。其他攻击可能涉及对文件的后续 HTTP 请求,通常是为了触发服务器执行该请求。

文件上传漏洞是如何产生的?

鉴于相当明显的危险,野外网站很少对允许用户上传的文件没有任何限制。更常见的是,开发人员实现了他们认为是健壮的验证,这些验证要么存在固有缺陷,要么很容易被绕过。

例如,他们可能会尝试将危险文件类型列入黑名单,但在检查文件扩展名时无法考虑解析差异。与任何黑名单一样,也很容易意外地遗漏可能仍然危险的更晦涩的文件类型。

在其他情况下,该网站可能会尝试通过验证攻击者使用 Burp Proxy 或 Repeater 等工具轻松操纵的属性来检查文件类型。

最终,即使是强大的验证措施也可能在构成网站的主机和目录网络中不一致地应用,从而导致可以利用的差异。

利用不受限制的文件上传来部署 Web Shell

从安全角度来看,最糟糕的情况是网站允许您上传服务器端脚本,例如 PHP、Java 或 Python 文件,并且还配置为将它们作为代码执行。这使得在服务器上创建自己的 Web shell 变得微不足道。

Web 外壳

Web shell 是一种恶意脚本,攻击者只需向正确的端点发送 HTTP 请求,即可在远程 Web 服务器上执行任意命令。

如果您能够成功上传 Web Shell,则可以有效地完全控制服务器。这意味着您可以读取和写入任意文件,泄露敏感数据,甚至使用服务器来对内部基础设施和网络外部的其他服务器进行攻击。例如,以下 PHP 单行代码可用于从服务器的文件系统中读取任意文件:

<?php echo file_get_contents('/path/to/target/file'); ?>

上传后,发送对此恶意文件的请求将在响应中返回目标文件的内容。

更通用的 Web shell 可能如下所示:

<?php echo system($_GET['command']); ?>

此脚本允许您通过查询参数传递任意系统命令,如下所示:

GET /example/exploit.php?command=id HTTP/1.1

  1. 在您的系统上,创建一个名为 的文件,其中包含一个用于获取 Carlos 机密文件内容的脚本。例如:exploit.php

<?php echo file_get_contents('/home/carlos/secret'); ?>

利用有缺陷的文件上传验证

在野外,您不太可能找到一个没有针对文件上传攻击保护的网站,就像我们在上一个实验室中看到的那样。但是,仅仅因为防御措施已经到位,并不意味着它们很强大。有时,您仍可以利用这些机制中的缺陷来获取用于远程执行代码的 Web Shell。

有缺陷的文件类型验证

提交HTML表单时,浏览器通常会在请求中发送内容类型为.这适用于发送简单的文本,例如您的姓名或地址。但是,它不适合发送大量二进制数据,例如整个图像文件或 PDF 文档。在这种情况下,首选内容类型。POSTapplication/x-www-form-url-encodedmultipart/form-data

1)修改一下content-type的内容为image/jpg就好了,就是太慢了,搞得我还以为失败了

标签:文件,Web,验证,uoload,file,文件类型,服务器,上传
From: https://www.cnblogs.com/cll-wlaq/p/17998646

相关文章

  • dockerfile安装jenkins 并配置构建工具(node、npm、maven、git)
    dockerfile安装jenkins并配置构建工具(node、npm、maven、git):https://blog.csdn.net/weixin_39660224/article/details/88775707?ops_request_misc=&request_id=&biz_id=102&utm_term=dockerfile%20%E5%88%9B%E5%BB%BAjenkins&utm_medium=distribute.pc_search_result.......
  • vs+qt中使用opengl及关键报错“无法打开包括文件: no such file or directory”与“err
    参考链接https://blog.csdn.net/qq_22533607/article/details/79792083http://t.csdnimg.cn/T8II5http://t.csdnimg.cn/JP8k7基础准备:vs中配置qt插件(略)关键步骤:创建QtWidgetApplication项目将BaseClass修改成QWidget,方框中的内容可以不勾,个人习惯ui文件中添加open......
  • CentOS启动nginx出现nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: N
    问题:1.进入sbin:cd/usr/local/nginx/sbin/2.启动nginx:./nginx3.出现问题:nginx:[emerg]open()"/var/run/nginx/nginx.pid"failed(2:Nosuchfileordirectory) 原因:没有nginx文件夹,且其下没有nginx.pid文件。 解决办法:创建文件1.进入run下:cd/var/run2.创建nginx......
  • makefile使用摘要
    问题1:多个源文件参与的编译过程中,全部重新编译不合理;gcc-c*.c问题2:在手动处理过程中,由于一个基础文件的更改,导致后续的编译过程非常容易出错。解决方法:编写makefile文件$(sources:.c=.d)是一个变量替换语法,把sources变量中每一项的.c替换成.d特殊变量:$^表示规则中的......
  • linux内核-2.Linux 内核makefile编译过程
    1zImage编译_all是默认目标,如果使用命令make或者makeall编译Linux的话此目标就会被匹配。KBUILD_EXTMOD为空的,因此194行的代码成立,因此_all依赖all。all又依赖vmlinux,开始编译vmlinux。makeARCH=armCROSS_COMPILE=arm-linux-gnueabihf-distcleanmakeARCH=armCR......
  • Java代码审计-FileOperations
    常见文件读写常见文件读写方式通过FileInputStream读取文件并使用FileOutputStream写入另一个文件的测试方法通过BufferedInputStream读取文件并使用BufferedOutputStream写入另一个文件的测试方法通过BufferedReader读取文件并使用BufferedWriter写入另一个文件的测试方法......
  • Java代码审计-FileUpload
    Web应用通常都会包含文件上传功能,用户可以将其本地的文件上传到Web服务器上。如果服务器端没有能够正确的检测用户上传的文件类型是否合法(例如上传了jsp后缀的WebShell)就将文件写入到服务器中就可能会导致服务器被非法入侵。漏洞成因后缀名无限制//导入必要的类库package......
  • FreeFileSync文件同步软件使用
    设置FFS程序下载安装程序出现两个程序。FreeFileSync是主程序,RealTimeSync用来设置自动同步打开FreeFileSync主程序,点击蓝色设置按钮比较设置界面同步设置界面一般设置双向,即只要有一边变化即同步。为了保险起见,设置保留历史版本最后确定设置需要同步的文件夹......
  • start cmd or shell from current directory in windows file explorer
    startwindowscmdincurrentdirectoryMypreferanceofstartingcmdinacertaincertaindirectoryissimplynavigatingtothedirectroy;pressingctrl+Ltofocustheaddressbar;typingcmd+enter.Bythisway,anewconsolewindowwillstartandit......
  • .net core 静态文件的访问权限控制(UseStaticFiles)
    官方文档:https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-8.0&viewFallbackFrom=aspnetcore-2.2wwwroot中的文件,可以在Startup类的Configure方法中添加以下语句:app.UseStaticFiles();默认情况下,诸如HTML、css、图像、js之类的静态资......