CVE: CVE-2025-52021
标题: 通过 edit_product.php 中的 product_id 参数实现的基于时间的盲 SQL 注入
厂商 / 仓库: PuneethReddyHC — https://github.com/PuneethReddyHC/online-shopping-system-advanced
受影响版本: 1.0(测试时的分支/标签 master)
发现者: Hafiz Pradana Gemilang
披露状态: 已私下通知厂商。出于用户安全考虑,完整漏洞利用 PoC 未向公众披露。
在 Online Shopping System Advanced v1.0 的 admin/admin/edit_product.php 中发现了一个基于时间的盲 SQL 注入漏洞。product_id GET 参数未经适当验证或参数化即被拼接到 SQL 查询中。攻击者可注入时间延迟函数(例如 SLEEP)来观察服务器响应延迟并推断数据库行为,从而确认远程 SQL 注入点。
注意:本公告有意不包含可运行的漏洞利用载荷。概念验证详情已私下分享给维护者以便修复。
/admin/admin/edit_product.php?product_id=<value>
本地测试 URL 示例:
http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0
product_id(GET)admin/admin/edit_product.phpproduct_id 参数并将其以未参数化的方式包含在 SQL 语句中。使用数据库 SLEEP() 语义进行的基于时间的注入尝试产生了可测量的服务器端延迟,与成功注入一致:
SLEEP(6) → 观察到的响应延迟 ≈ 6.01 秒SLEEP(15) → 观察到的响应延迟 ≈ 15.00 秒SLEEP(0) → 基线响应延迟 ≈ 0.01 秒这些结果表明存在一个允许基于时间推断的盲 SQL 注入点。测试期间观察到的数据库名称:onlineshop。
成功利用此漏洞可允许攻击者:
估计严重性:高
product_id 参数发送包含时间延迟 SQL 构造的精心构造请求(测试使用 SLEEP() 变体执行)。公开公告中省略了完整的分步 PoC — 请在负责任披露条款下联系报告者获取加密 PoC。
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
product_id 视为整数并相应验证(例如 filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT))。DROP、ALTER、GRANT 或管理权限)。(为方便厂商/维护者而包含 — 请勿公开发布 PoC 载荷)
sqlmap -u "http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0" --dbms=mysql --batch --level=5 --risk=3 --technique=T --time-sec=6
发现者: Hafiz Pradana Gemilang
免责声明: 本公开公告省略了可利用的载荷以保护用户。完整的技术细节和 PoC 可根据商定的负责任披露政策应厂商要求提供。