
Advisory e proof-of-concept per una vulnerabilità di SQL injection blind basata sul tempo in un sistema di shopping online, inclusi dettagli tecnici, analisi dell'impatto e raccomandazioni di remediation.
CVE: CVE-2025-52021
Titolo: SQL Injection cieca basata sul tempo tramite il parametro product_id in edit_product.php
Vendor / Repo: PuneethReddyHC — https://github.com/PuneethReddyHC/online-shopping-system-advanced
Versione interessata: 1.0 (branch/tag master al momento del test)
Scopritore: Hafiz Pradana Gemilang
Stato della divulgazione: Vendor informato privatamente. PoC di sfruttamento completo non divulgato pubblicamente per la sicurezza degli utenti.
È stata trovata una vulnerabilità di SQL injection cieca basata sul tempo in admin/admin/edit_product.php di Online Shopping System Advanced v1.0. Il parametro GET product_id viene interpolato in una query SQL senza una validazione o parametrizzazione adeguata. Un attaccante può iniettare funzioni di ritardo temporale (es. ) per osservare i ritardi di risposta del server e dedurre il comportamento del database, confermando un punto di injection SQL remoto.
SLEEPNota: questo advisory esclude intenzionalmente un payload di sfruttamento eseguibile. I dettagli della proof-of-concept sono stati condivisi privatamente con il maintainer per consentire la correzione.
/admin/admin/edit_product.php?product_id=<valore>
Esempio di URL di test locale:
http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0
product_id (GET)admin/admin/edit_product.phpproduct_id e includerlo in un'istruzione SQL senza parametrizzazione.I tentativi di injection basati sulla temporizzazione utilizzando la semantica SLEEP() del database hanno prodotto ritardi misurabili lato server coerenti con un'injection riuscita:
SLEEP(6) → ritardo di risposta osservato ≈ 6.01sSLEEP(15) → ritardo di risposta osservato ≈ 15.00sSLEEP(0) → ritardo di risposta di base ≈ 0.01sQuesti risultati indicano un punto di SQL injection cieca che consente l'inferenza basata sul tempo. Nome del database osservato durante i test: onlineshop.
Lo sfruttamento riuscito di questa vulnerabilità consente agli attaccanti di:
Severità stimata: Alta
product_id che includa costrutti SQL con ritardo temporale (test eseguiti con variazioni di SLEEP()).La PoC completa passo-passo è omessa dall'advisory pubblico — contattare il reporter per una PoC cifrata secondo i termini di divulgazione responsabile.
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
product_id come un intero e validarlo di conseguenza (es. filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT)).DROP, ALTER, GRANT o diritti amministrativi).(Incluso per comodità del vendor/maintainer — non pubblicare payload PoC pubblicamente)
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
Scopritore: Hafiz Pradana Gemilang
Disclaimer: Questo advisory pubblico omette payload sfruttabili per proteggere gli utenti. I dettagli tecnici completi e la PoC sono disponibili al vendor su richiesta secondo una politica di divulgazione responsabile concordata.