
Инструмент командной строки для NoSql Injection, предназначенный для поиска уязвимых веб-сайтов, использующих MongoDB.
Быстрый сканер и инжектор NoSQL. Для поиска сайтов, уязвимых к NoSQL-инъекциям, в частности Mongo.
Я хотел создать лучший инструмент для NoSQL-инъекций, который был бы прост в использовании, полностью основан на командной строке и настраиваем. С этой целью я начал работу над nosqli — простым инструментом для NoSQL-инъекций, написанным на Go.
Он стремится быть быстрым, точным и высокоудобным, с понятным интерфейсом командной строки.
На данный момент Nosqli поддерживает обнаружение NoSQL-инъекций для MongoDB. Он выполняет следующие тесты:
Скачайте последнюю версию бинарного файла для вашей ОС и установите его в PATH или запускайте из локальной папки.
Я планирую добавить функции извлечения данных. Если вы хотите увидеть другие функции или параметры конфигурации, пожалуйста, отправьте pull request или создайте issue!
Он должен быть самодокументированным — просто запустите команду и прочитайте файлы справки.
$ 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='
Вы можете протестировать инструмент с помощью моего уязвимого приложения на Node.js или других лабораторий по NoSQL-инъекциям.
При выборе целевого URL убедитесь, что все тестируемые параметры присутствуют в URL. Например, предположим, что у сайта есть страница /user/lookup с формой поиска. После ввода данных в поле URL меняется на /user/lookup?username=<данные>. Если вы просканируете только /user/lookup, инструмент не найдет возможных инъекций. Для правильного сканирования убедитесь, что используется полный URL со всеми параметрами (в данном случае /user/lookup?username=<данные>).
Если вы предпочитаете собирать из исходного кода или нет скомпилированного бинарного файла для вашей платформы, вы можете сделать это, клонировав репозиторий, установив зависимости и собрав проект вручную. Для этого потребуется последняя версия Go и соответствующая переменная окружения GOPATH.
$ git clone https://github.com/Charlie-belmer/nosqli
$ cd nosqli
$ go get -u -d ./...
$ go install
$ nosqli -h
Включен приличный набор тестов. Модульные тесты вместе с простым покрытием инъекций можно запустить с помощью go test из корневого каталога:
go test ./...
Интеграционные тесты также доступны — они запускают инъекции против известных уязвимых приложений, запущенных локально. Чтобы использовать интеграционные тесты, установите и запустите уязвимое приложение на Node.js для Mongo и мой форк уязвимой PHP-лаборатории от digininja. Не забудьте перейти на каждый сайт и сбросить БД! Затем передайте флаг integrations:
go test ./... -args -integrations=true
Если какая-либо среда не найдена, интеграционные тесты будут отключены одним из тестовых случаев, чтобы ускорить выполнение тестов.
Приветствуются любые вклады! Пожалуйста, отправляйте pull request или создавайте issue для обсуждения.
Если не указано иное, считается, что вы предоставляете проекту nosqli неограниченное, неисключительное право на повторное использование, модификацию и смену лицензии вносимого вами кода. Этот проект всегда будет доступен с открытым исходным кодом, но это важно, поскольку невозможность сменить лицензию вызвала разрушительные проблемы для других проектов свободного ПО (таких как KDE и NASM). Если вы хотите указать особые условия лицензии для своих вкладов, просто сообщите об этом при отправке.