首页 > 其他分享 >文件上传漏洞

文件上传漏洞

时间:2024-04-17 12:44:48浏览次数:20  
标签:文件 验证 漏洞 https php 上传

文件上传漏洞

原理

  文件上传漏洞较好理解,简单来说就是渗透者往目标主机植入了一个后门程序,使得渗透者随时可以通过这个后门程序来访问到主机的系统,从而获取不法信息,通常也叫 Web Shell 攻击。

  关于文件上传漏洞的教程,这里强烈推荐看看b站的视频:https://www.bilibili.com/video/BV1qQ4y1d7Ux/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=3aadd380e5aa54a3ea92dc7db907b9db

  一般情况下后门程序主要是一句话木马,语言多数是 php,应该也有java把,但是我没见过,要是有知情的朋友也可以私信我和我说说,主要以一句话木马为主,以php语言为例, 一句话木马的案例如下所示:

<?php @eval($_POST['key']);?>

  这段代码的作用是接受通过 HTTP POST 请求传递的名为 'key' 的参数里面的内容,并将其作为 PHP 代码执行。关于 eval, $_POST,可以参见如下链接:

  eval 是一个非常危险的函数,不到万不得已千万不要随便使用,在植入了这个后门程序后,攻击者只需要在url 中访问对应的漏洞文件,并在发送的 POST 请求中设置 'key' 的内容为一个PHP 的恶意代码,例如在POST请求中设置参数:key=system(ipconfig),就可以获取到目标主机的IP 地址和相关的网段信息。

中间层漏洞

  通常,网站的开发者是肯定不会允许用户随意上传任意类型的文件,通常在文件上传的接口处,通常会对开发者的套件做类型检查,如果绕过这个检查?将我们的后门上传上去就是文件上传漏洞的核心突破点。这里大家可以自己配置一个文件上传的漏洞靶场,github 的网址:https://github.com/c0ny1/upload-labs/releases

  因我来看,除了开发者自己的校验检查外,在文件上传时最适合利用的就是中间件的漏洞也称解析漏洞,这是网站开发者们自己难以预防的套路,因此在上传时,率先查询他所使用的网站中间件是非常有必要的,以下介绍两个中间件漏洞。

  IIS 6.0 :当建立 *.asa, *.asp 格式的文件夹时,其目录下的任意文件都将被 IIS 当作 asa 文件来解析; 当文件为 *.asp;1.jpg 时,IIS 6.0 同样会以 ASP 脚本来执行。

Apache : 在 Apache 1.x 和 Apache 2.x 中存在解析漏洞,实际上是基于其文件的解析原则:当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止。在 ./conf/minme.types 可以查看详细的认识的扩展名列表。

  实际上中间层的漏洞有很多,甚至不止上述提到的两个中间件,具体,大家可以在 CVE 数据库: https://cve.mitre.org/ 中自己收集相关信息,亦或者,访问以下博客可以对各个套件的中间件做大概的了解:https://www.cnblogs.com/bonelee/p/14727268.html。

绕过上传漏洞

  在给定的 github 链接中主要就是在练习这件事,绕过上传漏洞首先要先明白,开发者设置对上传文件进行校验的方式有两种,一种是客户端验证,一种是服务端验证。

  • 客户端验证,通常是基于 JavaScript 进行验证,这是一种可以说完全没有什么用的验证方式,因为这段代码是基于攻击者的电脑去执行 JavaScript 中的校验函数,事实上我们直接删掉就好了。

  • 服务器端的验证,方式有很多种,具体博主还是推荐大家自行在靶场练习,本篇文章仅作为一个基础的入门笔记,以介绍和知识梳理为主,只介绍一些较为简单的方法。
    常见的服务器手段有白名单和黑名单验证,先说黑名单验证,就是服务器端在代码中设置几个不被允许上传的文件类型,如何直接设置 php 文件被禁止上传,但是通常黑名单可能会存在遗漏,例如上传的文件变成 php3 在服务器只禁止 php 文件时就能绕过这个上传限制。白名单验证相较于黑名单验证安全性则就更高,即除了服务器名单内的文件,其余文件均被禁止上传。使用这种方式进行校验时,通常我们可以结合中间层漏洞,例如上传 1.asp.jpg 文件,如果中间层套件是 IIS 6.0 则就会把 .jpg 文件作为 asp 文件处理; 还有一种方式,例如服务器的 MIME 验证,这种验证方式我们可以使用中间层代理工具,如Burp Suit 作为中间代理进行拦截修改,作为骗过服务器的手段。

  总之,绕过文件上传的方式有多种,作为黑客或者是渗透方也需要不断尝试,不断试错,最终才能达成目的。除此之外,持之以恒的练习和挑战自己也是必不可少的一环。作为开发人员,也需要在了解这些漏洞后不断完善自己的开发代码,才能尽可能避免自己的网站遭受攻击的命运。

标签:文件,验证,漏洞,https,php,上传
From: https://www.cnblogs.com/tjdtec/p/18140319

相关文章

  • Matlab绘图(2)通过代码进行局部放大绘图、多文件绘图
    Matlab进阶绘图在这次的绘图练习中,我们需要考虑一次性将所有数据文件逐一读入,然后对每幅图图片进行放大处理。参数设置这里包括每幅图的标题,图例,读入文件的名称,等等title_d={'SMOP1','SMOP3','SMOP7','SMOP8'};%指定每幅图的标题figname={'SECSO','SPS',......
  • C:\Windows\System32\setup 目录中,这个目录包含了一些与系统安装和配置相关的文件
    C:\Windows\System32\setup目录中,这个目录包含了一些与系统安装和配置相关的文件。作用:cmmigr.dll:这是一个动态链接库文件,可能与移动设备中心相关。它可能包含了用于迁移和处理移动设备中心配置的函数和资源。comsetup.dll:这是ComponentServicesSetup工具的......
  • bootmgfw.efi 是 Windows 操作系统中的一个关键文件,它是用于启动 UEFI(统一扩展固件接
    bootmgfw.efi是Windows操作系统中的一个关键文件,它是用于启动UEFI(统一扩展固件接口)计算机的WindowsBootManager。这个文件通常位于Windows安装的EFI系统分区(ESP)中的\EFI\Microsoft\Boot\目录下。在UEFI计算机上,bootmgfw.efi负责加载Windows操作系统的启动程......
  • 【git】ignore文件详解
    1.功能可以指定git,对于某些文件或者文件夹不进行追踪记录,例如一些依赖或者编译中间文件等。2.使用注意2.1对于已经有提交记录的文件对于已经提交的文件,即使加入了ignore文件也会被git追踪,想要不被追踪,需要先删除文件然后,提交再添加至ignore文件,即可生效(例如c项目一些编......
  • 用log4net写入不同路径的日志文件
      用log4net写入不同路径的日志文件///<summary>///根据_jobName路径写入不同日志///</summary>publicclassNLogger{privatestaticDictionary<string,ILog>Loggers=newDictionary<string,ILog>();privatestr......
  • 基于SpringWeb MultipartFile文件上传、下载功能
    在Web开发中,文件上传是一个常见的功能需求。Spring框架提供了MultipartFile接口,用于处理文件上传请求。MultipartFile可以代表一个多部分文件上传请求中的一个文件,提供了一系列方法用于获取文件的各种属性和内容,使得在后端处理文件上传变得十分方便。下面我们将介绍MultipartFile......
  • 使用kali安装OpenVAS(GVM)并进行汉化和漏洞扫描
    转自:https://blog.csdn.net/lyace2010/article/details/131887536 OpenVAS安装和使用一、参考二、环境三、安装Kali四、配置IP地址五、配置apt镜像源六、安装OpenVAS离线安装七、配置GVM离线上传特征库(攻击脚本、漏洞信息、gvm配置数据等)八、汉化九、......
  • VBS遍历文件或文件夹路径输入文件的所有绝对路径(附源码)
    <p>源码如下:</p>FunctionlistFilesPath(filepath)t1=Timer()Debug.WriteLine"****现在开始执行计数,用时:"+CStr(t1)Setfso=CreateObject("scripting.filesystemobject")Setmyfolder=fso.GetFolder(filepath)......
  • VBS定时执行idea程序的Testng文件的方法
    <p>背景:</p>Windows环境cmd命令行执行TestNG文件,会报一些jar包路径问题,所以改用vbs打开idea程序的通过点击快捷键执行testng.xml文件。vbs代码如下:'第一部分:定义变量DimRunTimeDimWshShellSetWshShell=WScript.CreateObject("WScript.Shell......
  • 自动以管理员身份运行批处理bat文件(vbs与bat两种方法)
    <p>但是,批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名为"XXXXXX(请右键点击,用管理员身份运行!).bat",但总有些用户会忽略这条提示,直接运行,此时由于权限不足,导致脚本运行失败。</p>我们可以使用一种变通的方法,让bat启动时,首先调用vbs脚本,......