Краш-тест Uklon: как компания проверила себя хакерской атакой и что из этого вышло
С начала этого года и до сентября мы работали над расширением географии Uklon в Украине, наращивали пользовательские и партнерские базы и полностью обновляли приложения. Все процессы требовали от команды колоссальных усилий. Упорядочивать базы данных под обновления и при этом справляться с огромным количеством новых поступающих данных в режиме реального времени было очень трудно.
В начале октября наша команда решила углубиться в вопросы кибербезопасности сервиса. Мы хотели проверить, остались ли дыры в системе после масштабного аврала длинной в 8 месяцев. Именно в этот момент нас «хакнули».
Рассказать всего я не могу, потому что хакнули нас по нашей же просьбе 25 этичных хакеров во время Hacken Cup, с которыми мы подписали NDA. Решение доверить часть внутренней информации высококвалифицированным хакерам из разных частей света, чтобы те устроили краштест Uklon, оказалось правильным и полезным для компании. В этой колонке я раскрою несколько кейсов, обнаруженных во время хакерской атаки Uklon.
Первый кейс с Self XSS до Reflected XSS
Ключевая проблема заключалась в том, что сообщение об ошибке при неверном адресе, которое выводилось в всплывающую подсказку, содержало пользовательский ввод почти «как есть» без фильтрации спецсимволов. (Скриншот 1). В данном примере получилось поднять уровень уязвимости с низкой критичности (Self XSS) до средней критичности (Reflected XSS).
Ошибка позволяла:
- Скомпрометировать логин и пароль пользователя (keylogger)
- Заменить главную страницу сайта на другую
- Украсть сессию пользователя
- Разместить ложные уведомления\изображение\рекламу
Второй кейс IDOR. Удаление и редактирование изображений других водителей
Любой партнер Uklon на сайте мог взаимодействовать с фотографиями в личном кабинете. При вводе запроса:
DELETE /driver/service/removeimage HTTP/1.1 Host: partner-staging.uklon.com.ua Connection: close Content-Length: 63 appuid: a306fc19-d7f2-4bbf-95ef-1a68c886d5b5 Origin: https://partner-staging.uklon.com.ua Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest clientid: 6289de851fc726f887af8d5d7a56c635 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 Cookie: your cookie imagetype=driveravatar&uid=7890b85e-aa8c-4ae9-8e13-fbb1c30a1fc3
Появляется возможность заменить аватар водителя (с типом driveravatar
и уникальным идентификатором uid=7890b85e-aa8c-4ae9-8e13-fbb1c30a1fc3
).
А заменив uid
на идентификатор другого водителя, у нас успешно получилось удалить аватар другого пользователя.
То есть любой желающий мог получить доступ к изображениям водителя, заменить эти изображения на другие или полностью удалить изображения других водителей.
Кейс третий IDOR. Редактирование чужих комментариев
После того, как желающий прохожий побаловался и удалил аватарки водителей или заменил их на разные другие изображения, он мог бы приступить к изменению или удалению чужих комментариев к поездкам.
Например, ушлый водитель мог заменить все положительные отзывы о своем конкуренте на негативные и наоборот заменить негативные комментарии о себе на позитивные.
Это осуществимо при замене ID на ID чужого комментария. Также можно заметить, что ID
не уникален, а простой инкремент числа. Отправляя этот запрос с повышением ID на +1, мы можем удалить все отзывы о всех водителях ID=1 ID=2 ID=3
...
Также были найдены другие запросы:
PUT /api/v1/feedbacks
— редактирование и создание комментариев от других пользователейGET /api/v1/drivers/f0994a5dbf5f4b58afd7fbf2a804765f/feedbacks
— получение отзывов о других водителях (нужно знать егоID
)
Подобный опыт однозначно необходим крупным компаниям. Uklon избежал вредных для сервиса последствий, потерь ресурса и укрепил систему безопасности.
19 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів