caspicasoft

Web developer
HomeAbout

Уязвимость на сайте epay.railways.kz (Authorization)

Проблема с авторизацией на сайте позволяет скачать все купленные билеты пользователей. Вендор знает про эту уязвимость.

Недостаточная авторизация (Insufficient Authorization) - отсутствие проверки прав (привилегий) при попытке выполнения определённых действий.

После регистрации на сайте (www.epay.railways.kz) и покупки билета, у пользователя есть возможность распечатать свой билет. В купленных билетах указаны такие персональные данные, как Ф.И.О пользователя, дата рождения и номер удостоверения или паспорта.

Ссылка для распечатки HTML (или PDF) билета выглядит так: hxxps://epay.railways.kz/ktz4/proc?pa=orders&sa=PRINT_EVENT&ORDER_ID=XXXXXXX&PRINT_TYPE=PRINT_TYPE_HTML&TICKET_ID=

image

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

Вот результат такого запроса. image

Ещё один пример: image

Если вспомнить, что продажу новых билетов через epay.railways.kz запустили в 2014 году, то можно понять, что это абсолютно все билеты. image

Вот и первые пользователи (или разработчики?). image image image


Конечно, не обошлось без XSS. Не обработаны почти все параметры форм и даже путь файлов. О свойствах XSS можете прочитать в другом посте. image image

Вот такой вот грустный #opendata.