Sploitus

Exploit for CVE-2025-52021

kitploit · 2026-09-03

Exploit Code

MARKDOWN145 lines
## 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 可根据商定的负责任披露政策应厂商要求提供。