一、概述
SeaCMS 是一款基于 PHP 的免费、开源的网站内容管理系统,主要用于管理视频点播资源。近日在 SeaCMS v12.9 版本中发现了一个严重的 SQL 注入漏洞 (CVE-2024-29275),攻击者可以利用该漏洞在未经身份验证的情况下执行任意 SQL 命令,进而可能获得系统的敏感信息或执行任意代码。
二、漏洞细节
该漏洞位于 dmku/index.php 文件中,用户提供的数据未经适当的清理就直接用于 SQL 查询,从而导致了 SQL 注入。以下是问题代码的片段:
// 代码片段示例,展示漏洞存在的位置$sql = "SELECT * FROM table WHERE id = " . $_GET['id'];
在上述代码中,id 参数没有经过任何过滤或转义,直接拼接到 SQL 查询语句中,使得攻击者可以通过该参数注入恶意 SQL 命令。
三、漏洞复现
1. 概念验证 (PoC)
可以通过以下 URL 进行漏洞验证:
http://<your-domain>/js/player/dmplayer/dmku/?ac=del&id=(select(0)from(select(sleep(10)))v)&type=list
2. 复现步骤
-
启动一个 SeaCMS v12.9 的测试环境。
-
在浏览器中访问上述 URL。
-
如果服务器延迟了指定的时间(例如 10 秒),则说明存在 SQL 注入漏洞。
四、漏洞影响
该漏洞允许未经身份验证的远程攻击者通过 id 参数注入任意 SQL 命令,可能导致数据库数据泄露、篡改,甚至执行任意代码。
五、修复建议
目前,官方已经发布了补丁来修复此漏洞。用户应尽快更新到最新版本以避免风险。
修复方法
-
升级到最新版本:下载并安装最新版本的 SeaCMS。
-
代码修复:对用户输入的参数进行严格的过滤和转义,使用预处理语句来执行 SQL 查询。
// 使用预处理语句防止 SQL 注入
$stmt = $mysqli->prepare("SELECT * FROM table WHERE id = ?");
$stmt->bind_param("i", $_GET['id']);
$stmt->execute();
结论
SQL 注入漏洞是 Web 应用程序中常见且危害严重的漏洞。开发者应始终确保对用户输入进行适当的过滤和转义,并使用预处理语句来执行 SQL 查询。
原文始发于微信公众号(云梦安全):SeaCMS v12.9 中未经身份验证的 SQL 注入漏洞 (CVE-2024-29275)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论