文件上传知识梳理:原理、工具、绕过、利用与防御

文章简介:

本文全面梳理了文件上传相关知识,包括文件上传漏洞的原理及危害,介绍了 Webshell 相关工具(如冰蝎、哥斯拉、蚁剑),详细阐述了文件上传绕过检测的多种方法(前端检测、服务端检测的各种类型及相应绕过技巧),还探讨了文件上传的其他利用方式(如构造 XSS 漏洞、钓鱼、文件读取 / SSRF、执行 SSI 命令、探测 XXE 漏洞等),最后提出了针对文件上传漏洞的防御措施。

精简笔记:

  • 文件上传简介
    • 原理及危害:网站文件上传功能缺陷可致用户上传可执行脚本,获取服务器端命令执行能力进行恶意操作。
    • 成因及利用条件
      • 成因:开源编辑器漏洞、服务器配置不当等多种原因。
      • 利用条件:恶意文件能上传且路径可访问执行。
  • Webshell 工具
    • 冰蝎:动态加密,不同环境有不同支持方式。
    • 哥斯拉:多种 Payload 和加密器,支持多种后缀和插件。
    • 蚁剑:开源跨平台,面向特定人员。
  • 文件上传 bypass
    • 前端检测:禁用 JS 可绕过。
    • 服务端检测
      • Mime type 检测:抓包修改类型。
      • 文件扩展名
        • 黑名单检测:多种绕过方式。
        • 白名单检测:00 截断有条件绕过。
      • 文件内容检测绕过:多种方法,如文件头伪装、利用图片马、条件竞争等。
      • 利用服务器解析漏洞绕过:多种服务器存在相关漏洞可利用。
      • 分块传输绕过:通过插件,加注释或延时可绕过部分 WAF。
      • HPP 漏洞绕过:利用参数污染。
      • 脏字符绕过:填充脏字符,数据包大可能放行。
      • 文件路径修改:利用../ 回溯上传到根目录。
      • 流量检测绕过:修改请求头相关设置。
  • 文件上传的其它利用
    • 构造 XSS 漏洞:上传多种文件可构造。
    • 钓鱼:制作木马上传钓鱼。
    • 文件读取 / SSRF:利用有漏洞的 ffmpeg 上传相关文件。
    • 执行 SSI 命令:服务器支持相关功能时上传 shtml 文件。
    • 探测 XXE 漏洞:处理 Excel 文件时可能存在漏洞。
  • 防御措施
    • 检查上传路径,设置权限。
    • 扩展名检测,使用黑白名单。
    • MIME 验证,内容检测。
    • 图片二次渲染,文件重命名。
    • 隐藏路径,定义.htaccess 文件。

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

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

相关文章

学Linux的第六天

目录 账户和组管理 工作组管理 创建工作组groupadd 修改工作组groupmod 添加/删除组成员gpasswd 删除工作组groupdel 查看用户登录系统的情况 users查看当前登录系统的用户 last命令 lastlog命令 w命令 显示登录到系统的用户信息 who命令 Linux文件系统权限 文件…

KKFileView v4.4.0文件预览服务 编译和window运行和nginx代理设置

目录 一、拉取代码 二、编译打包 三、测试使用 四、实际使用 五、其他问题 本文记录,使用最新v4.4.0版本KKFileView源代码,在本地window上搭建文件预览服务,并通过nginx反向代理实现https访问。 一、拉取代码 从官网github上下载源代码…

树莓派基础设置--1.更新和升级操作系统

注意:使树莓派保持最新状态可以提高系统的安全性,但对于开发人员并不建议随意更新! 一、图像化界面 一般桌面的右上角也会显示树莓派系统更新的提示,可以点击相应选项进行更新! 二、使用APT 用来管理软件安装、升级…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

STL---unordered_set与unordered_map与前言(哈希表)

文章目录 哈希哈希容器:unordered_set与unordered_map哈希哈希表哈希函数哈希冲突解决哈希冲突扩容 哈希表的代码实现线性探测法解决哈希冲突哈希桶解决哈希冲突 哈希 哈希容器:unordered_set与unordered_map unordered_set 定义如下: 常用接口 跟桶…

深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)

一、深度学习框架概述 深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中,TensorFlow 由 Google 开发,自 2015 年发布以来,凭借其灵活的计算图、自动微分功能以及跨平台支持等特点,迅速成为主流深度学习框架…

盘点Windows10系统之下好用的录屏工具!

在当前时代,互联网媒体的普及。图片视频等随处可见,越来越多的工作、学习、培训等都以转变成视频形式。我的工作就是离不开利用视频来进行交流。也因如此,很多时候因为直播中需要进行回顾等录屏需求,使用过多款录屏软件。拥有一款…

【MySQL】实战篇—项目需求分析:ER图的绘制与关系模型设计

在软件开发中,数据库是信息系统的核心部分,合理的数据库设计能够显著提高系统的性能和可维护性。 ER图(实体-关系图)是数据库设计的重要工具,它通过图形化的方式描述了数据实体及其相互关系,帮助开发者和设…

短信验证码发送实现(详细教程)

短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦!最近也是在工作中遇到我自认为需要记录笔记的需求,本人只求日后回顾有迹可寻,不喜勿喷! 废话不多说,直接上代码&#xff…

深度学习数学基础之梯度

深度学习数学基础之梯度 方向余弦 方向导数 梯度(向量) 变化率最大的方向或者说方向导数最大的方向就是梯度向量的方向指向方向导数变化最大的方向

PYNQ 框架 - VDMA驱动 - 帧缓存

目录 1. 简介 2. 代码分析 2.1 _FrameCache 类定义 2.1.1 xlnk.cma_array() 2.1.2 pointerNone 2.1.3 PynqBuffer 2.2 _FrameCache 例化与调用 2.3 _FrameCache 测试 2.4 _FrameList 类定义 2.5 _FrameList 例化与调用 2.6 _FrameList 测试 3. 帧的使用 3.1 读取帧…

Cloud Compare学习笔记

1.1 导出文件 导出点云数据为 PCD 格式时,系统提供了三种保存选项,分别是 Compressed Binary(压缩二进制)、Binary(二进制)、ASCII/Text(文本) Compressed Binary(压缩…

电商直播带货乱象频出,食品经销商如何规避高额损失?

近年来,电商直播带货乱象频出,食品经销行业售卖商品涉嫌违规的事件层出不穷。以食品安全为例,2024年10月17日市场监管总局发布了关于11批次食品抽检不合格情况的通告,在抽检的650批次样品中,发现存在食品添加剂超范围超…

攻防世界 MISC miao~详解

下载压缩包,但是尝试解压的时候提示错误,刚开始以为是伪加密之类的,但是尝试了一圈之后,发现并没有问题。后面用bandizip打开,得到了一张图片: 拖到010editor里面查看,没有发现什么 于是用随波逐…

基于Unet卷积神经网络的脑肿瘤MRI分割

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【YOLO模型实现农作物病虫害虫识别带GUI界面】 2.【卫星图像道路检测DeepLabV3P…

记一次:使用使用Dbeaver连接Clickhouse

前言:使用了navicat连接了clickhouse我感觉不太好用,就整理了一下dbeaver连接 0、使用Navicat连接clickhouse 测试连接 但是不能双击打开,可是使用命令页界面,右键命令页界面,然后可以用sql去测试 但是不太好用&#…

python nan是什么

NaN(not a number),在数学表示上表示一个无法表示的数,这里一般还会有另一个表述inf,inf和nan的不同在于,inf是一个超过浮点表示范围的浮点数(其本质仍然是一个数,只是他无穷大&…

ABAP开发学习——内存管理二

SAP内存与ABAP内存的不同 SAP内存 当在某个事务程序中输入了物料号等,在打开其他需要输入物料号的事务窗口中会自动带出,不需要自己输入,因为这些地方使用相同的parameter id,共享相同SAP内存区域 在数据库表TPARA中可以查看到 S…

如何在短时间内入门并掌握深度学习?

如何在短时间内快速入门并掌握深度学习,是很多读者的困惑——晦涩难懂的数学 知识、复杂的算法、烦琐的编程……深度学习虽然让无数读者心怀向往,却也让不少人望而生畏,深感沮丧:时间没少花,却收效甚微。 如何才能更好…

ubuntu交叉编译zlib库给arm平台使用

1.下载并解压: 2.生成makefile 3.修改makefile 4.编译: make 出现下面错误先安装 gcc-arm-linux-gnueabihf 安装 gcc-arm-linux-gnueabihf