Уязвимости в сервисе компании Plategka.com, включающие XSS

Интересуюсь платёжными сервисами, банками, пластиковыми картами, да и вообще слежу за электронной коммерцией. А ещё я люблю находить ошибки и уязвимости в системах интернет-банкингов, платёжных терминалов или в системах онлайн-переводов.

Не так давно один украинский сервис онлайн-оплаты — Plategka.com — запустил функцию: создание ссылки с уникальным адресом и QR-кодом для получения перевода на карту.

Как только я захотел проверить, как работает новый сервис, я увидел ту же ошибку, которую допустили Portmone: по ссылке указывается полный номер карты. Перебирая ссылки, можно собрать номера карт. "Изначально мы думали над сокрытием номера карты, но в этом вопросе есть свои за и против, поэтому на первом этапе, дабы у Плательщика была возможность убедиться в верности уже введенных данных, решили его оставить", — пишут они пользователю.

image
Но факт наличия полного номера карты усугубляется тем, что для удобства плательщика указывается фамилия и имя получателя.

Итого: можно собрать полные номера + ФИО владельцев карт (я указал просто первые буквы латинского алфавита).

Об этой оплошности я сразу сообщил в компанию, они исправили отображение полного номера карты достаточно быстро и даже отблагодарили меня суммой в… 200 гривен ($8,5). Что ж…

Через пару дней, найдя свободное время, я зашёл на сайт ещё раз. А, так как первоначально при регистрации я указывал в полях «фамилия» и «имя» не совсем корректные данные, в этот раз решил посмотреть, возможно ли указать в этих полях два слова.

image
(телефонный номер не мой)


Два слова указать удалось.

image


Удалось указать и больше.

image


Получилось следующее:

image

А что, если добавить перенос строки < br > — забыл я о том, что это платёжный сервис и такой код не должен выполняться.
Однако разработчики также забыли это учесть — система приняла и «правильно» отобразила и перенос строки, и изменение цвета шрифта:

image

С такой формой мошенники могут долго собирать деньги с доверчивых пользователей. Особенно если задать психологически правильный текст. Кстати, сервис даёт возможность «забронировать» адрес ссылки. Естественно, я попробовал и создал ссылки вида:

https://www.plategka.com/gateway/pay2me/admin/
https://www.plategka.com/gateway/pay2me/login/
https://www.plategka.com/gateway/pay2me/test/

и другие.

Спойлер

Сейчас мои ссылки с описанием «Аккаунт владельца ссылки заблокирован» неактивны, но это не из-за действий «Платёжки», а потому что я во время проверки удалил один аккаунт и создал другой, а система не даёт возможность создать новому пользователю ссылку с освободившимся словом. Т.е. старую ссылку удалить/изменить нельзя, новую создать — тоже.


Ну и я не мог не попробовать вставить <script>alert()</script> в какое-либо поле.

image

И, к сожалению сервиса и моему счастью, код выполнился:

image

Мда, HTML-кодом дело не ограничилось, тут же и XSS.

Сообщение в компанию я отправил, указав, что эти ошибки серьёзнее, чем предыдущие. Меня поблагодарили и я получил вознаграждение. Вознаграждение, внимание, в размере… снова 200 (!) гривен!

Понимаю, что не во всех компаниях допускаются выплаты за найденные уязвимости, но восемь с половиной долларов за XSS?

© Habrahabr.ru