
Herramienta automatizada de enumeración de bases de datos NoSQL y explotación de aplicaciones web.
NoSQLMap es una herramienta de Python de código abierto diseñada para auditar y automatizar ataques de inyección, así como explotar configuraciones predeterminadas débiles en bases de datos NoSQL y aplicaciones web que usan NoSQL, con el objetivo de divulgar o clonar datos de la base de datos.
Originalmente creada por @tcsstool y ahora mantenida por @codingo_, NoSQLMap recibe su nombre como homenaje a la popular herramienta de inyección SQL de Bernardo Damele y Miroslav Stampar, sqlmap. Sus conceptos se basan y extienden la excelente presentación de Ming Chow en Defcon 21, "Abusing NoSQL Databases".

Una base de datos NoSQL (originalmente referida como "no SQL", "no relacional" o "no solo SQL") proporciona un mecanismo para almacenar y recuperar datos modelados de formas distintas a las relaciones tabulares utilizadas en las bases de datos relacionales. Dichas bases de datos existen desde finales de la década de 1960, pero no obtuvieron el apodo "NoSQL" hasta un aumento de popularidad a principios del siglo XXI, impulsado por las necesidades de empresas Web 2.0 como Facebook, Google y Amazon.com. Las bases de datos NoSQL se utilizan cada vez más en aplicaciones de big data y web en tiempo real. Los sistemas NoSQL también se denominan a veces "No solo SQL" para enfatizar que pueden admitir lenguajes de consulta similares a SQL.
Actualmente, los exploits de la herramienta se centran en MongoDB y CouchDB, pero se planea soporte adicional para otras plataformas NoSQL como Redis y Cassandra en futuras versiones.
En un sistema basado en Debian o Red Hat, el script setup.sh puede ejecutarse como root para automatizar la instalación de las dependencias de NoSQLMap.
Varía según las funciones utilizadas:
Hay otras bibliotecas variadas necesarias que una instalación normal de Python debería tener disponibles. Puede variar, consulte el script.
python setup.py install
Alternativamente, puede construir una imagen Docker ejecutando:
docker build -t nosqlmap .
o puede usar Docker-compose para ejecutar Nosqlmap:
docker-compose build
docker-compose run nosqlmap
Comience con
python NoSQLMap
NoSQLMap utiliza un sistema basado en menús para construir ataques. Al iniciar NoSQLMap se presenta el menú principal:
1-Establecer opciones (haga esto primero)
2-Ataques de acceso a bases de datos NoSQL
3-Ataques a aplicaciones web NoSQL
4-Escanear acceso anónimo a MongoDB
x-Salir
Explicación de las opciones:
1. Establecer host/IP objetivo - El servidor web objetivo (por ejemplo, www.google.com) o el servidor MongoDB que desea atacar.
2. Establecer puerto de la aplicación web - Puerto TCP para la aplicación web si el objetivo es una aplicación web.
3. Establecer ruta URI - La parte de la URI que contiene el nombre de la página y cualquier parámetro, pero NO el nombre del host (por ejemplo, /app/acct.php?acctid=102).
4. Establecer método de solicitud HTTP (GET/POST) - Establecer el método de solicitud en GET o POST; actualmente solo GET está implementado, pero se está trabajando en implementar solicitudes POST exportadas desde Burp.
5. Establecer mi IP local de Mongo/Shell - Configure esta opción si ataca directamente una instancia de MongoDB a la IP de una instalación de Mongo objetivo para clonar bases de datos de la víctima o abrir shells de Meterpreter.
6. Establecer puerto de escucha de shell - Si abre shells de Meterpreter, especifique el puerto.
7. Cargar archivo de opciones - Cargue un conjunto de configuraciones guardadas previamente para las opciones 1-6.
8. Cargar opciones desde una solicitud guardada de Burp - Analice una solicitud guardada de Burp Suite y complete las opciones de la aplicación web.
9. Guardar archivo de opciones - Guarde las configuraciones 1-6 para uso futuro.
x. Volver al menú principal - Use esto una vez que las opciones estén configuradas para iniciar sus ataques.
Una vez configuradas las opciones, vuelva al menú principal y seleccione "Ataques de acceso a bases de datos" o "Ataques a aplicaciones web" según corresponda, dependiendo de si ataca un puerto de administración NoSQL o una aplicación web. El resto de la herramienta se basa en "asistentes" y es bastante autoexplicativa, pero envíe correos electrónicos a [email protected] o encuéntreme en Twitter @codingo_ si tiene alguna pregunta o sugerencia.
Este repositorio también incluye una aplicación web intencionalmente vulnerable para probar NoSQLMap. Para ejecutar esta aplicación, necesita Docker instalado. Luego puede ejecutar los siguientes comandos desde el directorio /vuln_apps.
docker-compose build && docker-compose up
Una vez que eso esté completo, debería poder acceder a la aplicación vulnerable visitando: https://127.0.0.1:8080/index.html
La CLI también se puede scriptear. Aquí hay un ejemplo de script que usa NoSQLMap para detectar las vulnerabilidades en vuln_apps:
$ echo "1. Consulta de cuenta (acct.php)"
$ docker-compose run --remove-orphans nosqlmap \
--attack 2 \
--victim host.docker.internal \
--webPort 8080 \
--uri "/acct.php?acctid=test" \
--httpMethod GET \
--params 1 \
--injectSize 4 \
--injectFormat 2 \
--doTimeAttack n
$ echo "2. Consulta de datos de usuario (userdata.php) - Inyección JavaScript"
$ docker-compose run --remove-orphans nosqlmap \
--attack 2 \
--victim host.docker.internal \
--webPort 8080 \
--uri "/userdata.php?usersearch=test" \
--httpMethod GET \
--params 1 \
--injectSize 4 \
--injectFormat 2 \
--doTimeAttack n
$ echo "3. Consulta de datos de pedido (orderdata.php) - Inyección JavaScript"
$ docker-compose run --remove-orphans nosqlmap \
--attack 2 \
--victim host.docker.internal \
--webPort 8080 \
--uri "/orderdata.php?ordersearch=test" \
--httpMethod GET \
--params 1 \
--injectSize 4 \
--injectFormat 2 \
--doTimeAttack n