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

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