November 1, 2020

Сливаем базы данных

Как найти открытые базы данных Mongo, Elasticsearch и другие?

Всем салют, дорогие друзья!
Все чаще встречаются новости об утечках. Хакеры находят конфиденциальную информацию в открытых базах данных (MongoDB, Elasticsearch, Kibana, CouchDB, Hadoop и другие). После этого начинаются скандалы, серьезные испытания для компаний и даже судовые расследования на сотни миллионов долларов. Несколько примеров для наглядной демонстрации в СМИ.

  • Исследователь нашёл открытую базу сервиса распознавания текста Abbyy с сотнями тысяч документов.
  • 200 000 000 резюме оказались в открытом доступе из-за незащищенной установки MongoDB.
  • Информация о 93,4 млн. мексиканских избирателей была доступна любому желающему.

В этой статье я расскажу, как можно находить такие базы и анализировать их содержание.

Поиск открытых БД с помощью Shodan

Для поиска БД используются специальные поисковики Shodan и Censys. Базы данных имеют определенный паттерн в виде порта и так называемого заголовка. Например, для MongoDB это стандартный порт 27017 и наличие заголовка "mongodb server information". Такие шаблоны существуют и для других БД.

Самый популярный вариант — MongoDB. На момент написания статьи проиндексировано 69100 результатов. Большинство из них закрыты (об этом говорит наличие параметра Authentication partially enabled).

Чтобы найти открытые БД создаем запрос:

all:"mongodb server information" all:"metrics"

В данном случае получаем 47008 результата. Примерно столько существует открытых БД, которые содержат определенную информацию. Конечно, какая-то часть — пустышки, в них нет ничего интересного. Но это уже предмет анализа.

По запросу Elasticsearch результатов меньше. 20111 проиндексированных записей, а лидер — Китай.

port:"9200" all:"elastic indices"

Чтобы полноценно работать с результатами выдачи БД: фильтровать записи по размеру, дате попадания в индекс, количеству коллекций и т.д. нужно использовать более функциональные инструменты. Один из них ― Lampyre.

Если нет желания доставлять себе софт, можно использовать давно знакомый Shodan Command-Line Interface. Для тех, кто хочет работать с помощью командной строки я подготовил файл с командами, которые позволяют находить и анализировать данные в форматах json или xlsx.

Для работы с более экзотическими базами рекомендую использовать LeakLooker. Скрипт написан на Python и работает с Shodan. Помимо стандартных БД поддерживает Kibana, CouchDB.

Поиск открытых БД с помощью Lampyre

Для более гибких настроек можно воспользоваться инструментом Lampyre для ОС Windows. После скачивания приложения необходимо указать почту и подтвердить свой аккаунт. После запуска в режиме Online Mode, нужно нажать New Investidation, выбрать папку для хранения проекта и начать работу.

В List of requests выбираем Shodan search. Вводим API ключ и наш запрос в поле Query, который позволит найти открытые БД.

all:"mongodb server information" all:"metrics"

Также можно указать дополнительные параметры в окне Shodan - 2. Например, страну и порт. Запускаем с помощью кнопки "Execute". Далее появляются результаты. Для графического отображения необходимо выбрать "Schema"->"Network".

Lampyre может фильтровать найденные запросы с помощью встроенного запроса ExploreDB: MongoDB. Выбираем необходимые IP, после этого правой кнопкой вызываем меню и указываем ExploreDB: MongoDB.

После чего получаем все запросы в удобном формате. Можно фильтровать по размеру БД и другим параметрам, которых нет в Shodan. Подтверждением того, что БД открытая, служит параметр text, который имеет статус open. Стоит сортировать результаты по параметрам Size и Count documents, так как самые интересные БД будут содержать максимальное количество записей в таблицах.

Также можно заметить со скриншотов, что Lampyre поддерживает работу с ExploreDB: ElasticSearch. Делаем все по аналогии, используя запрос:

port:"9200" all:"elastic indices"

Получаем в удобном виде базы данных ElasticSearch. Их можно посмотреть, перейдя по ссылке в столбце "http query top 500".

В итоге находим открытую БД какого-то магазина, где можно найти телефон, дату создание, описание, почту и еще некоторую интересную информацию. Помните, те кто ищет, тот всегда найдет :)

Заключение

Открытых баз данных действительно много. Почти каждую неделю выходит громкая новость об утечке данных. Это может быть БД отеля, магазина или сервисного центра. При беглом просмотре, среди примеров в статьи было два удачных варианта: магазин и доска объявлений продажи автомобилей. В первом случае, можно было посмотреть заказ, описание и телефон/почту владельца, во втором случае — телефон и марку машины.

Очень часто встречаются конфиденциальные данные в незашифрованном виде. Многие компании хранят информацию и даже не задумываются о возможных последствиях. Я продемонстрировал достаточно способов, чтобы найти открытые БД с терабайтами записей. Что делать с найденной информацией — выбор за тобой.

Всем спасибо за внимание!

- Мечтаешь зарабатывать на хакинге?

- Нет проблем! Все это станет реальностью, благодаря нашей Академии Хакинга. Набор в которую стартует совсем скоро.

Узнать больше об обучении можно на нашем сайте: hackerplace.org

Остались вопросы? Задай их мне в ЛС: @golden_hpa