Доброе время суток, уважаемые читатели!
Сегодня я узнал об интересном сайте Raindrop.io. Думаю, некоторые из вас уже наслышаны о нем, поэтому поясню тем, кто не в курсе. Данный сервис представляет собой умное хранилище закладок, некий аналог Pocket, но не многие догадываются, что его использование не является столь безопасным, как хотелось бы.
Описание от разработчика:
Raindrop сохраняет не просто закладки, но и связанный с ними контент в зависимости от типа страницы. Если это статья, она будет вырезана и сохранена вместе с закладкой. Тоже самое касается видео, фото или презентации. Таким образом, вы можете организовывать тематические коллекции с разным контентом.
Скажу честно, сервис меня заинтересовал. Он абсолютно бесплатный, есть приложение для Android, расширения для браузеров, прост в обращении и удобный. Правда, не все так круто, как кажется на первый взгляд. Среди всех многочисленных преимуществ есть одно очень-очень уязвимое «НО»!
Поверхностно изучив возможности сервиса, я наткнулся на одну очень интересную особенность. Все закладки каждого пользователя можно получить в виде RSS и для этого необходимо лишь знать уникальный URL вида: raindrop.io/feeds/{key}
где, {key} – последовательность из 6 букв разного регистра.
Ни на секунду не задумываясь, я решил попробовать получить чужие закладки, подобрав правильный ключ. После пары минут поиска вручную было обнаружено, что если ключ правильный, то получаем страницу с фидами пользователя, иначе — сообщение «key invalid!» и ошибку 404. Недолго думая, было решено быстро набросать небольшую программу для подбора и не мучиться. Элементарная задача решилась минут за 5 и простенькая консольная программка на C# уже искала заветные ключики от хранилища чужих закладок и бережно сохраняла их в файлик.
Хочу заметить, что даже используя 4 первых символа своего ключа и оставив остальные воле случая, было найдено более 20 уникальных ключей менее чем за 5 минут. Выждав еще 5 минут, нашлось еще около 15 ключиков.
Важным является также то, что сервер не блокировал запросы, хоть все они были с одного IP и посылались на сайт без каких-либо задержек.
Мораль: не всякая фича, реализованная разработчиком для удобства использования того или иного продукта, является безопасной для данных пользователя.
Всем спасибо за внимание! Будьте бдительны, разрабатывая новые проекты.
Автор: NeoLab