Уязвимости в сервисе компании Plategka.com, включающие XSS
Интересуюсь платёжными сервисами, банками, пластиковыми картами, да и вообще слежу за электронной коммерцией. А ещё я люблю находить ошибки и уязвимости в системах интернет-банкингов, платёжных терминалов или в системах онлайн-переводов.
Не так давно один украинский сервис онлайн-оплаты — Plategka.com — запустил функцию: создание ссылки с уникальным адресом и QR-кодом для получения перевода на карту.
Как только я захотел проверить, как работает новый сервис, я увидел ту же ошибку, которую допустили Portmone: по ссылке указывается полный номер карты. Перебирая ссылки, можно собрать номера карт. "Изначально мы думали над сокрытием номера карты, но в этом вопросе есть свои за и против, поэтому на первом этапе, дабы у Плательщика была возможность убедиться в верности уже введенных данных, решили его оставить", — пишут они пользователю.
Но факт наличия полного номера карты усугубляется тем, что для удобства плательщика указывается фамилия и имя получателя.
Итого: можно собрать полные номера + ФИО владельцев карт (я указал просто первые буквы латинского алфавита).
Об этой оплошности я сразу сообщил в компанию, они исправили отображение полного номера карты достаточно быстро и даже отблагодарили меня суммой в… 200 гривен ($8,5). Что ж…
Через пару дней, найдя свободное время, я зашёл на сайт ещё раз. А, так как первоначально при регистрации я указывал в полях «фамилия» и «имя» не совсем корректные данные, в этот раз решил посмотреть, возможно ли указать в этих полях два слова.
(телефонный номер не мой)
Два слова указать удалось.
Удалось указать и больше.
Получилось следующее:
А что, если добавить перенос строки < br >
— забыл я о том, что это платёжный сервис и такой код не должен выполняться.
Однако разработчики также забыли это учесть — система приняла и «правильно» отобразила и перенос строки, и изменение цвета шрифта:
С такой формой мошенники могут долго собирать деньги с доверчивых пользователей. Особенно если задать психологически правильный текст. Кстати, сервис даёт возможность «забронировать» адрес ссылки. Естественно, я попробовал и создал ссылки вида:
https://www.plategka.com/gateway/pay2me/
admin/https://www.plategka.com/gateway/pay2me/
login/https://www.plategka.com/gateway/pay2me/
test/
и другие.
Сейчас мои ссылки с описанием «Аккаунт владельца ссылки заблокирован» неактивны, но это не из-за действий «Платёжки», а потому что я во время проверки удалил один аккаунт и создал другой, а система не даёт возможность создать новому пользователю ссылку с освободившимся словом. Т.е. старую ссылку удалить/изменить нельзя, новую создать — тоже.
Ну и я не мог не попробовать вставить <script>alert()</script>
в какое-либо поле.
И, к сожалению сервиса и моему счастью, код выполнился:
Мда, HTML-кодом дело не ограничилось, тут же и XSS.
Сообщение в компанию я отправил, указав, что эти ошибки серьёзнее, чем предыдущие. Меня поблагодарили и я получил вознаграждение. Вознаграждение, внимание, в размере… снова 200 (!) гривен!
Понимаю, что не во всех компаниях допускаются выплаты за найденные уязвимости, но восемь с половиной долларов за XSS?