欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

文件上传漏洞:绕过手法与安全校验设计

发表于:|最后更新:|分类:安全与运维|阅读:4863 次

文件上传功能若校验不严,攻击者可上传 WebShell 获取服务器控制权。

一、常见绕过手法

  • 修改 Content-Type 为 image/png 绕过 MIME 检查
  • 双扩展名 shell.php.jpg 绕过黑名单
  • 利用解析漏洞(如 Apache 多后缀解析)
  • 在图片 EXIF 中嵌入 PHP 代码配合文件包含

二、安全校验设计

python
import magic

ALLOWED = {"image/png", "image/jpeg", "image/webp"}

def validate_upload(file_bytes: bytes) -> bool:
    mime = magic.from_buffer(file_bytes, mime=True)
    if mime not in ALLOWED:
        return False
    # 二次校验:解析图片头,确认结构合法
    return True

关键措施:基于文件魔数而非扩展名判断类型、重命名文件为随机 UUID、上传目录禁止脚本执行、将文件存储于独立对象存储并隔离域名。