- PVSM.RU - https://www.pvsm.ru -
Решил ради интереса посветить день обзору сайтов банков.
Первый из таких стал официальный сайт Россельхос Банка (реклама дала о себе знать :) ), следующий Русский стандарт банк, далее Альфа-Банк.
Целью было не взломать или добиться вывода какой-либо секретной информации, а просто проверить на сколько хорошо сделаны официальные сайты банков.
Сайт работает на CMS Bitrix
Первое, что бросилось мне в глаза — модуль вывода новостей, ибо там есть параметры выбора года, месяца, дня и ещё кол-во новостей на одной странице.
В адресной строке, указав год 200 и месяц 20 я увидел, что не было сообщений об ошибке и более того — эти данные появились в селекте на странице, а значит входящие данные выводятся на странице.
Далее решил проверить возможность SQL инъекции — неудачно.
Следующим шагом была проверка на XSS — вот тут уже стало интересно.
Спец. символы не экранируются и html символы не преобразуются в html сущности, а значит можно внедрить любой код.
К сожалению (или к счастью банка) все попытки внедрить такие XSS как вызов алерта или iframe не удались, так как в первый тег вставлялся пробел.
Входящие данные:
20"></option></select><script>
На выходе:
20"></option></select><sc ript>
Максимум, что можно сделать, это вставить картинку или ссылку (без вызова js кода).
Следующим шагом была проверка ограничения, на странице можно выбрать от 5 до 20 новостей.
Но как вы уже, наверно, понял — ограничение можно обойти.
Вы можете спокойно указать 100000 новостей, после чего на сайте появятся все новости.
На странице новостей также увидел, что у ссылок на новости странное окончание.
Все попытки манипуляции с этой переменной провалились, хотя подозреваю, что если бы был включен Register_Globals, то можно было бы выполнить XSS.
Дальше решил перейти на страницу пресс-центра, там увидел подобную ошибку, но уже без переменной $page
Решил и на этой странице произвести манипуляции — удачно. При передачи переменной page через GET всё содержание переменной вывелось в ссылке, но двойная кавычка была преобразована.
Ответ последовал через несколько часов, поблагодарили и поинтересовались откуда такая забота об их банке :)
Сами ошибки были исправлены, примерно, через 3-4 дня, кроме вывода всех новостей, видимо, не посчитали это ошибкой.
CMS сайта не узнавал.
Суть XSS уязвимость оказалась в том, что параметр из GET запроса передаётся в код страницы в нескольких местах, но самое главное — в js код.
В этом js коде определяется переменная requestUri (отвечает за адрес текущей страницы), но при передачи параметров нет экранирования одинарной кавычки, что позволяет нам выполнить произвольный js код.
Дальше не стал проверять сайт, ибо этого уже достаточно.
Русский стандарт решил не отвечать на моё сообщение, но дыру закрыли.
Мельком посмотрел многострадальный Альфа-Банк, а именно поддомен идея.альфабанк — тоже нашёл XSS, единственное, что помешало успешно выполнить код это слеш, он воспринимается как разделитель, т.к. параметры передавался через GET (idea.alfabank.ru/accepted/page88
Автор: shapeshifter08
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/8597
Нажмите здесь для печати.