Инструмент автоматизации атак на NoSQL-базы данных. Поддерживает MongoDB, CouchDB, Redis, Cassandra. Выполняет: injection через HTTP-параметры, извлечение данных без аутентификации, перебор учётных данных, эксплуатацию мисконфигураций (открытый MongoDB без авторизации).
git clone https://github.com/codingo/NoSQLMap cd NoSQLMap && pip install -r requirements.txt python3 nosqlmap.py
NoSQLMap — это инструмент с открытым исходным кодом на Python, предназначенный для аудита, а также автоматизации атак внедрения и эксплуатации уязвимостей конфигурации по умолчанию в NoSQL базах данных и веб-приложениях, использующих NoSQL, с целью извлечения или клонирования данных из базы данных.
Изначально создан @tcsstool, теперь поддерживается @codingo_. NoSQLMap назван в честь популярного инструмента для SQL-инъекций sqlmap от Бернардо Дамеле и Мирослава Штампара. Его концепции основаны на прекрасном докладе Минга Чоу на Defcon 21 "Злоупотребление NoSQL баз данных" и являются его расширением.

NoSQL база данных (изначально обозначавшая "non SQL", "нереляционная" или "не только SQL") предоставляет механизм для хранения и извлечения данных, которые моделируются иначе, чем табличные связи в реляционных базах данных. Такие базы данных существуют с конца 1960-х годов, но обозначение "NoSQL" получили только после всплеска популярности в начале XXI века, вызванного потребностями компаний Web 2.0, таких как Facebook, Google и Amazon.com. NoSQL базы данных всё чаще используются в приложениях для работы с большими данными и в реальном времени. Системы NoSQL также иногда называют "Не только SQL" (Not only SQL), чтобы подчеркнуть, что они могут поддерживать языки запросов, похожие на SQL.
В настоящее время эксплойты инструмента ориентированы на MongoDB и CouchDB, но в будущих версиях планируется добавить поддержку других платформ на базе NoSQL, таких как Redis и Cassandra.
В системе на базе Debian или Red Hat скрипт setup.sh может быть запущен от имени суперпользователя для автоматической установки зависимостей NoSQLMap.
Зависят от используемых функций:
Также требуются различные другие библиотеки, которые обычно доступны в стандартной установке Python. Результаты могут отличаться, проверьте скрипт.
python setup.py install
Как альтернатива, вы можете собрать Docker-образ, введя:
docker build -t nosqlmap .
или вы можете использовать Docker-compose для запуска Nosqlmap:
docker-compose build
docker-compose run nosqlmap
Начните с
python NoSQLMap
NoSQLMap использует систему на основе меню для построения атак. При запуске NoSQLMap вам представляется главное меню:
1-Set options (do this first)
2-NoSQL DB Access Attacks
3-NoSQL Web App attacks
4-Scan for Anonymous MongoDB Access
x-Exit
Пояснение к опциям:
1. Set target host/IP-The target web server (i.e. www.google.com) or MongoDB server you want to attack.
2. Set web app port-TCP port for the web application if a web application is the target.
3. Set URI Path-The portion of the URI containing the page name and any parameters but NOT the host name (e.g. /app/acct.php?acctid=102).
4. Set HTTP Request Method (GET/POST)-Set the request method to a GET or POST; Presently only GET is implemented but working on implementing POST requests exported from Burp.
5. Set my local Mongo/Shell IP-Set this option if attacking a MongoDB instance directly to the IP of a target Mongo installation to clone victim databases to or open Meterpreter shells to.
6. Set shell listener port-If opening Meterpreter shells, specify the port.
7. Load options file-Load a previously saved set of settings for 1-6.
8. Load options from saved Burp request-Parse a request saved from Burp Suite and populate the web application options.
9. Save options file-Save settings 1-6 for future use.
x. Back to main menu-Use this once the options are set to start your attacks.
После настройки опций вернитесь в главное меню и выберите либо атаки на доступ к БД, либо атаки на веб-приложения, в зависимости от того, атакуете ли вы порт управления NoSQL или веб-приложение. Остальная часть инструмента основана на «мастере» и достаточно проста для понимания, но присылайте письма на codingo@protonmail.com или найдите меня в Твиттере @codingo_, если у вас есть вопросы или предложения.
Этот репозиторий также включает намеренно уязвимое веб-приложение для тестирования NoSQLMap. Для запуска этого приложения необходим Docker. Затем вы можете выполнить следующие команды из директории /vuln_apps.
docker-compose build && docker-compose up
После завершения вы сможете получить доступ к уязвимому приложению по адресу: https://127.0.0.1:8080/index.html
CLI также можно использовать в скриптах. Вот пример скрипта, использующего NoSQLMap для обнаружения уязвимостей в 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