Resumen

Durante una auditoría de seguridad sobre una aplicación web corporativa, se identificó una vulnerabilidad de SQL Injection en una cabecera HTTP no estándar. El valor de esta cabecera se insertaba directamente en una consulta a la base de datos sin ningún tipo de parametrización.

La inyección permitía ejecutar stacked queries y el usuario de la base de datos tenía privilegios de administrador, lo que habilitaba la ejecución de procedimientos almacenados del sistema.

Detalles técnicos

Vector de inyección

La aplicación web registraba el valor de ciertas cabeceras HTTP directamente en base de datos sin sanitización:

HTTP Request — Punto de inyección
GET /[REDACTED]/errors.aspx HTTP/2
Host: [REDACTED]
Cookie: [REDACTED]
X-Forwarded-For: [PAYLOAD]
User-Agent: Mozilla/5.0 ...

Confirmación de inyección (Time-based)

Se confirmó la vulnerabilidad utilizando payloads de tipo time-based que provocaban un delay cuando la condición evaluada era verdadera:

Payload — Time-based blind
X-Forwarded-For: [PREFIX]'); IF ([CONDITION]) WAITFOR DELAY '0:0:5'--

[+] Delay de 5 segundos detectado → Condicion TRUE

Privilegios elevados confirmados

Se verificó que el usuario de la conexión a base de datos tenía privilegios de administrador:

Resultado
[+] El usuario de la aplicación tiene privilegios de administrador de BD
[+] Stacked queries soportadas
[+] Múltiples bases de datos accesibles en el servidor

Ejecución de comandos

Al tener privilegios de administrador, se detectó que los procedimientos almacenados de ejecución de comandos del sistema estaban habilitados o podían habilitarse:

Indicios de RCE
X-Forwarded-For: [PREFIX]'); EXEC [stored_procedure] 'echo test';--

[!] Delay en la respuesta → Procedimiento de ejecución de comandos activo
Nota: La explotación se detuvo en este punto por tratarse de un sistema en producción. No se ejecutaron comandos destructivos ni se extrajeron datos reales. Se reportó inmediatamente al cliente como hallazgo crítico.

Impacto

  • Ejecución remota de comandos en el servidor de base de datos
  • Acceso completo a todas las bases de datos del servidor
  • Exfiltración de datos sensibles de la organización
  • Movimiento lateral potencial dentro de la red interna
  • Compromiso total del servidor y potencialmente del dominio

Remediación

  1. Parametrizar todas las consultas SQL — Nunca concatenar valores de cabeceras HTTP directamente en consultas. Usar prepared statements.
  2. Principio de minimo privilegio — El usuario de la aplicación no debe tener privilegios de administrador de BD.
  3. Deshabilitar procedimientos de ejecución de comandos si no son estrictamente necesarios.
  4. Sanitizar cabeceras HTTP — Validar y sanitizar cualquier valor de cabecera antes de procesarlo o almacenarlo.
  5. Revisar configuración del WAF — Asegurar que las reglas cubren inyecciónes en cabeceras no estándar.

Referencias