【HW系列】—web常规漏洞(文件上传漏洞)

文章目录

    • 一、简介
    • 二、危害
    • 三、文件检测方式分类
    • 四、判断文件检测方式
    • 五、文件上传绕过技术
    • 六、漏洞防御措施

一、简介

文件上传漏洞是指Web应用程序在处理用户上传文件时,未对文件类型、内容、路径等进行严格校验和限制,导致攻击者可上传恶意文件(如WebShell、木马、病毒等)到服务器,进而控制服务器或执行非法操作。其核心原理在于服务器对上传文件的处理逻辑存在缺陷,例如未限制可执行文件的存储路径、未验证文件真实类型等。根据统计,约30%的Web应用存在此类漏洞。

二、危害

远程代码执行:上传WebShell(如PHP、ASP脚本)可直接执行系统命令,控制服务器。

数据泄露:攻击者可访问敏感文件(如数据库配置、用户信息)。

服务器瘫痪:通过上传大文件或恶意程序发起DDoS攻击。

权限提升:结合路径遍历漏洞覆盖系统关键文件,或篡改网站内容。

供应链攻击:上传恶意图片或跨域策略文件(如crossdomain.xml),控制客户端行为。

三、文件检测方式分类

在这里插入图片描述

文件上传检测主要分为以下五类:
客户端检测:通过JavaScript校验文件扩展名和大小,易被禁用或绕过。

服务端MIME检测:验证HTTP请求的Content-Type字段(如image/jpeg),但可伪造。

扩展名检测:黑名单或白名单校验文件后缀,易被大小写、双扩展名(如.php.jpg)绕过。

文件内容检测:检查文件头(Magic Number)或二次渲染图片破坏恶意代码。

目录路径检测:限制上传路径合法性,但可能被路径遍历(如…/)突破。

四、判断文件检测方式

客户端检测:
上传非法文件时,未发送请求即弹出错误提示(如“仅允许.jpg文件”)。

服务端检测:

MIME检测:修改Content-Type为合法类型(如image/png)可绕过。

扩展名检测:尝试上传非常见后缀(如.phtml、.php5)测试黑名单覆盖范围。

内容检测:添加合法文件头(如GIF89a)或嵌入恶意代码于图片元数据(Exif)。

五、文件上传绕过技术

在这里插入图片描述

扩展名绕过:

  • 双扩展名:.php.jpg(Apache解析漏洞)。

  • 空字节截断:shell.php%00.jpg(PHP版本<5.3.4)。

  • 大小写混淆:.pHp、.AsP。
    内容欺骗:

  • 图片马:通过copy /b 1.jpg+shell.php 2.jpg合并文件。

  • Exif元数据注入:使用工具(如ExifTool)插入恶意代码。
    解析漏洞利用:

  • Apache解析规则:从右向左解析扩展名(如1.php.xxx)。

  • IIS目录路径解析:/upload/shell.asp/1.jpg触发ASP解析。
    条件竞争:快速上传并访问临时文件,绕过删除逻辑。

六、漏洞防御措施

严格校验机制:

  • 白名单验证:仅允许特定扩展名(如.jpg、.png)和MIME类型。

  • 文件内容检测:使用finfo库验证文件头,二次渲染图片破坏隐藏代码。
    存储安全:

  • 随机重命名:使用UUID或哈希值生成文件名,避免直接访问。

  • 非Web目录存储:上传文件存放于不可通过URL直接访问的路径。

  • 权限控制:目录设置为不可执行(如chmod -x uploads/)。
    服务器加固:

  • 禁用危险函数:如PHP的system()、exec()。

  • 配置安全:Apache禁用.htaccess,Nginx限制解析特定扩展名。
    其他措施:

  • 日志监控:记录上传行为,实时检测异常(如高频上传)。

  • CDN分发:通过CDN提供静态文件,隔离执行风险。

总结
文件上传漏洞的防御需从输入验证、存储隔离、服务器配置多层面综合防护。开发中应优先采用白名单机制,避免依赖客户端检测,并结合定期渗透测试修复潜在风险。攻击手法与防御技术持续演进,需紧跟安全社区动态更新防护策略。

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

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

相关文章

如何设计ES的冷热数据分离架构?Elasticsearch 集群如何实现高可用?如何避免脑裂问题?如果出现脑裂如何恢复?

以下为Elasticsearch架构设计与高可用方案详细说明&#xff1a; 冷热架构 一、冷热数据分离架构设计&#xff08;文字描述模拟架构图&#xff09; [Hot Layer] │ ├─ SSD节点组&#xff08;3节点&#xff09; │ ├─ 角色&#xff1a;ingest/data/hot │ ├─ 存…

Trivy 镜像漏洞扫描:从零入门到实战指南

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 ——手把手带你掌握容器安全核心工具 一、安装配置&#xff1a;三步完成 Trivy 部署 Trivy 是由 Aqua Security 开发的开源容器安全工具&#xff0c;支持…

SQL基础概念以及SQL的执行方式

1. SQL入门 1.1. SQL语言功能 可以把 SQL 语言按照功能划分成以下的 4 个部分&#xff1a; DDL&#xff0c;英文叫做 Data Definition Language&#xff0c;也就是数据定义语言&#xff0c;它用来定义我们的数据库对象&#xff0c;包括数据库、数据表和列。通过使用 DDL&…

Rust 1.0 发布十周年,梦想再度扬帆起航!

目录 引言&#xff1a;发布十周年&#xff0c;锋芒露今朝 一、Rust的诞生&#xff1a;源于安全的初心 二、Rust 1.0&#xff1a;十年耕耘&#xff0c;硕果累累 三、核心利器&#xff1a;安全、并发与性能的十年锤炼 四、生态与应用&#xff1a;十年拓展&#xff0c;遍地开…

x86 与 ARM 汇编深度对比:聚焦 x86 汇编的独特魅力

一、引言 汇编语言是硬件与软件的桥梁&#xff0c;x86 和 ARM 作为两大主流架构&#xff0c;其汇编语言在设计理念、指令集、编程风格上差异显著。本文以 x86 汇编为核心&#xff0c;结合与 ARM 的对比&#xff0c;解析 x86 汇编的技术细节与应用场景&#xff0c;助力开发者深…

入驻面包多了

前言 入驻面包多了&#xff0c;其实已经开通面包多账号老久了&#xff0c;一直没有认证&#xff0c;因为没什么拿得出手的作品。 后边会努力沉淀&#xff0c;希望能出一些作品&#xff0c;给大家带来一些帮助&#xff0c;然后能赚到一些些奶茶钱。 一个小工具 上架了一个Win…

Python----目标检测(MS COCO数据集)

一、MS COCO数据集 COCO 是一个大规模的对象检测、分割和图像描述数据集。COCO有几个 特点&#xff1a; Object segmentation&#xff1a;目标级的分割&#xff08;实例分割&#xff09; Recognition in context&#xff1a;上下文中的识别&#xff08;图像情景识别&#xff0…

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析

【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用&#xff1a;从配置到函数调用全解析 前言 在人工智能应用开发领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的集成能力至关重要。NVIDIA作为全球领先的GPU厂商&#xff0c;其LLM API提供了对Meta Llama-3.…

通用的管理账号设置设计(一)

背景 首先说明一下需求背景&#xff1a; 在整个角色分类中分为管理员和用户&#xff0c;用户可以分为很多级别&#xff0c;比如用户处于哪个组&#xff08;group&#xff09;&#xff0c;用户处于哪个site&#xff08;城市&#xff09;。管理员可以&#xff1a; 2.1 锁定整个…

第5章 软件工程基础知识

5.2 软件过程模型 掌握常见软件开发模型的基本概念。 瀑布模型&#xff1a;各阶段的固定顺序&#xff0c;如同瀑布流水。适用于需求明确&#xff0c;且很少发生较大变化的项目。 演化模型&#xff1a; 原型模型&#xff1a;适用于用户需求不清&#xff0c;需求经常变化的情况…

深浅拷贝?

一、定义&#xff1a; 浅拷贝&#xff1a;只复制对象的第一层属性&#xff0c;若第一层属性是引用类型&#xff08;如对象、数组&#xff09;&#xff0c;则复制其内存地址&#xff0c;修改拷贝后的嵌套对象会影响原对象。 深拷贝&#xff1a;递归复制对象的所有层级&#xf…

MMA: Multi-Modal Adapter for Vision-Language Models论文解读

abstract 预训练视觉语言模型&#xff08;VLMs&#xff09;已成为各种下游任务中迁移学习的优秀基础模型。然而&#xff0c;针对少样本泛化任务对VLMs进行微调时&#xff0c;面临着“判别性—泛化性”困境&#xff0c;即需要保留通用知识&#xff0c;同时对任务特定知识进行微…

蚂蚁集团 CTO 何征宇:AGI时代,海量数据带来的质变|OceanBase 开发者大会实录

5 月 17 日&#xff0c;“第三届 OceanBase 开发者大会”在广州举办&#xff0c;会中&#xff0c;蚂蚁集团 CTO 何征宇&#xff0c;进行了题为《AGI时代&#xff0c;海量数据带来的质变》的主题分享。他深度剖析了AI 时代下&#xff0c;数据应用范式的变革&#xff0c;以及生成…

python网络爬虫的基本使用

各位帅哥美女点点关注&#xff0c;有关注才有动力啊 网络爬虫 引言 我们平时都说Python爬虫&#xff0c;其实这里可能有个误解&#xff0c;爬虫并不是Python独有的&#xff0c;可以做爬虫的语言有很多例如&#xff1a;PHP、JAVA、C#、C、Python。 为什么Python的爬虫技术会…

网页模板素材网站 web前端网页制作模板

在当今数字化时代&#xff0c;Web 前端网页制作对于企业和个人来说至关重要。无论是企业官网、个人博客还是电商网站&#xff0c;一个美观、功能性强且易于维护的网页设计能够有效提升用户体验和品牌形象。然而&#xff0c;从零开始设计一个网页往往需要耗费大量的时间和精力&a…

ROS系列(一):ROS入门指南 —— 核心解析与版本演进

引言 机器人操作系统&#xff08;ROS&#xff09;的诞生&#xff0c;不仅是一场技术革命&#xff0c;更是一张重新定义机器人开发范式的蓝图。从实验室的原型验证到工业场景的规模化落地&#xff0c;从单机智能到群体协作&#xff0c;ROS以开源、模块化和生态驱动的特性&#…

将 Docker 镜像推送到 GitLab Container Registry 的完整步骤

一、前提准备 GitLab 项目: 在 GitLab 上拥有一个项目&#xff0c;例如 your-group/your-project-name。重要: 确保项目路径&#xff08;尤其是项目名称部分&#xff09;全部使用小写字母。例如&#xff0c;如果初始是 Your-Project&#xff0c;请在项目设置中将其路径修改为 y…

Java-HashMap基础与扩展学习总结

​面试官​&#xff1a; “HashMap 是 Java 中最常用的数据结构之一&#xff0c;你能说说它的底层实现吗&#xff1f;比如哈希冲突是怎么解决的&#xff1f;” ​你​&#xff08;结合源码与优化场景&#xff09;&#xff1a; “好的&#xff0c;HashMap 底层是数组链表/红黑…

嵌入式学习之系统编程(五)进程(2)

一、进程的退出 &#xff08;一&#xff09;僵尸进程与孤儿进程 &#xff08;二&#xff09;相关函数 1、exit函数 2、_exit函数 3、atexit函数 二、进程空间的回收&#xff08;相关函数&#xff09; 1、wait函数 2、waitpid函数 3、练习 4、exec族 5、system函数 一…

AI时代新词-Transformer架构:开启AI新时代的关键技术

一、什么是Transformer架构&#xff1f; Transformer架构 是一种基于自注意力机制&#xff08;Self-Attention Mechanism&#xff09;的深度学习模型架构&#xff0c;最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出。它主要用于处理序列数据&#xff08…