文件上传漏洞webshell的一般FUZZ
本文仅用于技术研究,禁止用于非法用途。
Author:枷锁
文件上传漏洞基础
1. 简介
文件上传就是将客户端的文件上传到服务器的过程称为文件上传。比如QQ空间发表说说上传的图片、招聘网上传简历、蚁景网安实验室修改头像等,这些都是文件上传。
2. 危害
攻击者通过上传恶意文件传递给解释器去执行,并在服务器上执行恶意代码。比如进行数据库执行、服务器文件管理、命令执行等恶意操作。从而控制整个网站,甚至是服务器。
3. 前提条件
- 成功上传文件到服务器
- 文件能够被访问到
- 文件被解释器解析执行
4.文件检测方式

5. 判断文件检测方式

6. 文件上传检测绕过
(1) 前端检测绕过
前端检测一般是在客户端浏览器运行一段JavaScript 代码以对上传的文件进行检测。
按键盘上的F12 按键,点击箭头处选择设置


找到禁用 JavaScript 将其勾选上,即可禁用JavaScript 。

3. 然后重新上传xx.php 文件即可。
(2) 后端检测
A. MIME类型检测
MIME(Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。用来表示文档、文件或字节流的性质和格式。在HTTP数据包中在Content-Type 字段显示。
MIME 类型检测会检测HTTP数据包中的MIME 类型是否合法。

常见MIME 类型:

绕过技巧:
修改MIME 类型为合法类型,一般修改为图片类型。

B. 后缀名检测
黑名单检测
在程序的代码中,一般会有一个专门的黑名单列表,里面会包含常见的危险脚本文件的文件扩展名,符合该扩展名的文件则不允许上传。

Apache 服务器能够使用PHP解析.php3 、.php5 、.phtml 。前提是服务器允许解析后缀名
为.php3 、.php5 、.phtml 。如果想要服务器能使用PHP 解析这些后缀名的话,(绝大多数)可以去Apache 配置文件httpd.conf 添加并重启Apache
可尝试的后缀:
PHP: php2 、php3 、php5 、phtml 、pht
ASP: asa 、cer 、cdx
ASPX: ascx 、ashx 、asac
JSP: jspx 、jspf
配置文件绕过
.htaccess 文件(或者分布式配置文件),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法。即在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。管理员可以通过编辑Apache 的vhost.conf 文件,将AllowOverride None 修改为AllowOverride All 并重启Apache 。

- 上传.htaccess 文件:
<FilesMatch "as.png">
setHandler application/x-httpd-php
</FilesMatch>
调用PHP 解释器解析as.png

-
上传as.png

-
成功上传并解析

白名单检测
在程序的代码中,一般会有一个专门的白名单列表,里面会包含常见的合法文件的文件扩展名,符合该扩展名的文件则允许上传。

00截断绕过
0x00 是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。系统在对文件名的读取时,如果遇到0x00 ,就会认为读取已结束。这个可以用在对文件类型名的绕过上。
但要注意是文件的16进制内容里的00,而不是文件名中的00 !!!就是说系统是按16进制读取文件(或者说二进制),遇到ascii码为零的位置就停止,而这个ascii码为零的位置在16进制中是00,用0x开头表示16进制,也就是所说的0x00 截断。%00 是被服务器解码为0x00发挥了截断作用。
前提条件:PHP版本 < 5.3.29且php.ini 文件的magic_quotes_gpc 的值为Off 。

payload制作:

访问上传文件

C. 文件内容检测
文件内容检测就是检测上传的文件里的内容是否合法,如果合法则允许上传并保存到服务器;否则,不允许上传。
文件幻数绕过
文件格式幻数(Magic Number),它可以用来标记文件或者协议的格式,很多文件都有幻数标志来表明该文件的格式。
例如 png: 89 50 4E 47 0D 0A
Gif: 47 49 46 38 39 61
绕过内容检测
条件竞争:上传后疯狂访问临时文件,在删除前触发解析。
延时触发:WebShell中嵌入sleep(random_time),绕过沙箱动态检测
7. 漏洞防御措施:
1.上传的目录设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。
2.对文件后缀的判断中使用白名单的方式。
3.文件服务器和web服务器分离,也就是上传的文件单独存放到其他的服务器之中。
4不需要返回文件路径的情况下,随机改写文件名。
宇宙级免责声明
🚨 重要声明:本文仅供合法授权下的安全研究与教育目的!🚨
1.合法授权:本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法,可能导致法律后果(包括但不限于刑事指控、民事诉讼及巨额赔偿)。
2.道德约束:黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范,仅用于提升系统安全性,而非恶意入侵、数据窃取或服务干扰。
3.风险自担:使用本文所述工具和技术时,你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。
4.合规性:确保你的测试符合当地及国际法律法规(如《计算机欺诈与滥用法案》(CFAA)、《通用数据保护条例》(GDPR)等)。必要时,咨询法律顾问。
5.最小影响原则:测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。
6.数据保护:不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息,应立即报告相关方并删除。
7.免责范围:作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。
🔐 安全研究的正确姿势:
✅ 先授权,再测试
✅ 只针对自己拥有或有权测试的系统
✅ 发现漏洞后,及时报告并协助修复
✅ 尊重隐私,不越界
⚠️ 警告:技术无善恶,人心有黑白。请明智选择你的道路。
希望这个教程对你有所帮助!记得负责任地进行安全测试。
更多推荐


所有评论(0)