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

目录

一.文件上传漏洞原理

二.文件上传漏洞条件:

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

(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.mfbz.cn/a/879350.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

城市脉络下的空间句法:整合度与选择度的深度解析

上回写过一篇&#xff0c;基于空间句法的路网整合度、选择度分析&#xff0c;当时碍于篇幅和侧重点&#xff0c;主要讲了如何安装sDNA这个插件来实现路网的整合度、选择度分析&#xff0c;并且分析部分也只是画了几条简单的线段&#xff0c;这次我们深化一下原理和指标的解析&a…

二十种编程语言庆祝中秋节

二十种编程语言庆祝中秋节 文章目录 二十种编程语言庆祝中秋节中秋快乐&#xff01;家人们 &#x1f973;一 Python二 C三 C四 Java五 C#六 Perl七 Go八 Asp九 PHP十 JavaScript十一 JavaScript HTML十二 Visual Basic十三 早期 VB十四 Visual C十五 Delphi十六 Shell十七 Cobo…

Codeforces practice C++ 2024/9/11 - 2024/9/18

D. Mathematical Problem Codeforces Round 954 (Div. 3) 原题链接&#xff1a;https://codeforces.com/contest/1986/problem/D 题目标签分类&#xff1a;brute force&#xff0c;dp&#xff0c;greedy&#xff0c;implementation&#xff0c;math&#xff0c;two pointers…

svn回退到以前历史版本修改并上传

svn回退到以前版本&#xff0c;并在以前版本上修改代码后&#xff0c;上传到svn库当中&#xff0c;如下步骤&#xff1a; 3、 以回退到版本号4为例&#xff1a;选中版本号4&#xff0c;右键->Revert to this version,在出现的对话框中 点击yes&#xff01; 4、 5、

【C++ Primer Plus习题】16.8

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <set> #includ…

矩阵分析 学习笔记3 多项式矩阵 jordan标准型

多项式矩阵 就是说这个矩阵里面的各个元素都是多项式&#xff0c;多项式的主角是类目大&#xff08;自变量&#xff09;。 多项式矩阵的秩 0多项式就是完全0的那种&#xff0c;就一个0&#xff0c;类目大都没有了。 多项式矩阵的秩和带一个类目大进去变成普通矩阵的秩不是一回…

深度学习|损失函数:网络参数优化基准

文章目录 引言均方误差计算示例矩阵形式代码实现 交叉熵误差计算示例代码实现 绝对误差计算示例代码实现 Hinge Loss计算示例代码实现 Kullback-Leibler Divergence计算示例代码实现 结语 引言 在上文「深度学习&#xff5c;模型训练&#xff1a;手写 SimpleNet」中&#xff0…

十款主流的供应链管理系统盘点,优缺点一目了然!

本文将盘点十款供应链管理系统&#xff0c;为企业选型提供参考&#xff01; 想象一下&#xff0c;一家企业在生产和销售产品的过程中&#xff0c;原材料供应不及时、库存积压严重、物流配送混乱。这时&#xff0c;供应链管理系统就如同一位高效的指挥家&#xff0c;将各个环节紧…

离散制造 vs 流程制造:锚定精准制造未来,从装配线到化学反应,实时数据集成在制造业案例中的多维应用

使用 TapData&#xff0c;化繁为简&#xff0c;摆脱手动搭建、维护数据管道的诸多烦扰&#xff0c;轻量替代 OGG, Kettle 等同步工具&#xff0c;以及基于 Kafka 的 ETL 解决方案&#xff0c;「CDC 流处理 数据集成」组合拳&#xff0c;加速仓内数据流转&#xff0c;帮助企业…

Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】

目录 Linux权限理解1.Xshell命令以及运行原理2.linux权限的学习2.1linux权限的切换2.2linux权限的概念2.3linux权限管理2.3.1linux中文件访问者的分类2.3.2文件类型和访问权限(文件属性)2.3.2.1文件类型2.3.2.2文件权限拓展—文件的起始权限 2.3.3文件权限管理2.3.4文件权限的应…

腾讯云Ubuntu系统安装宝塔,配置Java环境,运行spring boot项目

致谢 本次学习宝塔部署spring boot项目&#xff0c;参考如下资料 https://www.cnblogs.com/daen/p/15997872.html 系统安装宝塔 直接用的腾讯云云服务器面板上的登录&#xff0c;你可以换成 xshell 进入宝塔官网&#xff1a; https://www.bt.cn/new/download.html 我们采…

跟《经济学人》学英文:2024年09月14日这期 Volunteering has big benefits for the elderly

Volunteering has big benefits for the elderly But those Britons who would most benefit are least likely to do it 原文&#xff1a; THE CROSSNESS Pumping Station is not what you’d expect of a sewage works. With its spiral staircases, colourful tiling and…

Sapiens——人类视觉大模型的基础

引言 大规模预训练以及随后针对特定任务的语言建模微调取得了显著成功&#xff0c;已将这种方法确立为标准做法。同样&#xff0c; 计算机视觉方法正逐步采用大规模数据进行预训练。LAION5B、Instagram-3.5B、JFT-300M、LVD142M、Visual Genome 和 YFCC100M 等大型数据集的出现…

计算机毕业设计 健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示&#xff1a; 为什么会有进程组&#xff1f; 批量操作&#xff1a;进程组允许将多个进程组织在一起&#xff0c;形成一个逻辑上的整体。当需要对多个进程…

Matlab如何配置小波工具(Wavelet Toolbox)

1、发现问题 因为实验要使用小波工具函数&#xff0c;运行时报错如下&#xff1a; 查看对应文件夹发现没有小波工具&#xff08;也可在控制台输入ver&#xff09;&#xff0c;检查是否有该工具&#xff0c;输入后回车返回如下&#xff1a; 2、下载工具包 没有这个工具就要去下…

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例 前言问题描述控制方程及数值方法浅水方程及其数值计算方法边界条件的实现 代码框架与关键代码模拟结果 更新于2024年9月17日 前言 这篇博客算是学习浅水方程&#xff0c;并利用MATLAB复刻Liang (2004)1中溃坝流算例的一个记录…

Gitee丝滑版本:成功在新电脑添加新文件

git 关键步骤 1.首先在新电脑建一个文件夹&#xff0c;然后打开这个文件夹里面右键打开OPEN BASH GIT HERE。 2.然后输入git init&#xff0c;会在文件夹生成一个git.文件&#xff0c;接着把复制的get clone命令克隆过去就可以下载了&#xff0c;如果遇到403问题&#xff0c…

循环神经网络RNN+长短期记忆网络LSTM 学习记录

循环神经网络&#xff08;RNN) RNN的的基础单元是一个循环单元&#xff0c;前部序列的信息经处理后&#xff0c;作为输入信息传递到后部序列 x为输入向量&#xff0c;y为输出向量&#xff0c;a为上一隐藏层的a与x通过激活函数得到的值&#xff0c;简言之&#xff0c;每一层神…

从头开始学MyBatis—02基于xml和注解分别实现的增删改查

首先介绍此次使用的数据库结构&#xff0c;然后引出注意事项。 通过基于xml和基于注解的方式分别实现了增删改查&#xff0c;还有获取参数值、返回值的不同类型对比&#xff0c;帮助大家一次性掌握两种代码编写能力。 目录 数据库 数据库表 实体类 对应的实体类如下&#x…