
Strumento automatizzato per l'enumerazione di database NoSQL e lo sfruttamento di applicazioni web.
NoSQLMap è uno strumento Python open source progettato per auditare e automatizzare attacchi di injection e sfruttare configurazioni predefinite deboli in database NoSQL e applicazioni web che usano NoSQL, al fine di divulgare o clonare dati dal database.
Originariamente scritto da @tcsstool e ora mantenuto da @codingo_, NoSQLMap prende il nome in omaggio al popolare strumento di SQL injection di Bernardo Damele e Miroslav Stampar, sqlmap. I suoi concetti sono basati ed estendono l'eccellente presentazione di Ming Chow al Defcon 21, "Abusing NoSQL Databases".

Un database NoSQL (originariamente riferito a "non SQL", "non relazionale" o "non solo SQL") fornisce un meccanismo per l'archiviazione e il recupero di dati che sono modellati in modo diverso dalle relazioni tabulari utilizzate nei database relazionali. Tali database esistono dalla fine degli anni '60, ma non hanno ottenuto il soprannome "NoSQL" fino a un'impennata di popolarità all'inizio del XXI secolo, innescata dalle esigenze di aziende Web 2.0 come Facebook, Google e Amazon.com. I database NoSQL sono sempre più utilizzati nei big data e nelle applicazioni web in tempo reale. I sistemi NoSQL sono anche talvolta chiamati "Not only SQL" per sottolineare che possono supportare linguaggi di query simili a SQL.
Attualmente gli exploit dello strumento sono incentrati su MongoDB e CouchDB, ma è previsto un supporto aggiuntivo per altre piattaforme NoSQL come Redis e Cassandra nelle versioni future.
Su un sistema basato su Debian o Red Hat, lo script setup.sh può essere eseguito come root per automatizzare l'installazione delle dipendenze di NoSQLMap.
Varia in base alle funzionalità utilizzate:
Ci sono alcune altre librerie varie richieste che una normale installazione Python dovrebbe avere prontamente disponibili. Il tuo chilometraggio può variare, controlla lo script.
python setup.py install
In alternativa puoi creare un'immagine Docker digitando:
docker build -t nosqlmap .
oppure puoi usare Docker-compose per eseguire Nosqlmap:
docker-compose build
docker-compose run nosqlmap
Inizia con
python NoSQLMap
NoSQLMap utilizza un sistema basato su menu per costruire attacchi. All'avvio di NoSQLMap ti viene presentato il menu principale:
1-Set options (fallo prima)
2-NoSQL DB Access Attacks
3-NoSQL Web App attacks
4-Scan for Anonymous MongoDB Access
x-Exit
Spiegazione delle opzioni:
1. Set target host/IP-Il server web di destinazione (es. www.google.com) o il server MongoDB che vuoi attaccare.
2. Set web app port-Porta TCP per l'applicazione web se il bersaglio è un'applicazione web.
3. Set URI Path-La parte dell'URI contenente il nome della pagina ed eventuali parametri ma NON il nome host (es. /app/acct.php?acctid=102).
4. Set HTTP Request Method (GET/POST)-Imposta il metodo di richiesta a GET o POST; attualmente è implementato solo GET ma stiamo lavorando per implementare richieste POST esportate da Burp.
5. Set my local Mongo/Shell IP-Imposta questa opzione se attacchi direttamente un'istanza MongoDB all'IP di un'installazione MongoDB di destinazione per clonare i database vittima o aprire shell Meterpreter.
6. Set shell listener port-Se apri shell Meterpreter, specifica la porta.
7. Load options file-Carica un set di impostazioni salvato in precedenza per 1-6.
8. Load options from saved Burp request-Analizza una richiesta salvata da Burp Suite e popola le opzioni dell'applicazione web.
9. Save options file-Salva le impostazioni 1-6 per uso futuro.
x. Back to main menu-Utilizza questa opzione una volta impostate le opzioni per avviare i tuoi attacchi.
Una volta impostate le opzioni, torna al menu principale e seleziona DB access attacks o web app attacks a seconda che tu stia attaccando una porta di gestione NoSQL o un'applicazione web. Il resto dello strumento è basato su "procedure guidate" ed è abbastanza autoesplicativo, ma invia email a [email protected] o trovami su Twitter @codingo_ se hai domande o suggerimenti.
Questo repository include anche un'applicazione web deliberatamente vulnerabile per testare NoSQLMap. Per eseguire questa applicazione, è necessario aver installato Docker. Quindi puoi eseguire i seguenti comandi dalla directory /vuln_apps.
docker-compose build && docker-compose up
Una volta completato, dovresti essere in grado di accedere all'applicazione vulnerabile visitando: https://127.0.0.1:8080/index.html
La CLI può anche essere scriptata. Ecco un esempio di script che utilizza NoSQLMap per rilevare le vulnerabilità in vuln_apps:
$ echo "1. Account Lookup (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. User Data Lookup (userdata.php) - JavaScript Injection"
$ 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. Order Data Lookup (orderdata.php) - JavaScript Injection"
$ 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