
NoSql Injection CLI-Tool, zum Auffinden anfälliger Websites mit MongoDB.
Ein schneller NoSQL-Scanner und -Injector. Zum Auffinden von Websites, die anfällig für NoSQL-Injection sind, insbesondere Mongo.
Ich wollte ein besseres NoSQL-Injection-Tool, das einfach zu bedienen, vollständig kommandozeilenbasiert und konfigurierbar ist. Zu diesem Zweck begann ich mit der Arbeit an nosqli – einem einfachen NoSQL-Injection-Tool, das in Go geschrieben ist.
Es zielt darauf ab, schnell, genau und hochgradig benutzbar zu sein, mit einer leicht verständlichen Befehlszeilenschnittstelle.
Nosqli unterstützt derzeit die NoSQL-Injection-Erkennung für MongoDB. Es führt die folgenden Tests durch:
Laden Sie die neueste Binärversion herunter für Ihr Betriebssystem und installieren Sie sie in Ihrem Pfad, oder führen Sie sie aus einem lokalen Ordner aus.
Ich plane, Funktionen zur Datenextraktion hinzuzufügen. Wenn Sie andere Funktionen oder Konfigurationsoptionen wünschen, reichen Sie bitte einen Pull-Request oder ein Issue ein!
Es sollte selbstdokumentierend sein, indem Sie einfach den Befehl ausführen und die Hilfedateien lesen.
$ 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='
Sie können das Tool mit meiner angreifbaren Node.js-App oder anderen NoSQL-Injection-Labs testen.
Bei der Auswahl der Ziel-URL stellen Sie sicher, dass alle testbaren Parameter in der URL vorhanden sind. Angenommen, eine Website hat eine Seite unter /user/lookup mit einem Suchformular. Nach Eingabe einiger Daten in das Feld ändert sich die URL zu /user/lookup?username=. Wenn Sie nur /user/lookup scannen, findet das Tool keine möglichen Injection-Stellen. Um richtig zu scannen, stellen Sie sicher, dass die vollständige URL mit allen Parametern verwendet wird (in diesem Fall /user/lookup?username=).
Wenn Sie es vorziehen, aus dem Quellcode zu erstellen, oder es keine kompilierte Binärdatei für Ihre Plattform gibt, können Sie dies tun, indem Sie das Repository klonen, Abhängigkeiten installieren und das Projekt manuell erstellen. Dies erfordert eine aktuelle Go-Version und die entsprechende GOPATH-Umgebungsvariable.
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
Ein anständiges Testsuite ist enthalten. Unit-Tests zusammen mit einer einfachen Injection-Abdeckung können durch Ausführen von go test aus dem Stammverzeichnis gestartet werden:
go test ./...
Integrationstests sind ebenfalls verfügbar, die Injection-Scans gegen lokal laufende bekannte angreifbare Apps durchführen. Um Integrationstests zu verwenden, installieren und starten Sie die angreifbare Node.js Mongo Injection App und meinen angreifbaren PHP-Lab Fork von digininja. Denken Sie daran, jede Seite zu besuchen und die Datenbank zurückzusetzen! Übergeben Sie dann das Integrations-Flag:
go test ./... -args -integrations=true
Wenn eine der Umgebungen nicht gefunden wird, werden die Integrationstests von einem der Testfälle deaktiviert, um den Testlauf zu beschleunigen.
Beiträge sind willkommen! Bitte reichen Sie einen Pull-Request ein oder öffnen Sie ein Issue zur Diskussion.
Sofern Sie nichts anderes angeben, wird davon ausgegangen, dass Sie dem nosqli-Projekt das unbeschränkte, nicht exklusive Recht einräumen, den von Ihnen beigetragenen Code wiederzuverwenden, zu modifizieren und neu zu lizenzieren. Dieses Projekt wird immer Open Source verfügbar sein, aber dies ist wichtig, da die Unfähigkeit, Code neu zu lizenzieren, verheerende Probleme für andere Freie-Software-Projekte (wie KDE und NASM) verursacht hat. Wenn Sie spezielle Lizenzbedingungen für Ihre Beiträge angeben möchten, sagen Sie dies bitte beim Senden.