
Outil automatisé d'énumération de bases de données NoSQL et d'exploitation d'applications web.
NoSQLMap est un outil Python open source conçu pour auditer, automatiser les attaques par injection et exploiter les faiblesses de configuration par défaut des bases de données NoSQL et des applications web utilisant NoSQL, afin de divulguer ou cloner les données de la base.
Initialement créé par @tcsstool et désormais maintenu par @codingo_, NoSQLMap doit son nom à un hommage à l'outil d'injection SQL populaire sqlmap de Bernardo Damele et Miroslav Stampar. Ses concepts s'appuient sur et étendent l'excellente présentation de Ming Chow à la Defcon 21, "Abusing NoSQL Databases".
NoSQLMap MongoDB Management Attack Demo

Une base de données NoSQL (à l'origine « non SQL » , « non relationnelle » ou « pas seulement SQL ») fournit un mécanisme de stockage et de récupération de données qui est modélisé par d'autres moyens que les relations tabulaires utilisées dans les bases de données relationnelles. De telles bases existent depuis la fin des années 1960, mais n'ont obtenu le surnom de « NoSQL » qu'avec une montée en popularité au début du XXIe siècle, déclenchée par les besoins d'entreprises Web 2.0 telles que Facebook, Google et Amazon.com. Les bases NoSQL sont de plus en plus utilisées dans les applications big data et web en temps réel. On appelle parfois les systèmes NoSQL « Not only SQL » pour souligner qu'ils peuvent prendre en charge des langages de requête de type SQL.
Actuellement, les exploits de l'outil sont centrés sur MongoDB et CouchDB, mais une prise en charge supplémentaire pour d'autres plates-formes NoSQL telles que Redis et Cassandra est prévue dans les futures versions.
Sur un système basé sur Debian ou Red Hat, le script setup.sh peut être exécuté en tant que root pour automatiser l'installation des dépendances de NoSQLMap.
Varie selon les fonctionnalités utilisées :
D'autres bibliothèques diverses, normalement disponibles dans une installation Python classique, peuvent être nécessaires. L'expérience peut varier, consultez le script.
python setup.py install
Vous pouvez aussi construire une image Docker en tapant :
docker build -t nosqlmap .
ou utiliser Docker-compose pour exécuter Nosqlmap :
docker-compose build
docker-compose run nosqlmap
Commencez par
python NoSQLMap
NoSQLMap utilise un système de menus pour construire les attaques. Au démarrage de NoSQLMap, le menu principal s'affiche :
1-Set options (do this first)
2-NoSQL DB Access Attacks
3-NoSQL Web App attacks
4-Scan for Anonymous MongoDB Access
x-Exit
Explication des options :
1. Set target host/IP-Définit le serveur web cible (ex. www.google.com) ou le serveur MongoDB que vous souhaitez attaquer.
2. Set web app port-Port TCP pour l'application web si celle-ci est la cible.
3. Set URI Path-Partie de l'URI contenant le nom de la page et les paramètres, mais PAS le nom d'hôte (ex. /app/acct.php?acctid=102).
4. Set HTTP Request Method (GET/POST)-Définit la méthode de requête GET ou POST ; actuellement seule GET est implémentée, mais nous travaillons sur l'implémentation des requêtes POST exportées depuis Burp.
5. Set my local Mongo/Shell IP-Définit cette option si vous attaquez directement une instance MongoDB, vers l'IP d'une installation MongoDB cible pour cloner les bases de données victimes ou ouvrir des shells Meterpreter.
6. Set shell listener port-Si vous ouvrez des shells Meterpreter, spécifiez le port.
7. Load options file-Charge un fichier de paramètres précédemment sauvegardé pour les options 1 à 6.
8. Load options from saved Burp request-Analyse une requête sauvegardée depuis Burp Suite et remplit les options de l'application web.
9. Save options file-Sauvegarde les paramètres 1 à 6 pour une utilisation future.
x. Back to main menu-Utilisez cette option une fois les paramètres définis pour lancer vos attaques.
Une fois les options définies, revenez au menu principal et sélectionnez les attaques DB access ou web app selon que vous attaquez un port de gestion NoSQL ou une application web. Le reste de l'outil est basé sur un « assistant » et assez explicite, mais envoyez des emails à [email protected] ou retrouvez-moi sur Twitter @codingo_ si vous avez des questions ou suggestions.
Ce dépôt inclut également une application web intentionnellement vulnérable pour tester NoSQLMap. Pour l'exécuter, vous devez avoir Docker installé. Ensuite, exécutez les commandes suivantes depuis le répertoire /vuln_apps.
docker-compose build && docker-compose up
Une fois terminé, vous devriez pouvoir accéder à l'application vulnérable en visitant : https://127.0.0.1:8080/index.html
La CLI peut également être scriptée. Voici un exemple de script utilisant NoSQLMap pour détecter les vulnérabilités dans 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