NoSQLMap

Exploitation v0.5 · 11.01.2016 не обновлялся >2 лет

Инструмент автоматизации атак на NoSQL-базы данных. Поддерживает MongoDB, CouchDB, Redis, Cassandra. Выполняет: injection через HTTP-параметры, извлечение данных без аутентификации, перебор учётных данных, эксплуатацию мисконфигураций (открытый MongoDB без авторизации).

v0.5
11.01.2016 current
Добавлен 13.07.2026 · Обновлён 13.07.2026 · Exploitation
Установка
git clone https://github.com/codingo/NoSQLMap
cd NoSQLMap && pip install -r requirements.txt
python3 nosqlmap.py
переведено ИИ

NoSQLMap

Python 2.6|2.7 License Twitter

NoSQLMap — это инструмент с открытым исходным кодом на Python, предназначенный для аудита, а также автоматизации атак внедрения и эксплуатации уязвимостей конфигурации по умолчанию в NoSQL базах данных и веб-приложениях, использующих NoSQL, с целью извлечения или клонирования данных из базы данных.

Изначально создан @tcsstool, теперь поддерживается @codingo_. NoSQLMap назван в честь популярного инструмента для SQL-инъекций sqlmap от Бернардо Дамеле и Мирослава Штампара. Его концепции основаны на прекрасном докладе Минга Чоу на Defcon 21 "Злоупотребление NoSQL баз данных" и являются его расширением.

Демонстрация атаки на управление MongoDB с помощью NoSQLMap.

Демонстрация атаки на управление MongoDB с помощью NoSQLMap

Скриншоты

NoSQLMap

Краткое описание

Что такое 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.

Зависят от используемых функций:

  • Metasploit Framework,
  • Python с PyMongo,
  • httplib2,
  • и urllib.
  • Локальный экземпляр MongoDB по умолчанию для клонирования баз данных. Инструкции по установке см. здесь.

Также требуются различные другие библиотеки, которые обычно доступны в стандартной установке 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
Комментарии
Войдите, чтобы оставить комментарий