## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HAFIZGEMILANG-CVE-2025-52021
# CVE-2025-52021 — PuneethReddyHC / Online Shopping System Advanced (v1.0) 中的基于时间的盲 SQL 注入
**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 注入点。
> 注意:本公告有意不包含可运行的漏洞利用载荷。概念验证详情已私下分享给维护者以便修复。
* * *
## 受影响端点(示例)
root@kitploit:~
/admin/admin/edit_product.php?product_id=<value>
本地测试 URL 示例:
root@kitploit:~
http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0
* * *
## 漏洞详情
* **类型:** SQL 注入(基于时间的盲注)
* **参数:** `product_id`(GET)
* **位置:** `admin/admin/edit_product.php`
* **攻击向量:** 远程(构造的 URL);如果管理端点可公开访问或攻击者可访问,则无需身份验证。
* **前提条件:** 端点必须接受 `product_id` 参数并将其以未参数化的方式包含在 SQL 语句中。
* * *
## 证据(计时测试摘要)
使用数据库 `SLEEP()` 语义进行的基于时间的注入尝试产生了可测量的服务器端延迟,与成功注入一致:
* `SLEEP(6)` → 观察到的响应延迟 ≈ 6.01 秒
* `SLEEP(15)` → 观察到的响应延迟 ≈ 15.00 秒
* `SLEEP(0)` → 基线响应延迟 ≈ 0.01 秒
这些结果表明存在一个允许基于时间推断的盲 SQL 注入点。测试期间观察到的数据库名称:`onlineshop`。
* * *
## 影响
成功利用此漏洞可允许攻击者:
* 通过盲注/基于时间的技巧确认并枚举数据库内容。
* 使用自动化工具(例如 sqlmap)通过基于时间的技巧窃取数据(模式、表名、行)。
* 根据数据库权限和应用上下文,可能进一步升级为更严重的入侵。
估计严重性:**高**
* * *
## 复现(高级别)
1. 向 `product_id` 参数发送包含时间延迟 SQL 构造的精心构造请求(测试使用 `SLEEP()` 变体执行)。
2. 观察服务器响应时间以推断注入的表达式是否执行。
3. 使用不同载荷重复测试可通过基于时间的技巧实现自动化提取。
> 公开公告中省略了完整的分步 PoC — 请在负责任披露条款下联系报告者获取加密 PoC。
* * *
## 建议的修复措施
1. **对所有数据库访问使用参数化查询 / 预处理语句。** 不要将用户输入拼接到 SQL 字符串中。
* 示例(PHP + PDO):
root@kitploit:~
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
2. **验证并清理输入** :将 `product_id` 视为整数并相应验证(例如 `filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT)`)。
3. **最小权限原则** :确保 Web 应用程序使用的数据库用户具有最小权限(避免 `DROP`、`ALTER`、`GRANT` 或管理权限)。
4. **错误处理** :避免向客户端泄露数据库错误。使用通用错误消息并在服务器端记录详细错误。
5. **WAF / 速率限制** :作为临时缓解措施,实施 WAF 规则以检测常见 SQLi 模式,并实施速率限制以减缓大规模提取尝试。
6. **审计相关端点** :审查其他管理端点和参数是否存在类似的注入模式。
* * *
## 建议的 sqlmap 命令
_(为方便厂商/维护者而包含 — 请勿公开发布 PoC 载荷)_
root@kitploit:~
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
* * *
## 参考
* OWASP SQL 注入:https://owasp.org/www-community/attacks/SQL_Injection
* * *
## 联系方式 / 致谢
**发现者:** Hafiz Pradana Gemilang
* 邮箱:some-email@example.com
* GitHub:https://github.com/hafizgemilang/CVE-2025-52021
厂商 / 仓库:https://github.com/PuneethReddyHC/online-shopping-system-advanced
* * *
**免责声明:** 本公开公告省略了可利用的载荷以保护用户。完整的技术细节和 PoC 可根据商定的负责任披露政策应厂商要求提供。