ZoneMinde监控平台SQL注入漏洞CVE-2024-51482
ZoneMinder(简称ZM)是一套基于Linux操作系统的摄像机的视像数据监控的应用软件,通俗理解为网络摄像机视像数据监控应用软件。
一、基本情况
ZoneMinder 支持单一或多台视像镜头应用,包括摄取、分析、记录(包括移动侦测功能)和监视来源,且支持 IP、USB以及模拟摄像机。
ZoneMinder 可在摄像头监视下动态图像识别,判断指定区域之内是否有外人或物入侵,若有则保存相关图像和视频并通过网络进行监视。
栋科技漏洞库关注到 ZoneMinder 平台中发现SQL注入漏洞,漏洞被追踪为 CVE-2024-51482,漏洞的CVSS评分为 9.9,强调了其严重性。
二、漏洞分析
CVE-2024-51482漏洞源于 web/ajax/event.php 函数中的基于布尔值的 SQL 注入,该漏洞存在于 ZoneMinder v1.37.* <= 1.37.64 版本中。
由于 tagId 参数缺乏输入验证,使攻击者可直接操纵 SQL查询,攻击者通过获得对 SQL 数据库的控制可能损害数据机密性和系统完整性。
该漏洞是在使用“ $tagId直接放入$sql命令中然后执行”时发现的,漏洞允许攻击者运行任意SQL命令,包括 DELETE 命令等潜在危险操作。
攻击者可以先构造如下这个精制的URL,然后通过 tid 参数注入 SQL 语句:
http://hostname_or_ip/zm/index.php?view=request&request=event&action=removetag&tid=1 的URL
安全研究人员 Entropt 通过使用以下命令自动化该过程来证明了这一点:
sqlmap -u 'http://hostname_or_ip/zm/index.php?view=request&request=event&action=removetag&tid=1'
由于CVE-2024-51482允许通过“web/ajax/event.php”函数执行基于布尔值的SQL注入,使攻击者可通过注入特定布尔条件可操纵SQL查询。
这可能导致对数据库中的敏感信息进行未经授权的访问;造成敏感用户信息或应用程序数据泄露;操作插入、修改或者删除数据库记录。
当然,该漏洞还可能导致通过 SLEEP 诱导拒绝服务(DoS)等命令导致的应用程序或数据库无响应等严重问题,其带来的后果可想而知。
该漏洞可以通过修改代码以使用参数化查询并在执行 SQL 语句之前有效清理输入数据来解决。
例如,更新后的代码将 SQL 查询更改为使用占位符,从而防止直接注入:
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId);
三、漏洞影响
ZoneMinder v1.37.* <= 1.37.64
四、修复建议
ZoneMinder v1.37.* >= 1.37.65
五、参考链接
https://zoneminder.com/downloads/
https://github.com/ZoneMinder/zoneminder/security/advisories/GHSA-qm8h-3xvf-m7j3
https://github.com/ZoneMinder/zoneminder/commit/9e7d31841ed9678a7dd06869037686fc9925e59f