
Advisory and proof-of-concept for a time-based blind SQL injection vulnerability in an online shopping system, including technical details, impact analysis, and remediation recommendations.
CVE: CVE-2025-52021
Title: Time-Based Blind SQL Injection via product_id parameter in edit_product.php
Vendor / Repo: PuneethReddyHC — https://github.com/PuneethReddyHC/online-shopping-system-advanced
Affected Version: 1.0 (branch/tag master at time of testing)
Discoverer: Hafiz Pradana Gemilang
Disclosure status: Vendor notified privately. Full exploit PoC withheld from public disclosure for user safety.
A time-based blind SQL injection vulnerability was found in admin/admin/edit_product.php of the Online Shopping System Advanced v1.0. The product_id GET parameter is interpolated into a SQL query without proper validation or parameterization. An attacker can inject time-delay functions (e.g. ) to observe server response delays and infer database behavior, confirming a remote SQL injection point.
SLEEPNote: This advisory intentionally excludes a runnable exploit payload. Proof-of-concept details have been shared privately with the maintainer to allow remediation.
/admin/admin/edit_product.php?product_id=<value>
Example local testing 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 parameter and include it in a SQL statement without parameterization.Timing-based injection attempts using database SLEEP() semantics produced measurable server-side delays consistent with successful injection:
SLEEP(6) → observed response delay ≈ 6.01sSLEEP(15) → observed response delay ≈ 15.00sSLEEP(0) → baseline response delay ≈ 0.01sThese results indicate a blind SQL injection point that permits time-based inference. The database name observed during testing: onlineshop.
Successful exploitation of this vulnerability allows attackers to:
Estimated severity: High
product_id parameter that includes time-delay SQL constructs (testing performed with SLEEP() variations).Full step-by-step PoC omitted from public advisory — contact the reporter for encrypted PoC under responsible disclosure terms.
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
product_id as an integer and validate accordingly (e.g. filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT)).DROP, ALTER, GRANT, or administrative rights).(Included for vendor/maintainer convenience — do not publish PoC payloads publicly)
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
Discoverer: Hafiz Pradana Gemilang
Disclaimer: This public advisory omits exploitable payloads to protect users. Full technical details and PoC are available to the vendor upon request under an agreed responsible disclosure policy.