当前位置: 首页 > news >正文

了解一个安全漏洞丨文件上传漏洞

概述

文件上传功能本身不是漏洞,漏洞在于对用户上传文件的内容、类型、大小、存储位置、访问方式缺乏足够的安全校验

常见后果

Webshell 植入:上传脚本文件,远程执行系统命令,彻底控制服务器。

钓鱼/挂马:上传 HTML/JS 文件,对访问者进行钓鱼或植入恶意代码。

存储型 XSS:上传包含恶意脚本的 SVG、HTML 等,触发跨站脚本攻击。

服务器资源耗尽:上传超大文件或压缩炸弹(zip bomb),造成拒绝服务。

覆盖关键文件:结合路径穿越,覆盖系统配置文件或计划任务,实现提权或持久化。

常见检查点

前端JS校验

在上传前用 JavaScript 校验文件扩展名、大小,不合法就阻止表单提交。

绕过方法:

若只依靠前端JS,则可以抓包直接发送恶意文件,从而绕过前端校验。

Content-Type校验

后端读取 HTTP 请求头中Content-Type字段,判断是否为允许的类型。(如image/jpeg)

绕过方法:

同样可以抓包绕过,将Content-Type修改成允许的类型即可

文件扩展名校验
黑名单

这是最容易被绕过的校验之一。黑名单机制是列出不允许的扩展名,但名单很难全面覆盖。

绕过方法:

主要通过黑名单漏过的禁用通过。比如大小写(Windows不区分,Linux区分)、双扩展名、特殊后缀(.pht、.php3等等)、末尾加点或者空格、空字节截断(适用早期PHP)

白名单

白名单本是最安全的后缀管控方式,但若仅单纯校验后缀,而服务器存在“解析漏洞”,依然会沦陷。

白名单的绕过配合解析漏洞实现

Apache .htaccess覆盖:上传.htacccess文件,内容为"AddType application/x-httpd-php.jpg",使该目录下所有.jpg文件都当做PHP文件执行。

Apache位置扩展名解析:碰到不识别的扩展名,Apache 可能从右往左查找已知类型。

......

文件头校验

读取文件最开头的几个字节,与预定义的签名比较,判断真实类型。

若后端通过读取文件前几个字节来验证类型,可以在 Webshell 代码前附加合法文件头。这样既通过文件头检查,又保留了可执行内容。

文件内容校验

这是更深的防线,检查文件内容本身是否包含恶意代码。

常见:基于正则/关键字匹配、杀毒软件扫描、二次渲染

对于绕过二次渲染,可以在不破坏原始图像数据区域的前提下,将恶意代码隐藏在注释段或未被处理的数据块中,确保重渲染后依然存在

存储路径与访问控制
路径穿越

如果后端将用户上传的用户名直接拼入存储路径,则攻击者可用../来跳出预定目录

存储位置

若在Web根目录内:攻击者直接通过URL访问,一旦执行条件具备就被拿下

若在Web根目录外:无法通过 URL 直接访问,必须由专门脚本读取并输出。这能极大降低风险

其他绕过方式

压缩包上传绕过

上传恶意的包.zip、.tar,服务器自动解压后恶意文件就完成落地。如果解压逻辑没有对目录穿越(../)进行过滤,则可以安装到任意目录。

XML实体注入

上传 SVG 或 XLSX 等 XML 结构文件,若解析器未禁用外部实体,可导致 SSRF、文件读取等。

典型的SVG注入:

<?xml version="1.0"?> <!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]> <svg>&xxe;</svg>

无文件Webshell

上传配置文件(如 Nginx 配置、.htaccess),配合内存马技术,不落地脚本文件也能维持控制。

http://www.jsqmd.com/news/993038/

相关文章:

  • 地下水非饱和带模拟工具:基于SimPEG的Richards方程正演与参数反演Python实现
  • 四川芥酸生产厂家实力排行及应用适配指南 - 奔跑123
  • 大麦自动化抢票终极指南:告别手速限制,高效抢到心仪门票
  • 别再用递归硬扛了!用递推搞定‘踩方格’问题,信息学奥赛选手都在用的高效解法
  • Python通达信数据接口完整指南:免费获取A股行情与财务数据的终极解决方案
  • MPC8306S时钟架构与PLL配置实战:从原理到硬件实现
  • 2026武汉珍珠棉厂家实力测评:定制包装领域优质厂商推荐 - 速递信息
  • 如何快速掌握百度网盘秒传技术:新手用户的完整操作指南
  • 2026南阳本地人常去黄金回收门店前五整理 黄金回收百业回收铂金回收靠谱实体店联系方式汇总 - 中安检金银铂钻回收
  • 三分钟打造专业音乐播放器:foobar2000终极美化指南
  • DeepVoice:如何用深度学习实现高质量的文本转语音?
  • Chrome-Charset终极指南:3分钟解决网页乱码问题的完整方案
  • 告别手速焦虑:大麦自动化抢票系统让你秒杀心仪演唱会门票
  • PCA6408A I2C I/O扩展器:从原理到实战的嵌入式GPIO扩展方案
  • PVNet轻量实现包:开箱即用的6DoF姿态估计训练与部署工具集
  • 用 AI 搭一个个人知识库:从 RAG 到知识图谱
  • Open-Lyrics:终极AI音频转字幕工具,让外语内容秒懂
  • C#调用海康相机并接入YOLO/OpenCV的完整视觉工程示例
  • 菏泽高口碑黄金铂金回收白银回收实体老店排行 5 家靠谱门店电话地址全收录 - 诚金汇钻回收公司
  • **智慧校园哑终端监控:摄像头、门禁、信息屏的统一管理实践**
  • 2026年6月最新|杭州靠谱的财务记账公司推荐哪家好?避坑指南+真实口碑 - 商业新知
  • 陇南高口碑黄金铂金回收白银回收实体老店排行 5 家靠谱门店电话地址全收录 - 诚金汇钻回收公司
  • TwinCAT3授权激活实战:从请求生成到文件导入的完整避坑指南
  • 2026贵阳贵金属回收黄金回收白银回收铂金回收店铺怎么挑?5 家不压价线下实体店完整测评清单 + 商家联络方式 - 信誉隆金银铂奢回收
  • 2026晋中全城高金价回收黄金回收店铺盘点 TOP 铂金白银旧料回收正规门店联系方式全收录 - 中业金奢再生回收中心
  • 从PWN5看格式化字符串:除了改GOT,我们还能怎么玩?(附三种实战思路)
  • 如何在老旧Mac上安装最新macOS:OpenCore Legacy Patcher完整4步指南
  • 基于Proteus与STC15W4K32S4的按键中断流水灯实现(C语言)——其二
  • PCA8530 LCD驱动芯片级联配置与同步技术详解
  • Java毕业设计-基于jspm自行车个性化改装推荐系统基于springboot框架的自行车个性化改装推荐系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)