SQL Injection Avanzado: Exfiltración de Datos vía UNION

Publicado el 2026-02-21

Cuando una inyección SQL ocurre en una sentencia SELECT y los resultados de dicha consulta se reflejan en la respuesta HTTP (In-band SQLi), es posible utilizar el operador UNION para combinar los resultados de la consulta original con los resultados de una consulta inyectada arbitraria.

Requisitos Técnicos para UNION SQLi

Para que un ataque UNION sea exitoso, deben cumplirse dos condiciones estrictas:

  1. La consulta inyectada debe devolver el mismo número de columnas que la consulta original.
  2. Los tipos de datos de las columnas correspondientes deben ser compatibles.

Metodología de Explotación

  1. Detección y Fuzzing: Identificar el punto de inyección (ej. buscador de usuarios) mediante caracteres especiales (', ").
  2. Enumeración de Columnas: Utilizar la cláusula ORDER BY para determinar el número de columnas proyectadas.
    ' ORDER BY 1 -- - (Éxito)
    ' ORDER BY 5 -- - (Fallo -> Error 500 o mensaje de error SQL).
  3. Identificación de Columnas Visibles: Inyectar UNION SELECT 1, 2, ... -- - para ver qué números se reflejan en la interfaz.
  4. Exfiltración: Reemplazar los números visibles por funciones de base de datos o consultas a tablas del sistema (information_schema).
    Payload: ' UNION SELECT 1, @@version -- -

Automatización

Herramientas como SQLMap automatizan este proceso de inferencia y extracción, permitiendo volcar bases de datos completas (Database Dump) en minutos.