Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas de la comunidad **más avanzadas del mundo**.\
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Las bases de datos NoSQL proporcionan restricciones de consistencia más flexibles que las bases de datos SQL tradicionales. Al requerir menos restricciones relacionales y comprobaciones de consistencia, las bases de datos NoSQL a menudo ofrecen beneficios de rendimiento y escalabilidad. Sin embargo, estas bases de datos aún son potencialmente vulnerables a ataques de inyección, incluso si no están utilizando la sintaxis SQL tradicional.
MongoDB es una base de datos NoSQL que utiliza documentos JSON para almacenar datos. A diferencia de las bases de datos SQL, MongoDB no utiliza tablas y filas, sino que almacena los datos en documentos JSON.
La inyección NoSQL es similar a la inyección SQL, pero en lugar de manipular sentencias SQL, se manipulan objetos JSON. La inyección NoSQL puede ocurrir cuando se utiliza una entrada de usuario no validada para construir una consulta MongoDB.
En este ejemplo, se utiliza el operador `$ne` para buscar documentos donde el campo `username` no sea igual a `admin` y el campo `password` no sea igual a `1234`. Si el código que procesa esta entrada de usuario no valida adecuadamente los datos de entrada, un atacante podría manipular la consulta para obtener acceso no autorizado a la base de datos.
Para evitar la inyección NoSQL, es importante validar y sanitizar adecuadamente todas las entradas de usuario antes de utilizarlas en una consulta MongoDB.
MongoDB es una base de datos NoSQL muy popular. A diferencia de las bases de datos SQL, MongoDB no utiliza tablas para almacenar datos, sino que utiliza documentos JSON. Los documentos JSON se almacenan en colecciones, que son similares a las tablas en las bases de datos SQL.
#### **Inyección NoSQL**
La inyección NoSQL es similar a la inyección SQL, pero en lugar de aprovechar las vulnerabilidades de las consultas SQL, se aprovechan las vulnerabilidades de las consultas NoSQL. La inyección NoSQL se produce cuando se introduce código malicioso en una consulta NoSQL, lo que permite al atacante acceder a datos que no debería tener acceso.
#### **Ejemplo de Inyección NoSQL**
Supongamos que tenemos una aplicación web que utiliza MongoDB para almacenar información de usuarios. La aplicación permite a los usuarios iniciar sesión utilizando su nombre de usuario y contraseña. La consulta para comprobar si el usuario y la contraseña son correctos podría ser la siguiente:
Esta consulta devuelve todos los documentos de la colección `users` donde el nombre de usuario es verdadero (ya que `|| 1==1` siempre es verdadero) y la contraseña coincide con cualquier valor (ya que `this.password.match(/.*/)` siempre es verdadero).
Usando el operador **$func** de la librería [MongoLite](https://github.com/agentejo/cockpit/tree/0.11.1/lib/MongoLite) (usada por defecto), es posible ejecutar una función arbitraria como se muestra en [este informe](https://swarm.ptsecurity.com/rce-cockpit-cms/).
Es posible utilizar [**$lookup**](https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/) para obtener información de una colección diferente. En el siguiente ejemplo, estamos leyendo desde una **colección diferente** llamada **`users`** y obteniendo los **resultados de todas las entradas** con una contraseña que coincide con un comodín.
La inyección NoSQL a ciegas es una técnica de inyección de código malicioso en una base de datos NoSQL que aprovecha la falta de validación de entrada en la consulta de la base de datos. Esta técnica se utiliza para extraer información confidencial de la base de datos, como credenciales de usuario, contraseñas, información de tarjetas de crédito, etc.
La inyección NoSQL a ciegas se produce cuando un atacante introduce una consulta maliciosa en un campo de entrada de una aplicación web que utiliza una base de datos NoSQL. La consulta maliciosa se ejecuta en la base de datos y devuelve información confidencial al atacante.
Para prevenir la inyección NoSQL a ciegas, se deben implementar medidas de seguridad adecuadas, como la validación de entrada y la sanitización de datos. Además, se deben utilizar consultas parametrizadas en lugar de concatenar cadenas de consulta.
En resumen, la inyección NoSQL a ciegas es una técnica peligrosa que puede permitir a un atacante acceder a información confidencial en una base de datos NoSQL. Es importante implementar medidas de seguridad adecuadas para prevenir este tipo de ataques.
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas de la comunidad más avanzadas del mundo.\