
Herramienta CLI de inyección NoSQL, para encontrar sitios web vulnerables usando MongoDB.
Un escáner e inyector NoSQL rápido. Para encontrar sitios vulnerables a inyección NoSQL, particularmente Mongo.
Quería una mejor herramienta de inyección NoSQL que fuera simple de usar, completamente basada en línea de comandos y configurable. Con ese fin, comencé a trabajar en nosqli, una herramienta simple de inyección NoSQL escrita en Go.
Su objetivo es ser rápida, precisa y altamente usable, con una interfaz de línea de comandos fácil de entender.
Nosqli actualmente soporta detección de inyección NoSQL para MongoDB. Ejecuta las siguientes pruebas:
Descarga la última versión binaria para tu sistema operativo e instálala en tu PATH, o ejecútala desde una carpeta local.
Planeo agregar funciones de extracción de datos. Si deseas ver otras características u opciones de configuración, ¡por favor abre un pull request o un issue!
Debería ser auto-documentado simplemente ejecutando el comando y leyendo los archivos de ayuda.
$ nosqli
NoSQLInjector is a CLI tool for testing Datastores that
do not depend on SQL as a query language.
nosqli aims to be a simple automation tool for identifying and exploiting
NoSQL Injection vectors.
Usage:
nosqli [command]
Available Commands:
help Help about any command
scan Scan endpoint for NoSQL Injection vectors
version Prints the current version
Flags:
--config string config file (default is $HOME/.nosqli.yaml)
-d, --data string Specify default post data (should not include any injection strings)
-h, --help help for nosqli
-p, --proxy string Proxy requests through this proxy URL. Defaults to HTTP_PROXY environment variable.
-r, --request string Load in a request from a file, such as a request generated in Burp or ZAP.
-t, --target string target url eg. http://site.com/page?arg=1
-u, --user-agent string Specify a user agent
Use "nosqli [command] --help" for more information about a command.
$ nosqli scan -t http://localhost:4000/user/lookup?username=test
Running Error based scan...
Running Boolean based scan...
Found Error based NoSQL Injection:
URL: http://localhost:4000/user/lookup?=&username=test
param: username
Injection: username='
Puedes probar la herramienta usando mi aplicación vulnerable de Node.js, u otros laboratorios de inyección NoSQL.
Al seleccionar la URL objetivo, asegúrate de que todos los parámetros probables estén presentes en la URL. Por ejemplo, supongamos que un sitio tiene una página en /user/lookup con un formulario de búsqueda. Después de ingresar algunos datos en el campo, la URL cambia a /user/lookup?username=. Si escaneas solo /user/lookup, la herramienta no encontrará posibles inyecciones. Para escanear correctamente, asegúrate de usar la URL completa con todos los parámetros (/user/lookup?username= en este caso).
Si prefieres compilar desde el código fuente, o no hay un binario compilado para tu plataforma, puedes hacerlo clonando el repositorio, instalando las dependencias y compilando el proyecto manualmente. Esto requerirá una versión reciente de Go y la variable de entorno GOPATH adecuada.
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
Se incluye un conjunto de pruebas decente. Las pruebas unitarias junto con la cobertura de inyecciones simples se pueden ejecutar usando go test desde el directorio raíz:
go test ./...
También hay pruebas de integración disponibles que ejecutan inyecciones contra aplicaciones vulnerables conocidas que se ejecutan localmente. Para usar las pruebas de integración, instala y ejecuta la aplicación vulnerable de inyección Mongo en Node.js y mi fork del laboratorio PHP vulnerable de digininja. ¡Recuerda navegar a cada sitio y restablecer la base de datos! Luego pasa la bandera de integraciones:
go test ./... -args -integrations=true
Si no se encuentra alguno de los entornos, las pruebas de integración serán desactivadas por uno de los casos de prueba para acelerar la ejecución.
¡Las contribuciones son bienvenidas! Por favor envía un pull request o abre un issue para discutir.
A menos que especifiques lo contrario, se entiende que estás ofreciendo al proyecto nosqli el derecho ilimitado y no exclusivo de reutilizar, modificar y relicenciar el código que contribuyas. Este proyecto siempre estará disponible como código abierto, pero esto es importante porque la imposibilidad de relicenciar el código ha causado problemas devastadores para otros proyectos de software libre (como KDE y NASM). Si deseas especificar condiciones de licencia especiales para tus contribuciones, solo dínoslo cuando las envíes.