- Регистрация
- 27 Апр 2025
- Сообщения
- 51
- Реакции
- 0
- Баллы
- 6
Представьте себе систему, созданную для защиты конфиденциальной информации пользователей, например, страховых полисов. А теперь представьте, что один небольшой изъян превращает эту систему в открытую книгу. Именно с таким случаем я столкнулся, когда анализировал один сервис регистрации на мероприятия. То, что начиналось как простой интерес к API, вылилось в находку, способную дать полный доступ к полису любого пользователя. Вот как всё происходило — шаг за шагом — и почему это действительно важно.
Находка: API с уязвимостью
Исследование началось с сайта, на котором хранились страховые полисы пользователей — по сути, цифровой сейф для важных документов. В ходе изучения я наткнулся на вызов API:
/api/claims/encrypt?text=EUSP2386411060
Ответом было зашифрованное значение полиса. Получается, если я знаю номер чужого полиса, например EUSP2386411061, я могу получить его зашифрованную версию и использовать её для загрузки PDF-файла с персональными данными.
Взлом: пошаговая схема
Допустим, номер полиса жертвы — EUSP2386401065.
Шаг 1: Шифрование номера
Злоумышленник делает простой GET-запрос на шифрование:
/api/claims/encrypt?text=EUSP2386401065
Шаг 2: Получение доступа
Полученную строку он вставляет в другой запрос:
/api/certificates/policies/BnmnNGD6EFL2Eeo85nTHA
Результатом становится PDF-документ, содержащий ФИО, дату рождения, адрес, а также дату и тип покупки — этой информации достаточно для прохождения аутентификации.
Шаг 3: Перехват учётки
Теперь, зная ID полиса и дату покупки, злоумышленник заходит на портал управления сервисом, вводит номер полиса и дату покупки — и получает полный доступ к учётной записи пользователя. Он может управлять полисом или даже отменить его.
Система шифрования — слабое звено
В чём корень проблемы? Все ID полисов следуют простой числовой схеме, и система использует один и тот же алгоритм шифрования без дополнительной аутентификации. Это значит, что любой может "угадать" ID, зашифровать его и получить ключ к чужим данным. Это всё равно, что прятать ключ от сейфа... прямо на нём.
Почему это опасно
Это не просто утечка информации — это полный контроль над аккаунтами. Злоумышленник может просматривать, изменять и отменять полисы тысяч пользователей. Доступна личная информация, финансовые данные, данные о мероприятиях. Это универсальный ключ ко всей базе.
Главный вывод
Эта история не обвиняет конкретную компанию — она служит напоминанием: безопасность не может зависеть только от одного слоя защиты. Предсказуемые идентификаторы, открытые API и отсутствие многофакторной аутентификации — всё это делает даже надёжную систему уязвимой. Любая мелочь может превратить крепость в карточный домик.
В следующий раз, доверяя свои данные онлайн-сервису, задайте себе простой вопрос: а кто ещё может найти этот ключ?
Находка: API с уязвимостью
Исследование началось с сайта, на котором хранились страховые полисы пользователей — по сути, цифровой сейф для важных документов. В ходе изучения я наткнулся на вызов API:
/api/claims/encrypt?text=EUSP2386411060
Ответом было зашифрованное значение полиса. Получается, если я знаю номер чужого полиса, например EUSP2386411061, я могу получить его зашифрованную версию и использовать её для загрузки PDF-файла с персональными данными.
Взлом: пошаговая схема
Допустим, номер полиса жертвы — EUSP2386401065.
Шаг 1: Шифрование номера
Злоумышленник делает простой GET-запрос на шифрование:
/api/claims/encrypt?text=EUSP2386401065
Шаг 2: Получение доступа
Полученную строку он вставляет в другой запрос:
/api/certificates/policies/BnmnNGD6EFL2Eeo85nTHA
Результатом становится PDF-документ, содержащий ФИО, дату рождения, адрес, а также дату и тип покупки — этой информации достаточно для прохождения аутентификации.
Шаг 3: Перехват учётки
Теперь, зная ID полиса и дату покупки, злоумышленник заходит на портал управления сервисом, вводит номер полиса и дату покупки — и получает полный доступ к учётной записи пользователя. Он может управлять полисом или даже отменить его.
Система шифрования — слабое звено
В чём корень проблемы? Все ID полисов следуют простой числовой схеме, и система использует один и тот же алгоритм шифрования без дополнительной аутентификации. Это значит, что любой может "угадать" ID, зашифровать его и получить ключ к чужим данным. Это всё равно, что прятать ключ от сейфа... прямо на нём.
Почему это опасно
Это не просто утечка информации — это полный контроль над аккаунтами. Злоумышленник может просматривать, изменять и отменять полисы тысяч пользователей. Доступна личная информация, финансовые данные, данные о мероприятиях. Это универсальный ключ ко всей базе.
Главный вывод
Эта история не обвиняет конкретную компанию — она служит напоминанием: безопасность не может зависеть только от одного слоя защиты. Предсказуемые идентификаторы, открытые API и отсутствие многофакторной аутентификации — всё это делает даже надёжную систему уязвимой. Любая мелочь может превратить крепость в карточный домик.
В следующий раз, доверяя свои данные онлайн-сервису, задайте себе простой вопрос: а кто ещё может найти этот ключ?

