
Aviso y prueba de concepto para una vulnerabilidad de inyección SQL ciega basada en tiempo en un sistema de compras en línea, incluyendo detalles técnicos, análisis de impacto y recomendaciones de remediación.
CVE: CVE-2025-52021
Título: Inyección SQL Ciega Basada en Tiempo a través del parámetro product_id en edit_product.php
Vendor / Repo: PuneethReddyHC — https://github.com/PuneethReddyHC/online-shopping-system-advanced
Versión afectada: 1.0 (rama/etiqueta master en el momento de las pruebas)
Descubridor: Hafiz Pradana Gemilang
Estado de divulgación: Vendor notificado de forma privada. El PoC completo del exploit se omite de la divulgación pública por seguridad del usuario.
Se encontró una vulnerabilidad de inyección SQL ciega basada en tiempo en admin/admin/edit_product.php de Online Shopping System Advanced v1.0. El parámetro GET product_id se interpola en una consulta SQL sin validación ni parametrización adecuadas. Un atacante puede inyectar funciones de retardo temporal (p. ej. ) para observar los retrasos en la respuesta del servidor e inferir el comportamiento de la base de datos, confirmando un punto remoto de inyección SQL.
SLEEPNota: Este aviso excluye intencionalmente un payload de exploit ejecutable. Los detalles de la prueba de concepto se han compartido de forma privada con el mantenedor para permitir la remediación.
/admin/admin/edit_product.php?product_id=<valor>
URL de prueba local de ejemplo:
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 incluirlo en una sentencia SQL sin parametrización.Los intentos de inyección basados en temporización utilizando la semántica de SLEEP() de la base de datos produjeron retardos medibles en el servidor, consistentes con una inyección exitosa:
SLEEP(6) → retardo de respuesta observado ≈ 6.01sSLEEP(15) → retardo de respuesta observado ≈ 15.00sSLEEP(0) → retardo de respuesta base ≈ 0.01sEstos resultados indican un punto de inyección SQL ciega que permite la inferencia basada en tiempo. El nombre de la base de datos observado durante las pruebas: onlineshop.
La explotación exitosa de esta vulnerabilidad permite a los atacantes:
Severidad estimada: Alta
product_id que incluya construcciones SQL de retardo temporal (las pruebas se realizaron con variaciones de SLEEP()).El PoC paso a paso completo se omite del aviso público — contacte al informante para obtener el PoC cifrado bajo los términos de divulgación responsable.
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
product_id como un entero y validarlo en consecuencia (p. ej. filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT)).DROP, ALTER, GRANT o derechos administrativos).(Incluido para conveniencia del vendor/mantenedor — no publicar payloads de PoC públicamente)
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
Descubridor: Hafiz Pradana Gemilang
Aviso legal: Este aviso público omite payloads explotables para proteger a los usuarios. Los detalles técnicos completos y el PoC están disponibles para el vendor bajo solicitud, de acuerdo con una política de divulgación responsable acordada.