
Automatisiertes Tool zur NoSQL-Datenbank-Enumeration und Webanwendungs-Exploitation.
NoSQLMap ist ein Open-Source-Python-Tool, das darauf ausgelegt ist, Injection-Angriffe zu auditieren und zu automatisieren sowie Standardkonfigurationsschwachstellen in NoSQL-Datenbanken und Webanwendungen, die NoSQL verwenden, auszunutzen, um Daten aus der Datenbank zu offenlegen oder zu klonen.
Ursprünglich von @tcsstool entwickelt und jetzt von @codingo_ gewartet, ist NoSQLMap als Hommage an Bernardo Damele und Miroslav Stampars beliebtes SQL-Injection-Tool sqlmap benannt. Seine Konzepte basieren auf und erweitern Ming Chows hervorragende Präsentation auf der Defcon 21, "Abusing NoSQL Databases".
NoSQLMap MongoDB Management Angriff Demo

Eine NoSQL-Datenbank (ursprünglich für "non SQL", "non relational" oder "not only SQL" stehend) bietet einen Mechanismus zur Speicherung und zum Abruf von Daten, der auf andere Weise modelliert ist als die tabellarischen Beziehungen in relationalen Datenbanken. Solche Datenbanken existieren seit Ende der 1960er Jahre, erhielten jedoch den Namen "NoSQL" erst mit einem Popularitätsschub im frühen 21. Jahrhundert, ausgelöst durch die Bedürfnisse von Web-2.0-Unternehmen wie Facebook, Google und Amazon.com. NoSQL-Datenbanken werden zunehmend in Big-Data- und Echtzeit-Webanwendungen eingesetzt. NoSQL-Systeme werden manchmal auch als "Not only SQL" bezeichnet, um zu betonen, dass sie SQL-ähnliche Abfragesprachen unterstützen können.
Derzeit konzentrieren sich die Exploits des Tools auf MongoDB und CouchDB, aber die zusätzliche Unterstützung für andere NoSQL-basierte Plattformen wie Redis und Cassandra ist für zukünftige Versionen geplant.
Auf einem Debian- oder Red-Hat-basierten System kann das Skript setup.sh als root ausgeführt werden, um die Installation der Abhängigkeiten von NoSQLMap zu automatisieren.
Variiert je nach verwendeten Funktionen:
Es gibt einige andere Bibliotheken, die erforderlich sind und die eine normale Python-Installation normalerweise bereitstellt. Ihre Erfahrung kann abweichen, überprüfen Sie das Skript.
python setup.py install
Alternativ können Sie ein Docker-Image erstellen, indem Sie eingeben:
docker build -t nosqlmap .
oder Sie können Docker-Compose verwenden, um Nosqlmap auszuführen:
docker-compose build
docker-compose run nosqlmap
Beginnen Sie mit
python NoSQLMap
NoSQLMap verwendet ein menübasiertes System zum Erstellen von Angriffen. Beim Start von NoSQLMap wird Ihnen das Hauptmenü angezeigt:
1-Optionen festlegen (zuerst tun)
2-NoSQL-Datenbankzugriffsangriffe
3-NoSQL-Web-App-Angriffe
4-Nach anonymem MongoDB-Zugriff scannen
x-Beenden
Erklärung der Optionen:
1. Zielhost/IP festlegen - Der Ziel-Webserver (z.B. www.google.com) oder MongoDB-Server, den Sie angreifen möchten.
2. Web-App-Port festlegen - TCP-Port für die Webanwendung, wenn eine Webanwendung das Ziel ist.
3. URI-Pfad festlegen - Der Teil der URI, der den Seitennamen und alle Parameter enthält, aber NICHT den Hostnamen (z.B. /app/acct.php?acctid=102).
4. HTTP-Anforderungsmethode festlegen (GET/POST) - Legen Sie die Anforderungsmethode auf GET oder POST fest; derzeit ist nur GET implementiert, aber die Implementierung von POST-Anforderungen, die aus Burp exportiert wurden, ist in Arbeit.
5. Meine lokale Mongo/Shell-IP festlegen - Setzen Sie diese Option, wenn Sie eine MongoDB-Instanz direkt angreifen, auf die IP einer Ziel-Mongo-Installation, um Opferdatenbanken zu klonen oder Meterpreter-Shells zu öffnen.
6. Shell-Listener-Port festlegen - Wenn Sie Meterpreter-Shells öffnen, geben Sie den Port an.
7. Optionen-Datei laden - Laden Sie einen zuvor gespeicherten Satz von Einstellungen für 1-6.
8. Optionen aus gespeicherter Burp-Anfrage laden - Analysieren Sie eine aus Burp Suite gespeicherte Anfrage und füllen Sie die Webanwendungsoptionen aus.
9. Optionen-Datei speichern - Speichern Sie die Einstellungen 1-6 für die zukünftige Verwendung.
x. Zurück zum Hauptmenü - Verwenden Sie dies, sobald die Optionen festgelegt sind, um Ihre Angriffe zu starten.
Sobald die Optionen festgelegt sind, gehen Sie zurück zum Hauptmenü und wählen Sie DB-Zugriffsangriffe oder Web-App-Angriffe, je nachdem, ob Sie einen NoSQL-Verwaltungsport oder eine Webanwendung angreifen. Der Rest des Tools ist "wizard"-basiert und weitgehend selbsterklärend, aber senden Sie E-Mails an [email protected] oder finden Sie mich auf Twitter @codingo_, wenn Sie Fragen oder Vorschläge haben.
Dieses Repository enthält auch eine absichtlich verwundbare Webanwendung, um NoSQLMap zu testen. Um diese Anwendung auszuführen, benötigen Sie Docker. Dann können Sie die folgenden Befehle aus dem Verzeichnis /vuln_apps ausführen.
docker-compose build && docker-compose up
Sobald das abgeschlossen ist, sollten Sie in der Lage sein, auf die verwundbare Anwendung zuzugreifen, indem Sie https://127.0.0.1:8080/index.html besuchen.
Die CLI kann auch skriptgesteuert werden. Hier ist ein Beispielskript, das NoSQLMap verwendet, um die Schwachstellen in vuln_apps zu erkennen:
$ 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