Открываю Search Console по одному из проектов— 200 тысяч новых страниц. Двести тысяч, за пару дней. Столько страниц я точно не делал.
Иду смотреть, что это за страницы. А там порнуха. Слитые фотки, онлифанс, телеграм-каналы «моделей», сотни разных имён. И всё это живёт теперь у меня.
Формально я теперь владелец онлифанс-каталога на двести тысяч страниц. Узнал об этом из Search Console.
Сижу, не понимаю, что за хрень. Потом дошло.
У нас был выделенный сервер на DigitalOcean. На него смотрело несколько поддоменов — служебные, технические, всякая мелочь. Потом мы переехали: основной домен перенесли, рабочие поддомены перенесли, сам сервер погасили за ненадобностью.
А пару поддоменов забыли. Они висели в воздухе и показывали на IP мёртвого сервера. Не нужны, не на виду — ну и хрен с ними.
Вот этот «хрен с ними» и оказался дырой.
Когда ты гасишь сервер, облако возвращает его IP в общий пул. Кто-то арендует новую машину — и ему достаётся ровно тот самый IP. Дальше он видит: на его свежий сервер всё ещё ведут чужие живые поддомены. А гугл этим поддоменам доверяет — домен-то настоящий, с историей. Красота: заливай что хочешь. Он и залил — страницы, которые для гугла выглядят как честная часть сайта.
У этого даже есть название — subdomain takeover. Через висячую DNS-запись. Тебя ломают через то, что ты сам выкинул и забыл.
Повезло в одном: гугл эти страницы нашёл, но в выдачу поставить ещё не успел. Поймал за пару дней до того, как весь этот порносклад реально встал бы в поиск.
Лечится за минуту. Удаляешь висячие DNS-записи — поддомены перестают отвечать, и у атакующего в руках остаётся сервер, который больше ни за кого себя не выдаёт.
Правило, которое я теперь не забуду: гасишь облачный сервер — сначала удали DNS-записи, а потом отпускай IP. Не наоборот. Освободившийся IP облако отдаст первому желающему, а желающие бывают разные.