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

文件上传漏洞

时间:2023-08-01 17:11:23浏览次数:32  
标签:WebShell 脚本 文件 漏洞 攻击者 上传

文件上传漏洞

文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者 WebShell 等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。

文件上传漏洞本身就是一个危害巨大的漏洞,WebShell 更是将这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都会留下 WebShell 以方便后续进入系统。攻击者在受影响系统放置或者插入 WebShell 后,可通过该 WebShell更 轻松,更隐蔽的在服务中为所欲为。这里需要特别说明的是上传漏洞的利用经常会使用 WebShell,而 WebShell 的植入远不止文件上传这一种方式。

Webshell简述

WebShell 就是以 asp、php、jsp 或者 cgi 等网页文件形式存在的一种命令执行环境,也可以将其称之为一种网页后门。攻击者在入侵了一个网站后,通常会将这些 asp 或 php 后门文件与网站服务器 web 目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。

WebShell 后门隐蔽较性高,可以轻松穿越防火墙,访问 WebShell 时不会留下系统日志,只会在网站的 web 日志中留下一些数据提交记录,没有经验的管理员不容易发现入侵痕迹。攻击者可以将 WebShell 隐藏在正常文件中并修改文件时间增强隐蔽性,也可以采用一些函数对 WebShell 进行编码或者拼接以规避检测。除此之外,通过一句话木马的小马来提交功能更强大的大马可以更容易通过应用本身的检测,<?php eval($_POST[a]); ?>就是一个最常见最原始的小马。

上传漏洞原理

大部分的网站和应用系统都有上传功能,一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意 PHP 文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。

当系统存在文件上传漏洞时攻击者可以将病毒,木马,WebShell,其他恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供便利。根据具体漏洞的差异,此处上传的脚本可以是正常后缀的 PHP,ASP以及JSP 脚本,也可以是篡改后缀后的这几类脚本。

上传文件是病毒或者木马时,主要用于诱骗用户或者管理员下载执行或者直接自动运行;

上传文件是WebShell时,攻击者可通过这些网页后门执行命令并控制服务器;

上传文件是其他恶意脚本时,攻击者可直接执行脚本进行攻击;

上传文件是恶意图片时,图片中可能包含了脚本,加载或者点击这些图片时脚本会悄无声息的执行;

上传文件是伪装成正常后缀的恶意脚本时,攻击者可借助本地文件包含漏洞 (Local File Include) 执行该文件。如将 bad.php 文件改名为 bad.doc 上传到服务器,再通过 PHP 的 include,include_once,require,require_once 等函数包含执行。

此处造成恶意文件上传的原因主要有三种:

1、文件上传时检查不严

没有进行文件格式检查。

一些应用仅仅在客户端进行了检查,而在专业的攻击者眼里几乎所有的客户端检查都等于没有检查,攻击者可以通过NC,Fiddler等断点上传工具轻松绕过客户端的检查;

一些应用虽然在服务器端进行了黑名单检查,但是却可能忽略了大小写,如将.php改为.Php即可绕过检查;

一些应用虽然在服务器端进行了白名单检查却忽略了%00截断符,如应用本来只允许上传jpg图片,那么可以构造文件名为xxx.php%00.jpg,其中%00为十六进制的0x00字符,.jpg骗过了应用的上传文件类型检测,但对于服务器来说,因为%00字符截断的关系,最终上传的文件变成了xxx.php。

2、文件上传后修改文件名时处理不当

一些应用在服务器端进行了完整的黑名单和白名单过滤,在修改已上传文件文件名时却百密一疏,允许用户修改文件后缀。如应用只能上传.doc文件时攻击者可以先将.php文件后缀修改为.doc,成功上传后在修改文件名时将后缀改回.php。

3、使用第三方插件时引入

好多应用都引用了带有文件上传功能的第三方插件,这些插件的文件上传功能实现上可能有漏洞,攻击者可通过这些漏洞进行文件上传攻击。如著名的博客平台 WordPress 就有丰富的插件,而这些插件中每年都会被挖掘出大量的文件上传漏洞。

上传漏洞绕过

程序员在防止上传漏洞时可以分为两种:

客户端检测: 客户端使用JavaScript检测,在文件未上传时,就对文件进行验证。

服务器端检测: 服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,甚至是否嵌入恶意代码等。

"中国菜刀":仅需要一段简短的代码便可以管理网站。目前支持的服务器端脚本包括: php、ASP、ASP.NET、JSP等,并且支持HTPTPS安全连接的网站。

PHP: <?php @eval($_POST['mima']);?>

ASP: <%eval request("mima")%>

ASP.NET <%@ Page Language="Jscript"%><%eval(Request.Item["mima"],"unsafe");%>

"图片一句话"是将一句话插入在图片里面。例如: Edjpgcom 这个软件只需要将图片拖入程序中,在填写一句话,就可以制作图片一句话木马。

首先上传带有一句话木马的png到pikachu

打开文件夹可以看的,上传成功

打开菜刀,发现也是正常在的

 

标签:WebShell,脚本,文件,漏洞,攻击者,上传
From: https://www.cnblogs.com/fitfit/p/17597569.html

相关文章

  • 无法访问org.springframework.context.annotation.Bean 错误的类文件:类文件具有错误
    Spring6和SpringBoot3不再支持Java8,最低版本为JDK17,请升级JDK>=17,同时IDEA>=2021.2长期使用的Java8,这次报错一直切换Spring依赖版本,没想到是Java太旧了,而且IDEA小于2021.2版本也不支持Java17来源SpringSecurity教程的源码,本地打开,各种依赖报错Error:(6,46)java......
  • Windows系统提示“telnet不是内部或外部命令,也不是可运行的程序或批处理文件”怎么办?
    Windows系统电脑/服务器在运行CMD命令提示符时提示“不是内部或外部命令,也不是可运行的程序或批处理文件”,遇到这种情况怎么办呢?今天多多和你们分享解决办法。解决方法启用Windows功能(演示的是Windows10系统)1、开始——控制面板——程序和功能2、启用或关闭Windows功能——勾选“T......
  • GOBUSTER - 目录/文件和DNS爆破工具。
    github:https://github.com/OJ/gobuster常用命令行选项-fw -使用通配符结果强制处理域。-np -隐藏进度输出。-m<mode>-使用哪种模式,dir或者dns(默认:) dir。-q -禁用横幅/下划线输出。-t<threads>-要运行的线程数(默认值:) 10。-u<url/domain> -完整URL(包括方案......
  • Java实现读取Excel文件并逐行写入到新的Excel文件中
    在日常开发中,经常需要处理Excel文件,其中一种常见的需求是将原始Excel文件的内容逐行写入到新的Excel文件中或者写入数据中。本篇博客将介绍使用Java编程语言以及ApachePOI库来实现这一功能。ApachePOI是一个开源的Java库,用于处理MicrosoftOffice格式的文件,包括Excel。1.环境......
  • 文件操作
    1.文件基本操作1.1文件的概述文件是数据的抽象和集合,是数据存储的一种形式。一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。文件是操作系统提供给用户操作硬盘的一种虚拟的概念。用来承接指令和数据。文件拥有文本文件和二进制文件两种......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台出现报错“缺失dll文件”的问题解决方案
    LntonGBS是基于国标GB28181协议的视频云服务平台,它可以支持国标协议的设备接入,在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能,既能作为业务平台使用,也能作为能力层平台调用。技术人员在用户服务器部署LntonGBS平台,提示缺失某个dll文......
  • UEditor上传图片word
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪贴......
  • python怎么把json文件夹转成Excel表?
    1、python怎么把json文件夹转成Excel表?2、Python代码json数据再别的目录下怎么调用?3、【Python】浅谈python中的json4、python的json怎么用5、如何使用Python处理JSON数据python怎么把json文件夹转成Excel表?可以用pandas来读取json文件,再to_excel保存为Excel文件。可......
  • 登录认证装饰器,flask配置文件,路由系统
    0登录认证装饰器#0装饰器的本质原理 -#类装饰器:1装饰类的装饰器2类作为装饰器#1装饰器使用位置,顺序#3flask路由下加装饰器,一定要加endpoint -如果不指定endpoint,反向解析的名字都是函数名,不加装饰器没有问题,就是正常函数index,detail-如果加了装饰器---》in......
  • 记一次XML文件 批量添加属性
    publicstaticvoidmain(String[]age){try{List<Path>collect=Files.walk(Paths.get("D:\\modelform")).filter(Files::isRegularFile).collect(Collectors.toList());SAXReaderreader=newSAXReader();......