caspicasoft

Web developer
HomeAbout

Уязвимость в Жилстройсбербанк (XSS)

Update: Теперь исправлено

Сразу скажу, что я сообщил об этом дефекте разработчику сайта, ibecsystems, 16 дней назад. К сожалению, мое письмо осталось без ответа, а уязвимость не была устранена до сих пор. Сегодня напишу детали проблемы в учебных целях (может это как-то ускорит процесс).

Разработчики умеют делать все правильно: всегда проверять данные контролируемые клиентом и обрабатывать все параметры запросов на сервере. Также нужно уследить за библиотеками в клиентской части. В случае же Жилстройсбербанка, разработчики забыли сделать и первое и второе.

XSS (cross site scripting) или межсайтовый скриптинг - это серьезная уязвимость. Простыми словами, на вашем сайте (без вашего разрешения) выполняется чужой код. То есть, кто-то может контролировать что делает или видит пользователь вашего сайта!

На сайте банка есть простой поиск. Давайте сделаем запрос: image

Посмотрим что у нас в коде страницы. Интересно, что текст запроса (включая опасные символы “/>) появился в двух местах. image

Попробуем получить результаты поиска. image

Находим текст запроса без обработки. image

Что видит пользователя. image

Теперь можно сделать запрос с javascript.  image

Но это слишком легко. К тому же, браузеры с XSS аудиторами, такие как Chrome и Opera, откажутся выполнять наш alert(), потому что скрипт, оказавшийся на странице, находился в параметре запроса.

Нам лучше сосредоточится на этом участке кода с jQuery. Мы хотим выполнить код после $(’.search’).val().

Это значит нужно “пройти” все $(’#search_results’).highlight() без ошибок. image

Первая попытка. Результат такого запроса содержит ошибку и не выполняется браузером. image

После перебора нескольких вариантов, я смог найти хороший payload.

hxxp://www.hcsbk.kz/ru/search?query=’);alert(“wow”);//

image

Код выполняется без ошибок. Имейте ввиду, что в этом случае XSS аудитор браузера вам не поможет. image

Кто-то может подумать “Туууй,тоже маған катастрофа! Это же главная страница банка, а не чей-то личный кабинет!”. 

Да, это не ключ от квартиры, где деньги лежат личный кабинет, но близко. К тому же я не смотрел код личного кабинета банка, но у меня плохое предчувствие: банк не поддерживает HTTPS. 

Если соединение небезопасно, это значит ваш ИИН, пароль и все что внутри кабинета видно всему свету (от браузера до сервера банка и обратно). image XSS это идеальное средство для мошенников.

Отправьте письмо с ссылкой на сайт банка + xss payload. Когда пользователь заполнит форму и логин/пароль от личного кабинета, эти данные попадут на сервер мошенников. Все это будет происходить на сайте банка.

ibecsystems нужно исправить этот дефект и проверить код сайта на другие проблемы. Банк должен подумать о переходе на HTTPS и необходимости Content Security Policy.

Раньше разработчики не воспринимали XSS всерьез, но сейчас все понимают, что XSS - это критическая уязвимость на стороне клиента. Позже я напишу пост о том, что можно сделать с помощью браузера пользователя, XSS, и BeEF.