5.基础漏洞——文件上传漏洞

news2024/12/26 8:08:38

目录

一.文件上传漏洞原理

二.文件上传漏洞条件:

三.上传限制手段分为两大类

(1)客户端校验

(2)服务端校验

四.具体实现

1.文件上传漏洞——绕过JS检测

2.文件上传漏洞——绕过MIME类型检测

3.文件上传漏洞——绕过黑名单检测

绕过方式:(1)

绕过方式:(2)

绕过方式:(3)

绕过方式:(4)

绕过方式:(5)

4.解析绕过

1)Apache解析漏洞 

2)IIS解析漏洞

3)Nginx解析漏洞

5.图片码绕过

五.文件上传漏洞的威胁

六.文件上传漏洞的防护

七.文件上传的绕过方法(总结)


一.文件上传漏洞原理

web应用在文件上传过程中没有进行过滤,或者是过滤不严格,攻击者通过上传webshell等恶意文件对服务进行攻击,导致服务器沦陷。

二.文件上传漏洞条件:

1.有上传文件的功能

2.上传文件的目录,能够解析脚本语言(否者,405)

3.能够访问到上传的文件

符合以上三点,就可能存在文件上传漏洞。

三.上传限制手段分为两大类

(1)客户端校验

客户端校验就是Javascript校验等:修改客户端代码/上传过程修改

(2)服务端校验

MIME类型(后缀):上传过程修改MIME类型

扩展名校验:特殊扩展名/截断上传/解析漏洞

文件内容:上传图片木马/代码混洗

四.具体实现

1.文件上传漏洞——绕过JS检测

2.文件上传漏洞——绕过MIME类型检测

请求行中的conTent-TYPE:

用bp截取数据包,修改concent-type。

3.文件上传漏洞——绕过黑名单检测

黑名单检测:一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件扩展名,如:php、asp、aspx;

绕过方式:(1)

使用大小写绕过(针对对大小写不敏感的系统如windows),如:PhP;

 流程

(1)上传正常的php文件,无法上传;

(2)将文件后缀.php修改为.Php;

(3)上传.Php文件,上传成功;

绕过方式:(2)

黑白名单绕过(php、php2.php3、php5、phtml、asp、aspx、ascx、ashx、cer、asa、jsp、jspx、cdx)

流程

(1)上传正常的php文件,无法上传;

(2)将文件后缀.php修改为黑名单中不存在的后缀

(3)文件上传成功;(上传成功了也不一定会执行,需要看服务器是否支持)

绕过方式:(3)

特殊文件名绕过(后缀加.或者空格)

修改数据包里的文件名改为test.php.或者test.php(有空格)

由于这种命名格式在windows系统里是不允许的。所以在绕过上传之后windows系统会自动去掉点和空格。 Unix/Linux系统没有这个特性

绕过方式:(4)

面试回问到,但其他时候一般没什么用,因为现在版本修复了

0x00截断绕过文件名后缀就一个%00字节,可以截断某些函数对文件名的判断。在许多语 言函数中,处理

字符串的函数中0x00被认为是终止符。

(1)上传正常的php文件,无法上传

(2)将文件后缀.php修改为.php.jpg上传,burp抓包16进制模式php后面添加00;

(3)文件,上传成功;

绕过方式:(5)

.htaccess文件攻击

修通过move uploadedfile函数把自己写的.htaccess文件覆盖掉服务器上的这样就可以解析定义名单了.

.htaccess文件用处:

通过.htaccess文件调用php解释器去解析一个文件名中只要包含“aa”这个字符串的任意文件,无论你文件名是什么样子,只要包含”aa”这个字符串,都可以被以php的方式来解析。

(1)上传正常的php文件,无法上传

(2)将文件修改为文件名带aa的,后缀随便,例:aa123.txt;

(3)文件,上传成功;

代码:

<FilesMatch"aa" >
 SetHandler application/x-httpd-php
 </FilesMatch>

4.解析绕过

1)Apache解析漏洞 

一个文件名为test. php.aaa. bbb.ccc的文件,Apache会从ccc的位置往php的位置开始尝试解析,如果ccc不属于Apache能解析的后缀名,那么 Apache就会尝试去解析bbb,这样一直往前尝试,直到遇到一个能解析的扩展名为止。

2)IIS解析漏洞

#1 IIS6.0

@1:新建一文件名字为:任意文件名.asp;   任意文件名jpg 此文件会当成脚本运行   (1.asa;1jpg,2.cdx;2.txt)

@2:新建一个文件夹,名字为任意文件名.asp;

  那么在这个文件夹里的内容全部会被当场脚本取运行。

@3:服务器配置错误(put 协议)

这里一般会和MOVE协议一起使用,先上传txt文件,在将txt文件修改为执行文件,php,aspaspx。移动并改名,但你要有他的原文件的路径

#2 IIS7.0,7.5

@1:正常路径:uploads/1jpg

@2:把php文件修改后缀为jpg进行上传

@3:黑客思路:uploads/1jpg/任意文件名.php 访问方式

@4:这个文件就会被当成脚本去执行。

3)Nginx解析漏洞

#1

@1:正常路径:uploads/1.jpg

@2:黑客思路:uploads/1.jpg/任意文件名.php 访问方式

#2 Nginx 0.5.* Nginx 0.6.* Nginx0.7

对低版本的Nginx可以在任意文件名后面添加%00.php进行解 析攻击。

正常路径:uploads/1jpg

黑客思路:uploads/1.jpg%00.php 当做正常脚本执行

#3 Nginx 0.8.41~1.4.3 ;1.5

在linux系统里,以上Nginx容器的版本下

正常路径:uploads/1jpg

黑客思路:uploads/1.jpg%20%00.php 当做正常脚本执行

5.图片码绕过

把代码文件和图片文件进行二进制编码合并形成新的图片,进行上传.注意2.php代码最前面需要有一个空格

cmd下执行:建议使用小图片

window和linux合层图片木马的命令

copy/b 1.jpg+2.php=3.jpg

五.文件上传漏洞的威胁

1.上传webshell,控制服务器,远程命令执行。

2.上传系统病毒,木马文件进行挖矿。

3.进行提权操作。

4.修改web页面,制作钓鱼网站,挂马。

5.进行内网渗透。

六.文件上传漏洞的防护

1.前端校验,后端校验。

2.对MIME类型进行检验。

3.创建黑白名单,进制执行文件上传。

4.隐藏上传的路径。

5.将上传的文件名更改。

七.文件上传的绕过方法(总结)

1.前端绕过

2.MIME类型绕过

3.后缀大小写绕过

4.00截断攻击

5.双写文件后缀绕过

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yum本地源配置

yum本地源配置 1.打开虚拟机&#xff0c;点击设置。 2.选择CD/DVD&#xff0c;选择系统镜像文件&#xff0c;设备状态选择“连接”。 3.使用命令lsblk&#xff0c;查看磁盘空间&#xff0c;发现镜像文件。 4.在/dev下找到sr0镜像文件: ls /dev 5.挂载镜像文件&#xf…

闯关leetcode——27. Remove Element

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/remove-element/description/ 内容 Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The order of the elements may be changed. Then retur…

有关C# .NET Core 过滤器的使用

想用一个过滤器实现特定接口的审核日志记录&#xff0c;结果报了错&#xff0c;看了看感觉有些基础要补&#xff0c;所以想记录下来 错误&#xff1a; 在属性过滤器中使用了依赖注入&#xff0c;结果在应用在控制层接口时报了传参的错 //过滤器 public class AuditRecordFil…

C#语言依然是主流的编程语言之一,不容置疑

C#语言是由微软在2000年发布的现代面向对象编程语言。尽管在编程语言市场中的占有率相对较低&#xff0c;但C#依然保持了强大的存在感&#xff0c;并未像一些其他语言那样逐渐被淘汰。C#语言不仅有其存在的独特理由&#xff0c;而且拥有许多令人无法忽视的优势。以下从多个方面…

.Net Gacutil工具(全局程序集缓存工具)使用教程

GAC介绍&#xff1a; GAC&#xff08;Global Assembly Cache&#xff09;全局程序集缓存&#xff0c;是用于存放.Net应用程序共享的程序集。 像平常我们在Visual Studio中引用系统程序集时&#xff0c;这些程序集便来自于GAC。 GAC默认位置为&#xff1a;%windir%\Microsoft…

visual prompt tuning和visual instruction tuning

visual prompt tuning&#xff1a;作为一种微调手段&#xff0c;其目的是节省参数量&#xff0c;训练时需要优化的参数量小。 输入&#xff1a;视觉信息image token可学习的prompt token 处理任务&#xff1a;比如常见的分类任务 visual prompt tuning visual instruction tu…

【网络】高级IO——poll版本TCP服务器

目录 前言 一&#xff0c;poll函数 1.1.参数一:fds 1.2.参数二&#xff0c;nfds 1.3.参数三&#xff0c;timeout 1.4.返回值 1.5.poll函数简单使用示例 二&#xff0c;poll版TCP服务器编写 2.1.编写 2.2.poll的优缺点 2.3.源代码 前言 由于select函数有下面几个特别…

基于Python的自然语言处理系列(10):使用双向LSTM进行文本分类

在前一篇文章中&#xff0c;我们介绍了如何使用RNN进行文本分类。在这篇文章中&#xff0c;我们将进一步优化模型&#xff0c;使用双向多层LSTM来替代RNN&#xff0c;从而提高模型在序列数据上的表现。LSTM通过引入一个额外的记忆单元&#xff08;cell state&#xff09;来解决…

Linux:vim编辑技巧

命令模式 光标跳转 输入18&#xff0c;再输入G&#xff0c;可以跳转到18行。 复制、粘贴、删除 P是往上一行粘贴 小写u可以撤销 查找/撤销/保存 大写U可能失效&#xff0c;用CTRLr 末行模式 保存/退出/文件操作 字符串替换 开关参数的控制

基于python+django+vue的在线学习资源推送系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

近乎实时的物联网数据管道架构

这篇论文的标题是《Near Real-Time IoT Data Pipeline Architectures》&#xff0c;作者是 Markus Multamki&#xff0c;完成于 2024 年&#xff0c;属于计算机科学与工程硕士学位论文。论文主要研究了物联网&#xff08;IoT&#xff09;数据分析的可扩展数据管道架构&#xff…

FloodFill算法【下】

417. 太平洋大西洋水流问题 题目链接&#xff1a;417. 太平洋大西洋水流问题 题目解析 题目给我们一个矩阵&#xff0c;这个矩阵相当于陆地&#xff0c;被两个洋包围&#xff0c;左和上代表太平洋&#xff0c;右和下代表大西洋。 矩阵里面的数字代表海拔&#xff0c;水可以…

STM32之FMC—扩展外部 SDRAM

文章目录 一、FMC外设介绍二、SDRAM 控制原理1、SDRAM关键参数a、容量、分区b、引脚SDRAM 使用 2、SDRAM芯片IS42S16400J3、SDRAM 控制引脚说明控制逻辑地址控制SDRAM 的存储阵列SDRAM 的命令预充电刷新 W9825G6KH&#xff1a;W9825G6KH引脚 三、STM32F429 FMC四、其他文章打开…

医学数据分析实训 项目四回归分析--预测帕金森病病情的严重程度

文章目录 项目四&#xff1a;回归分析实践目的实践平台实践内容 预测帕金森病病情的严重程度作业&#xff08;一&#xff09;数据读入及理解&#xff08;二&#xff09;数据准备&#xff08;三&#xff09;模型建立&#xff08;四&#xff09;模型预测&#xff08;五&#xff0…

神经网络通俗理解学习笔记(4) 深度生成模型VAE、GAN

深度生成模型 什么是生成式模型蒙特卡洛方法变分推断Variational Inference变分自编码器VAE生成对抗网络Generative Adversarial NetworkDiffusion 扩散模型VAE和GAN 代码实现 什么是生成式模型 判别式和生成式模型 判别式:CNN/RNN/transformer;生成式:AE/VAE/GAN 判别式模型学…

Linux:RPM软件包管理以及Yum软件包仓库

挂载光驱设备 RPM软件包管理 RPM软件包简介 区分软件名和软件包名 软件名&#xff1a;firefox 软件包名&#xff1a;firefox-52.7.0-1.el7.centos.x86_64.rpm 查询软件信息 查询软件&#xff08;参数为软件名&#xff09; ]# rpm -qa #当前系统中所有已安装的软件包 ]# r…

Unity实战案例全解析 :PVZ 植物脚本分析

植物都继承了Pants脚本&#xff0c;但是我因为没注意听讲&#xff0c;把Pants也挂在植物上了&#xff0c;所以子类的PlantEnableUpdate和PlantDisableUpdate抢不过父类&#xff0c;无法正确触发动画&#xff0c;我还找不到哪里出了问题&#xff0c;所以就使用了携程加while强行…

Navicat使用 笔记04

Navicat调用数据库 1.创建一个自己的链接&#xff08;文件-->新建连接-->MySQL&#xff09; 进入到这个界面中&#xff1a; 【注意&#xff1a;密码是下载登录软件时设定过的】 创建一个连接完成&#xff08;通过双击激活&#xff09;。 2.在创建好的连接中创建数据库…

神经网络通俗理解学习笔记(5) 自然语言处理

自然语言处理 词嵌入和word2vec词义搜索和句意表示预训练模型Hugging Face库介绍经典NLP数据集代码案例-电影评论情感分析 词嵌入和word2vec 词嵌入是一种 将高维的数据表示映射到低维空间的方法 word embedding 是将语言中的词编码成向量便于后续的分析和处理 词嵌入和词向量…

感知器神经网络

1、原理 感知器是一种前馈人工神经网络&#xff0c;是人工神经网络中的一种典型结构。感知器具有分层结构&#xff0c;信息从输入层进入网络&#xff0c;逐层向前传递至输出层。根据感知器神经元变换函数、隐层数以及权值调整规则的不同&#xff0c;可以形成具有各种功能特点的…