挖漏洞之文件上传

(一)漏洞原理

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。
“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。

(二)基础测试方法

一般来讲,开发者一般都会对文件上传部分,进行检测和过滤,用于检测文件类型的方法有很多种,按照下面方法,一步一步测试

1、总的测试思路

  • 第一步查看前端js,如果是在前端js实现文件上传,可以删掉绑定方法,直接上传文件
  • 第二步查看是否是黑白名单检测:黑名单是禁止上传文件,白名单是只允许上传文件

        如果是白名单:寻找可控参数

        如果是黑名单,可以尝试找非黑名单以外的有害文件,可以是大小写不同的可执行文件,比如PhP,也可以是系统配置文件,比如.htaccess文件

  

2、基于白名单的测试

1、针对后缀名测试,可能在逻辑上发生错误,从而引发文件上传漏洞,比如

        加双后缀:变成file.php.jpg 或 file.jpg.php,绕过检测

        后缀名加空格:变成file.php ,系统无法正确识别实际扩展名“.php”,从而绕过白名单检测

        后缀名加点:变成file.php. 这个方法真针对window系统,win系统中对文件名后缀有点的,会省略掉,.php.就变成.php

        后缀名加入%00,进行截断比如file.php,变成file.php%00,(这个方法跟版本有关,老版本可能有)

  

2、上传图片码,比如只允许图片上传的,把图片和木马集合在一起

3、修改检测值

        文件头,比如JPEG (jpg)的文件头: FFD8FF,在图片制作的时候,修改文件

        contnet-type值,修改MIME类型为符合上传格式类型,比如png是image/png

4、数组新式上传,如果系统采用数组方式上传,就自己加上一个值,进行上传

3、基于黑名单的测试

如果是黑名单检测文件上传,可以采用以下测试方法:

1、也是对文件后缀名进行测试,在逻辑上文件上传漏洞:

        更改后缀大小写:比如php变成Php,有可能没有禁止Php

        修改后缀名:比如php,换成php3,这是有可能php3没有被禁止

        后缀名后加入::$DATA,比如file.php变成file.php::$DATA,这是NTFS交换数据流绕过,# 其中一个冒号表示创建文件,两个冒号表示写入文件内容

        双写文件后缀名,比如.php 变成.pphphp,如果存在检测php文件后替换成空,可以采用这个方法

2、 修改contnet-type值,修改MIME类型为符合上传格式类型,比如png是image/png

3,上传系统文件,有时候开发者忽略网站配置文件,

        php网站.htaccess,让其上传图片也可以当作文件执行

        ..user.ini文件,让包含一个文件

(三)进阶测试方法

有写开发者只关注禁止上传脚本文件这一点,只运行上传符合业务需求的文件,从而针对性的开发,这虽然提升了黑客上传脚本文件,直接getshell,但是忽略其他漏洞,其实由于文件上传这一个功能点,可以导致其他漏洞,如下

1)webshell,上传脚本文件可以webshell

2)xss:

        文件名插入payload造成xss、

        上传html文件造成xss文件(html文件里注入payload)

        上传svg文件(一种图像类型),在属性中插入payload造成xss漏洞

        上传gif文件(一种图片),在图片头注入payload造成xss漏洞

        上传pdf文件,在文件中属性-添加编辑动作内容插入payload,造成xss

        上传word文档,在xml文件部分中,选择任意文件的文件名中插入大量A,在 hexeditor中找到大量存在41(A的十六进制),把payload转为十六进制插入,上传word文档造成xss

3)xxe(docx、xlsx、svg等本质是xml文件)

        上传直接上传xml文件,造成xxe

        上传xlsx文件,在xlsx中找到下xml文件处插入payload,造成xxe

        上传docx文件,在xml文件处插入paylaod,造成xxe

        上传svg文件,造成xxe

4)命令注入

        上传csv文件,在csv插入payload,在导出csv文件中,打开执行命令导致命令执行

        上传图片,对图片进行二次渲染,插入命令,导致rce

5)目录遍历

       上传压缩包,服务器对其加压,可能存在Zip Slip目录走访漏洞

6)ssrf

       上传  .URL 文件,打开可能会Windows 上的 SSRF SMB连接,导致ssrf

       导出pdf文件导致ssrf,在发票打印、行程打印、车票打印、保单下载会有导出pdf文件功能,对响应参数进行注入url导致ssrf漏洞

7)DOS攻击

       上传图片,修改文件像素大小,改为无限大,导致DOS

       zip递归炸弹和非递归炸弹

       上传png文件,解压造成dos

8)目录遍历

       将文件名注入../../../../etc/passwd等paylaod,造成目录遍历

9)注入漏洞,

       对文件名注入各种payload,比如sleep(10).png,造成sql注入,注入<h1>test<h1>.png,造成html注入

具体请看:https://mp.weixin.qq.com/s/nMLoTN28WzocRLy8nkq3qw

(四)利用方法

1、上传脚本文件,直接getshell,获取目标服务器的控制权

2、造成其他攻击,参考上面的进阶测试方法

(五)防御方法

  • 文件类型验证:限制允许上传的文件类型,只允许上传通过验证的文件类型,而排除可执行文件、脚本文件或其他危险类型的文件。
  • 文件大小限制:限制上传文件的大小,以防止攻击者上传大文件并消耗服务器资源。
  • 文件名验证与随机重命名:对上传的文件名进行验证和过滤,防止恶意文件名的使用。同时文件重命名,在保存文件时,使用随机生成的文件名替换用户上传的文件名,避免可预测的文件路径或文件名暴露
  • 文件内容检查:在接收到文件后,进行文件内容的检查和分析,如通过安全扫描工具检测文件中是否包含恶意代码。
  • 存储安全:将上传的文件存储在安全的位置,并确保文件无法直接执行,只有只读的权限
     

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

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

相关文章

从线性回归到神经网络

目录 一、线性回归关键思想 1、线性模型 2、基础优化算法 二、线性回归的从零开始实现 1、生成数据集 2、读取数据集 3、初始化模型参数 4、定义模型 5、定义损失函数 6、定义优化算法 7、训练 三、线性回归的简洁实现 1、生成数据集 2、读取数据集 3、定义模型…

论文代码阅读:TGN模型训练阶段代码理解

文章目录 [toc] TGN模型训练阶段代码理解论文信息代码过程手绘代码训练过程compute_temporal_embeddingsupdate_memoryget_raw_messagesget_updated_memoryself.message_aggregator.aggregateself.memory_updater.get_updated_memoryMemoryget_embedding_moduleGraphAttentionE…

什么是W3C标准? 什么要遵循?

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML5中W3C的标准&#xff0c;需要遵循的规则以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问…

【AIGC】Midjourney高级进阶版

Midjourney 真是越玩越上头&#xff0c;真是给它的想象力跪了~ 研究了官方API&#xff0c;出一个进阶版教程 命令 旨在介绍Midjourney在Discord频道中的文本框中支持的指令。 1&#xff09;shorten 简化Prompt 该指令可以将输入的Prompt为模型可以理解的语言。模型理解语言…

Git初学入门指令

git基本指令 初始化&#xff1a; git init查看状态&#xff1a; git status新建文件&#xff1a; touch <filename>加入暂存区&#xff1a; git add . 或者 git add -A 表示全部加入暂存区 git add <filename>单个文件加入暂存区加入仓库&#xff1a; …

PCIe中断总结-各个中断的区别

1.简介&#xff1a; PCIe中断支持三种传输方式&#xff1a; • Legacy: 也称传统中断&#xff0c;Legacy PCI中断机制,每个PCI设备最多支持四个中断信号(边带信号:INTA# INTB# INTC# INTD#) • MSI(Message Signaled Interrupt): Post Memory Write,只支持32个中断向量 • MSI…

力扣labuladong一刷day35天

力扣labuladong一刷day35天 文章目录 力扣labuladong一刷day35天一、98. 验证二叉搜索树二、700. 二叉搜索树中的搜索三、701. 二叉搜索树中的插入操作四、450. 删除二叉搜索树中的节点 一、98. 验证二叉搜索树 题目链接&#xff1a;https://leetcode.cn/problems/validate-bi…

【Linux】如何对文本文件进行有条件地划分?——cut命令

cut 命令可以根据一个指定的标记&#xff08;默认是 tab&#xff09;来为文本划分列&#xff0c;然后将此列显示。 例如想要显示 passwd 文件的第一列可以使用以下命令&#xff1a;cut –f 1 –d : /etc/passwd cut&#xff1a;用于从文件的每一行中提取部分内容的命令。-f 1&…

Sql server数据库数据查询

请查询学生信息表的所有记录。 答&#xff1a;查询所需的代码如下&#xff1a; USE 学生管理数据库 GO SELECT * FROM 学生信息表 执行结果如下&#xff1a; 查询学生的学号、姓名和性别。 答&#xff1a;查询所需的代码如下&#xff1a; USE 学生管理数据库 GO SELE…

为什么需要 Kubernetes,它能做什么?

传统部署时代&#xff1a; 早期&#xff0c;各个组织是在物理服务器上运行应用程序。 由于无法限制在物理服务器中运行的应用程序资源使用&#xff0c;因此会导致资源分配问题。 例如&#xff0c;如果在同一台物理服务器上运行多个应用程序&#xff0c; 则可能会出现一个应用程…

【QED】高昂的猫 Ⅰ

目录 题目背景题目描述输入格式输出格式 测试样例样例说明数据范围 思路核心代码 题目背景 这是小橘。因为它总是看起来很高傲&#xff0c;所以人送外号“高昂的猫”。 题目描述 "锕狗"的房间里放着 n n n ( 1 ≤ n ≤ 1 0 9 ) (1 \leq n \leq 10^9) (1≤n≤109)个…

C# 使用CancellationTokenSource 取消Task执行

写在前面 在Task创建并执行后&#xff0c;如果状态发生了变化&#xff0c;需要取消正在执行中的Task&#xff0c;除了使用主线程上的共享变量来判断之外&#xff0c;更优雅的方式就是就是用CancellationTokenSource来取消任务的执行。 代码实现 public static void CancelTas…

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ] 一&#xff0c;MQ对比图 下面是 Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ 的更详细和专业的对比&#xff1a; 特性/功能KafkaRabbitMQZeroMQRocketMQActiveMQ语言JavaErlangCJavaJava协议自有协议AMQP自有协…

算法工程师-机器学习面试题总结(6)

目录 1.Bagging的思想是什么&#xff1f;它是降低偏差还是方差&#xff0c;为什么&#xff1f; 2.可否将RF的基分类模型由决策树改成线性模型或者knn&#xff1f;为什么&#xff1f; 3.GBDT梯度提升和梯度下降有什么区别和联系&#xff1f; 4.如何理解Boosting和Bagging&am…

基于ssm高校实验室管理系统的设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校实验室信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性…

散列卡片悬停变为整齐列表

效果展示 CSS 知识点 transform 属性运用 页面整体布局 <ul><li><div class"box"><img src"./user1.jpg" /><div class"content"><h4>Hamidah</h4><p>commented on your photo.<br />…

Excel 数据处理记录

20231203 excel中的字符串以符号间隔开了&#xff0c;如何将其中的字符串挑出&#xff0c;分别放到其他单元列&#xff1a; 在Excel中打开你的表格&#xff0c;选中包含以符号间隔的字符串的单元格。在顶部菜单中&#xff0c;找到“数据”选项&#xff0c;并选择“分列”。在…

电脑主板支持的cpu型号汇总

一、如何选择不同的主板和对应CPU 1、看针脚&#xff1a;网上有相应的参数&#xff0c;只要CPU能安装到主板中&#xff0c;基本就兼容&#xff0c;这主要取决CPU插槽和主板插槽十分一致。 2、看型号&#xff1a;桌面处理器&#xff0c;只有Intel和AMD两大平台&#xff0c;他们对…

dlib是什么?

dlib C Libraryhttp://dlib.net/ dlib是什么&#xff1f; Dlib is a modern C toolkit containing machine learning algorithms and tools for creating complex software in C to solve real world problems. It is used in both industry and academia in a wide range of…

基于SSM的高校共享单车管理系统的设计与实现论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此高校单车租赁信…