Люди постоянно используют сервисы обмена изображениями: иногда контент, который они там размещают, не имеет отношения к делу, но чаще всего люди просто забывают, что предоставляют доступ к большому количеству своих данных любому, у кого достаточно навыков, чтобы знать, где и как , искать.

Imgur, популярный сайт для размещения и обмена изображениями

Краткое изложение

Идея этой статьи взята из недавнего видео на популярном технологическом канале YouTube Linus Tech Tips. В частности, ведущий (Линус Себастьян) показывает, как популярный сервис обмена изображениями под названием LightShot позволял любому получить доступ к любой картинке с идентификатором, состоящим из любых двух букв алфавита, за которыми следует любая комбинация из четырех цифр.

На самом деле это неверно: любая комбинация цифр и букв длиной от 6 до 8 символов действительна, если она не начинается с 0, как мы увидим позже.

Домашняя страница LightShot

Холодная суровая правда

Сам по себе этот факт звучит не так уж плохо: в конце концов, это общедоступный сервис обмена изображениями, но на самом деле пугает то, что потребовалось на удивление мало исследований, чтобы узнать правду: система идентификации, которую использует LightShot, вовсе не случайна, она на самом деле последовательный, но так получилось, что используется довольно необычная система счисления. В то время как мы, люди, в основном привыкли к числам с основанием 10, а компьютеры обрабатывают информацию с основанием 2, существует множество других форматов: один из них — это основание 36, которое охватывает как 26 букв алфавита, так и обычные арабские цифры от 0 до 9. (поэтому оно и называется основанием 36, 26 + 10 = 36) в его репрезентативной форме.

Скрапинг данных

Зная это, написать простой скрипт, который может перебирать все идентификаторы base36 до 64 бит и загружать каждое изображение, когда-либо существовавшее на платформе, было тривиально. Даже CloudFlare не помог, так как библиотеки для обхода так называемого «режима атаки» легко доступны в сообществе с открытым исходным кодом, что делает нашу маленькую попытку парсинга почти незаметной. Интересным открытием является то, что LightShot, похоже, не любит идентификаторы, начинающиеся с нуля, поскольку они просто перенаправляют на главную страницу, но это было легко исправить одной строкой.

Еще одна странность, которую мы обнаружили, заключается в том, что LightShot, похоже, использует другие службы размещения изображений, такие как ImgUr и ImageShack, для предоставления своего контента.

Скрипт, который мы сделали: он извлекает «истинный» URL-адрес, по которому размещено изображение (крайний справа), а также исходный идентификатор (тот, что помечен «x») на платформе LightShot. Значение «i» — это идентификатор LightShot, преобразованный в число с основанием 10.

Наши выводы

Но что еще более пугает, так это информация, которую мы нашли. Как и следовало ожидать, большая часть из них были просто невинными скриншотами: игры, презентации, графики, отчеты, домашние задания, чаты и тому подобное. Однако мы также обнаружили невероятное количество конфиденциальной информации, такой как данные кредитной карты, ключи от биткойн-кошельков, банковские учетные данные, обнаженные тела, кровь и многое другое: вероятно, не то, что вы хотели бы, чтобы все узнали, верно. ?

На всякий случай мы приложили пару, вероятно, очень конфиденциальных скриншотов, которые нам удалось найти в дикой природе (мы, очевидно, смазали наиболее конфиденциальную информацию):

Некоторые учетные данные для входа на крипто-торговую платформу и адреса кошельков

Скриншот чата Telegram с банковскими реквизитами и полными данными кредитной карты

Мы достигли этого, используя всего 57 строк кода Python и 3 библиотеки с открытым исходным кодом примерно за 2 часа, и нам удалось загрузить более 20 тысяч изображений с простотой, которую я могу описать просто как отвисание челюсти. Данных, которые мы собрали за столь короткое время, достаточно, чтобы разрушить жизни многих людей, и хуже всего то, что они сделали это сами.

Выводы

Сделать вывод из всего этого не так уж сложно: дважды подумайте о том, что вы публикуете, и особенно о том, где вы это делаете, потому что ваш парень может быть не единственным, кому нравится ваша новая танга.

Это также должно стать уроком для разработчиков программного обеспечения и инженеров во всем мире, что, если это было недостаточно ясно, использование последовательных идентификаторов в общедоступных службах — ужасная идея и путь к катастрофе.

Кредиты

  • Numpy — за потрясающую функцию base_repr
  • Cloudscraper, который позволил нам с легкостью обойти защиту LightShot от cloudflare.
  • Запросы за его серьезный и предельно простой API, который упростил загрузку изображений.