
Автоматизированный инструмент для перечисления NoSQL баз данных и эксплуатации веб-приложений.
NoSQLMap — это инструмент с открытым исходным кодом на Python, предназначенный для аудита, автоматизации инъекционных атак и эксплуатации уязвимостей конфигурации по умолчанию в NoSQL-базах данных и веб-приложениях, использующих NoSQL, с целью раскрытия или клонирования данных из базы данных.
Первоначально созданный @tcsstool, а теперь поддерживаемый @codingo_, NoSQLMap назван в честь популярного инструмента SQL-инъекций sqlmap Бернардо Дамеле и Мирослава Стампара. Его концепции основаны и расширяют отличную презентацию Мина Чоу на Defcon 21, "Abusing NoSQL Databases".
NoSQLMap MongoDB Management Attack Demo

NoSQL (изначально означающее "не SQL", "не реляционная" или "не только SQL") база данных предоставляет механизм для хранения и извлечения данных, который моделируется иными способами, нежели табличные отношения, используемые в реляционных базах данных. Такие базы данных существовали с конца 1960-х годов, но не получили названия "NoSQL" до всплеска популярности в начале XXI века, вызванного потребностями компаний Web 2.0, таких как Facebook, Google и Amazon.com. Базы данных NoSQL всё чаще используются в больших данных и веб-приложениях реального времени. Системы NoSQL иногда называют "Not only SQL", чтобы подчеркнуть, что они могут поддерживать SQL-подобные языки запросов.
В настоящее время эксплойты инструмента ориентированы на MongoDB и CouchDB, но в будущих релизах планируется дополнительная поддержка других NoSQL-платформ, таких как Redis и Cassandra.
В системах на основе Debian или Red Hat сценарий setup.sh можно запустить от root для автоматической установки зависимостей 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 — целевой веб-сервер (например, www.google.com) или сервер MongoDB, который вы хотите атаковать.
2. Set web app port — TCP-порт веб-приложения, если целью является веб-приложение.
3. Set URI Path — часть URI, содержащая имя страницы и параметры, но НЕ имя хоста (например, /app/acct.php?acctid=102).
4. Set HTTP Request Method (GET/POST) — установите метод запроса GET или POST; на данный момент реализован только GET, но ведется работа над реализацией POST-запросов, экспортированных из Burp.
5. Set my local Mongo/Shell IP — используйте эту опцию при прямой атаке на экземпляр MongoDB, чтобы указать IP целевой установки Mongo для клонирования баз данных жертв или открытия Meterpreter-шеллов.
6. Set shell listener port — если вы открываете Meterpreter-шеллы, укажите порт.
7. Load options file — загрузить ранее сохранённый набор настроек для пунктов 1-6.
8. Load options from saved Burp request — разобрать запрос, сохранённый из Burp Suite, и заполнить параметры веб-приложения.
9. Save options file — сохранить настройки 1-6 для дальнейшего использования.
x. Back to main menu — используйте это, когда настройки установлены, чтобы начать атаки.
После настройки параметров вернитесь в главное меню и выберите "DB Access Attacks" или "Web App attacks" в зависимости от того, атакуете ли вы порт управления NoSQL или веб-приложение. Остальная часть инструмента основана на "мастере" и достаточно проста, но отправляйте письма на [email protected] или найдите меня в Twitter @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