
Strumento CLI per NoSql Injection, per trovare siti web vulnerabili usando MongoDB.
Uno scanner e injector NoSQL veloce. Per trovare siti vulnerabili all'iniezione NoSQL, in particolare Mongo.
Volevo uno strumento di iniezione nosql migliore, semplice da usare, completamente basato su riga di comando e configurabile. A tal fine, ho iniziato a lavorare su nosqli, un semplice strumento di iniezione nosql scritto in Go.
Il suo obiettivo è essere veloce, preciso e altamente utilizzabile, con un'interfaccia a riga di comando facile da capire.
Attualmente Nosqli supporta il rilevamento di iniezioni nosql per Mongodb. Esegue i seguenti test:
Scarica l'ultima versione binaria per il tuo sistema operativo e installala nel tuo PATH, oppure eseguila da una cartella locale.
Ho intenzione di aggiungere funzionalità di estrazione dati. Se desideri vedere altre funzionalità o opzioni di configurazione, apri una pull request o un issue!
Dovrebbe essere auto-documentato semplicemente eseguendo il comando e leggendo i file di aiuto.
$ nosqli
NoSQLInjector è uno strumento CLI per testare Datastores che
non dipendono da SQL come linguaggio di query.
nosqli mira a essere un semplice strumento di automazione per identificare e sfruttare
vettori di iniezione NoSQL.
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='
Puoi testare lo strumento usando la mia app node js vulnerabile, o altri laboratori di iniezione nosql.
Quando selezioni l'URL di destinazione, assicurati che tutti i parametri testabili siano presenti nell'URL. Ad esempio, supponiamo che un sito abbia una pagina su /user/lookup con un modulo di ricerca. Dopo aver inserito alcuni dati nel campo, l'URL cambia in /user/lookup?username=. Se esegui la scansione solo di /user/lookup, lo strumento non troverà possibili iniezioni. Per eseguire la scansione correttamente, assicurati che venga utilizzato l'URL completo con tutti i parametri (in questo caso /user/lookup?username=).
Se preferisci compilare dal sorgente, o non è disponibile un binario compilato per la tua piattaforma, puoi farlo clonando il repository, installando le dipendenze e compilando il progetto manualmente. Ciò richiede una versione recente di Go e la variabile d'ambiente GOPATH appropriata.
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
È inclusa una buona suite di test. I test unitari insieme a una semplice copertura di iniezione possono essere eseguiti utilizzando go test dalla directory principale:
go test ./...
Sono disponibili anche test di integrazione che eseguono iniezioni contro app vulnerabili conosciute in esecuzione localmente. Per utilizzare i test di integrazione, installa ed esegui l'app nodejs Mongo vulnerabile e il mio fork del lab PHP vulnerabile da digininja. Ricorda di navigare su ogni sito e resettare il DB! Quindi passa il flag di integrazioni:
go test ./... -args -integrations=true
Se uno dei due ambienti non viene trovato, i test di integrazione verranno disabilitati da uno dei casi di test, per velocizzare l'esecuzione dei test.
I contributi sono benvenuti! Invia una pull request o apri un issue per discutere.
Salvo diversa indicazione, si intende che offri al progetto nosqli il diritto illimitato e non esclusivo di riutilizzare, modificare e ri-licenziare il codice che contribuisci. Questo progetto sarà sempre disponibile come Open Source, ma questo è importante perché l'incapacità di ri-licenziare il codice ha causato problemi devastanti per altri progetti di Software Libero (come KDE e NASM). Se desideri specificare condizioni di licenza speciali per i tuoi contributi, comunicacelo quando li invii.