Inyección LDAP
Input del usuario insertado en filtros de búsqueda LDAP sin escapar, permitiendo a atacantes manipular queries de directorio, bypassear autenticación o extraer datos sensibles del directorio.
Cómo Funciona
Los filtros LDAP usan caracteres especiales como `*`, `(`, `)`, `\` y `NUL`. Si construyes un string de filtro concatenando input del usuario, un atacante puede inyectar estos caracteres para alterar la query. Un bypass de login se ve así: username = `*)(uid=*))(|(uid=*` que convierte una búsqueda específica en 'coincide con todo'.
// MAL: input del usuario directo en el filtro LDAP
const filter = `(uid=${username})`; // username = '*)(uid=*))(|(uid=*'
const result = await ldapClient.search('dc=ejemplo,dc=com', { filter });// BIEN: escapa los caracteres especiales LDAP
function escapeLdap(input: string): string {
return input.replace(/[\\*()\x00]/g, (c) => `\\${c.charCodeAt(0).toString(16).padStart(2, '0')}`);
}
const filter = `(uid=${escapeLdap(username)})`;Ejemplo Real
Las apps empresariales que usan Active Directory u OpenLDAP para autenticación son objetivos comunes. Una inyección LDAP en el formulario de login puede permitir a un atacante autenticarse como cualquier usuario, incluyendo administradores, manipulando el filtro de búsqueda.
Cómo Prevenirlo
- Escapa todos los caracteres especiales LDAP antes de construir strings de filtro (usa el escaping integrado de ldapjs)
- Usa queries LDAP parametrizadas donde tu librería las soporte
- Valida el formato del username (solo alfanumérico) antes de usarlo en cualquier query
- Aplica el principio de mínimo privilegio a la cuenta de servicio LDAP usada por tu app
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
XXE — Inyección de Entidad Externa XML
highParsers XML configurados para procesar referencias a entidades externas, permitiendo a atacantes leer archivos arbitrarios del servidor o disparar SSRF con un payload XML malicioso.
Inyección de Header HTTP (Inyección CRLF)
mediumInput controlado por el usuario incluido en headers de respuesta HTTP sin sanitizar, permitiendo a atacantes inyectar headers arbitrarios o dividir la respuesta en dos respuestas HTTP separadas.
Inyección de Header de Email
mediumInput del usuario sin sanitizar usado en los campos To, From, CC o Subject del email, permitiendo a atacantes inyectar destinatarios adicionales y convertir tu servidor de email en un relay de spam.
Inyección en Logs
lowInput provisto por el usuario escrito en logs sin sanitizar, permitiendo a atacantes falsificar entradas de log, ocultar sus huellas o inyectar contenido malicioso en archivos de log.