Взломать сейф: Результаты тестирования на проникновение в банк

Хранители финансовых крепостей - роль тестирования на проникновение
В современном цифровом мире, где постоянно существует опасность утечки данных и кибератак, невозможно переоценить важность укрепления защиты от киберпреступности. По мере того как технологии непрерывно развиваются, развиваются и тактики и методы, используемые киберпреступниками. В ответ на эти непрекращающиеся угрозы организации, особенно работающие в финансовом секторе, оказываются в постоянной борьбе за оценку и укрепление своих мер безопасности.
Финансовые учреждения, в том числе банки, являются главной мишенью для киберпреступников из-за огромных массивов конфиденциальных финансовых и персональных данных, которые они хранят в своих цифровых хранилищах. Последствия одного нарушения безопасности в таких учреждениях могут быть катастрофическими - от огромных финансовых потерь и серьезного репутационного ущерба до штрафных санкций со стороны регулирующих органов. Поэтому финансовые организации вынуждены занимать проактивную позицию, когда речь идет о защите их систем и сохранении сокровищницы данных.
В рамках этой статьи мы отправимся в путешествие в сферу тестирования на проникновение с особым акцентом на его применение в финансовом секторе. Наша цель - осветить значение этой практики и понять, как она служит для финансовых учреждений необходимой защитой от постоянно меняющегося ландшафта киберугроз.
Кроме того, мы рассмотрим убедительный пример успешного теста на проникновение в банк. В этом конкретном случае были обнаружены критические уязвимости как технического, так и бизнес-логического характера. Стоит отметить, что в целях обеспечения конфиденциальности и безопасности клиента все идентифицируемые данные и название банка были анонимизированы. Это подчеркивает первостепенную важность соглашений о неразглашении (NDA) и взаимного доверия между клиентом и командой тестирования на проникновение.
Определение поля боя - сфера применения теста на проникновение
Недавно XYZ Bank, известное финансовое учреждение, известное своей приверженностью к безопасности и инновациям, обратилась к нашей компании CQR за помощью в укреплении своей цифровой защиты. Цель была четкой: комплексный тест на проникновение и оценка безопасности, направленная на оценку надежности их веб-приложения.
В этой совместной работе клиент доверил нам два счета, тщательно разработанные для отображения профилей реальных банковских клиентов. На эти счета была зачислена определенная сумма валюты, чтобы облегчить выполнение финансовых транзакций во время тестирования.
Работая в рамках подхода тестирования "серого ящика", наша миссия заключалась в выявлении уязвимостей, как технических, так и в сфере бизнес-логики, которые потенциально могут представлять угрозу безопасности банка.
Time was of the essence in this project, with a strict timeline of 1.5 months allotted for the actual penetration testing activities. As for the size of our penetration testing team, it was left to our discretion, and we opted to engage four highly skilled and experienced specialists. Their expertise spanned various facets of cybersecurity, ensuring a thorough and diverse examination of the bank’s digital infrastructure.
Во время тестирования на проникновение мы применили многогранную стратегию. Она включала оценку уязвимостей, атаки грубой силы, тестирование на эксплуатацию, глубокую разведку и обширный сбор данных. Каждый аспект играл жизненно важную роль в моделировании реальных угроз и предоставлении целостной оценки состояния безопасности банка.
Изучение выявленных слабых мест в системе безопасности:
Уязвимость № 1
Обход 2FA и несанкционированное завладение аккаунтом
Во время нашей оценки веб-приложения банка было обнаружено несколько уязвимостей, которые, будучи объединенными вместе, привели к завладению счетом. Эти уязвимости включали
- Программа возвращала ошибку "Неправильный пароль" вместо "Недействительные учетные данные" при попытке входа в систему, что позволяло находить существующие учетные записи методами грубой силы.
- Отсутствие ограничения скорости, что позволяет атаковать неизвестные параметры, такие как OTP, методом грубой силы.
- Отсутствие валидации файлов cookie в приложении, что позволяет инициировать смену пароля в аккаунте другого пользователя путем манипуляции с одним параметром (который относительно легко получить).
Чтобы воссоздать эту атаку, мы выполнили следующие действия:
Зайдите на сайт и перейдите в раздел "Забыли пароль?".
Введите адрес электронной почты, включите функцию перехвата и введите любой SMS-код, перехватив запрос, содержащий этот код.
POST /api/client/pwd/recovery?otp=1234&refid=XEqVyp6j7zLSVANzrVkGUrw6JwR67T
Мы заметили, что "refid" не менялся при каждом новом запросе, что позволило нам перебрать все возможные комбинации кодов (10 000) без ограничений по скорости. К счастью, на 1 567-й попытке мы нашли подходящее значение "otp" (1567), и сервер ответил 200 OK, предоставив нам доступ к обходу 2FA.2.
Получив эти знания, мы решили исследовать дальше. Зная, что сервер не проверяет cookies, и понимая, как идентифицировать любую учетную запись (в нашем случае логин был admin@xyz_bank.com), мы попытались изменить пароль с помощью функции восстановления пароля.
Мы перехватили запрос на смену пароля для нашей учетной записи через Password Recovery:
PATCH /api/client/pwd/recovery?update_password=Test12345&refid=XEqVyp6j7zLSVANzrVkGUrw6JwR67T
Где "refid" был идентификатором нашей учетной записи, а "update_password" было установлено значение "Test12345“.
После этого мы попытались войти в систему под логином "admin@xyz_bank.com", используя неправильный пароль. Сервер выдал ошибку "Неверный пароль". Это подтвердило, что учетная запись "admin@xyz_bank.com" существовал в системе, просто мы еще не знали пароль. С помощью этого запроса нам удалось перехватить идентификатор учетной записи "refid=LXkpt0k2RaiTI0dB1KydDHUmRDwv6x.”
Затем мы использовали идентификатор учетной записи и установили новый пароль для нее:
PATCH /api/client/pwd/recovery?update_password=Hackers_PASSWORD&refid=LXkpt0k2RaiTI0dB1KydDHUmRDwv6x
Мы убедились, что пароль к учетной записи другого пользователя действительно был успешно изменен. Мы вошли в систему, используя логин "admin@xyz_bank.com" и наш новый пароль, "Hackers_PASSWORD". Затем мы провели брутфорсинг 2FA-кода по параметру "otp", который, к счастью, удалось выполнить на 2 143-м запросе.
POST /api/client/pwd/recovery?otp=2143&refid=LXkpt0k2RaiTI0dB1KydDHUmRDwv6x
Таким образом, мы успешно авторизовались в учетной записи другого пользователя.
Мы незамедлительно сообщили банку об этой критической уязвимости, как того требует протокол пентестирования. Кроме того, мы рекомендовали внедрить строгую проверку учетных данных, ввести ограничение скорости попыток аутентификации, особенно для таких чувствительных операций, как проверка OTP, и внедрить надлежащую проверку файлов cookie для повышения безопасности и предотвращения несанкционированных действий. Эти меры направлены на укрепление безопасности веб-приложения банка и снижение риска возникновения подобных уязвимостей в будущем.
Уязвимость № 2
Манипуляции с валютой - прибыль от ошибок округления
Представьте себе ситуацию, когда при обмене валюты с LocalCoin на NewCoin можно было быстро приобрести 1,00 NewCoin всего за 1474,50 LocalCoin, в то время как официально установленный банком курс продажи составлял 1482,00 LocalCoin за 1,00 NewCoin. Такое значительное расхождение в 7,50 LocalCoin за 1 NewCoin позволяло пользователям с легкостью увеличивать свои балансы в геометрической прогрессии.
Суть этой уязвимости заключалась в неправильном округлении дробных чисел в системе - незначительная на первый взгляд оплошность, которая имела серьезные последствия.
Для устранения этой уязвимости было рекомендовано правильно настроить обработку транзакций обмена валюты. В частности, необходимо было предпринять шаги, чтобы предотвратить выполнение пользователями транзакций, когда введенная пользователем сумма LocalCoin была меньше 1,00 единицы иностранной валюты по курсу банка на момент транзакции. Реализовав эту корректирующую меру, которая включает в себя не только корректировку обработки транзакций, но и надлежащую проверку округления в системе, банк смог эффективно предотвратить использование пользователями этого расхождения и сохранить целостность своих операций по обмену валюты.
Уязвимость № 3
Уязвимость манипулирования валютными курсами
В ходе тестирования веб-приложения XYZ Bank на проникновение мы обнаружили существенную уязвимость, которая позволяла пользователям манипулировать курсами валют в своих интересах. Этот недостаток позволял пользователям совершать обмен NewCoin на ForeignCoin по курсу покупки банка, а не по предполагаемому курсу продажи.
Более того, в рамках этой транзакции пользователи имели возможность не только обменять свои ForeignCoin обратно на NewCoin, но и сделать это по курсу ниже, чем курс продажи банка, получив таким образом прибыль. Используя эту уязвимость посредством двух последовательных транзакций, пользователи могли поддерживать свой баланс ForeignCoin, накапливая при этом дополнительные NewCoin.
Эта уязвимость была связана с неправильным округлением дробных чисел в системе, что приводило к расхождениям между официальными курсами валют и теми, которые реально применялись при транзакциях.
В общем, эта уязвимость позволяла пользователям обменивать валюту по выгодным курсам, что в конечном итоге приводило к несправедливой финансовой выгоде. Для решения этой проблемы мы рекомендовали внедрить строгую политику обмена валюты, чтобы не позволить пользователям изменять курсы на стороне клиента. Кроме того, рекомендуется пересмотреть правила округления в системе, чтобы гарантировать, что клиенты не смогут использовать валютные переводы между своими счетами для начисления дополнительных средств.
Эта уязвимость подвергала банк XYZ потенциальным финансовым потерям из-за неправильного расчета обменных курсов, подчеркивая важность надежных мер безопасности в финансовом секторе.
Уязвимость № 4
Проблема эксплуатации учетных данных по умолчанию
Кроме того, в ходе тестирования на проникновение веб-приложения банка XYZ мы наткнулись на уязвимость серьезного значения - портал предоставлял пользователям повышенные привилегии при вводе общих учетных данных "admin" и "admin". Эта ничего не подозревающая точка входа открывала дверь в домен администратора, наделяя пользователей мощными возможностями, которые потенциально могли нарушить и повредить основную структуру приложения.
Эта уязвимость продемонстрировала риски, связанные с настройками по умолчанию и предсказуемыми путями административного доступа. Использование общих учетных данных по умолчанию и легко угадываемых путей предоставляло неавторизованным пользователям непреднамеренный доступ к чувствительным функциям, которые должны были быть строго защищены.
Чтобы воспроизвести эту уязвимость, злоумышленник может выполнить следующие несложные действия:
1. Перейдите по следующей ссылке: https://XYZ_Bank.com/admin/login
2. Войдите в учетную запись, используя стандартные учетные данные "admin" и "admin".
При успешном входе пользователь получал неограниченный доступ к панели администратора, что позволяло совершать потенциально вредоносные действия в роли администратора. Эта уязвимость представляла собой значительный риск для безопасности и конфиденциальности приложения.
Во-первых, мы посоветовали изменить стандартные учетные данные на уникальные и сложные, чтобы предотвратить несанкционированный доступ. Во-вторых, мы предложили настроить пути входа в систему, чтобы устранить предсказуемость. Кроме того, мы предложили внедрить двухфакторную аутентификацию (2FA) для дополнительного уровня безопасности, а также развернуть на страницах входа в систему задачи CAPTCHA для противодействия автоматическим атакам. И наконец, для предотвращения попыток грубой силы было рекомендовано ограничение скорости, что в совокупности повысило уровень безопасности XYZ Bank.
Уязвимость № 5
Небезопасная прямая ссылка на объект (IDOR) -
Уязвимость неограниченного доступа к данным
В ходе комплексного тестирования веб-приложения банка на проникновение мы обнаружили критическую уязвимость, известную как Insecure Direct Object Reference (IDOR). Эта уязвимость, тесно связанная с контролем доступа, возникает, когда приложение использует введенные пользователем данные для прямого доступа к объектам, что приводит к несанкционированному доступу к конфиденциальной информации.
Чтобы воспроизвести эту уязвимость, необходимы две учетные записи пользователей: User1 и User2. Следующие шаги раскрывают проблему:
1. Войдите в приложение под именем User1 и отправьте запрос на поддержку в банк через раздел "Информация" > "Поддержка пользователей" > "Отправить запрос в банк".
2. Перехватите запрос и загрузите документ в запрос поддержки.
3. Отправьте запрос и укажите путь, где первоначально хранился документ, а именно "absolutePath” parameter.
4. Теперь откройте URL в браузере с параметром "absolutePath" и добавьте в запрос токен Bearer: https://XYZ_Bank.com/api/blobs/security/{{User1RandomString}}?token={{User1’s Bearer Token}}. Убедитесь, что документ загружен.
5. Затем войдите в приложение, используя учетные данные пользователя User2, и создайте запрос в службу поддержки, выполнив те же действия, что и раньше. Найдите строку "absolutePath" документа для пользователя User2.
6. Теперь измените случайную строку в поле "absolutePath" пользователя1, чтобы совпасть с "absolutePath" документа пользователя User2. Откройте URL-адрес: https://XYZ_Bank.com/api/blobs/security/{{User2RandomString}}?token={{User1’s Bearer Token}}. Вы заметите, что документ пользователя User2 загружается с использованием токена Bearer пользователя User1.
Эта уязвимость была обнаружена на 11 конечных точках в веб-приложении для нескольких банковских сервисов.
Потенциальное влияние этой уязвимости очень велико, поскольку она позволяет любому пользователю манипулировать "absolutePath" для доступа, загрузки или манипулирования данными другого пользователя. Для решения этой проблемы мы настоятельно рекомендовали внедрить строгую проверку процессов идентификации и авторизации пользователей с использованием всех предопределенных параметров, а не полагаться только на один параметр. Таким образом банк сможет снизить риск несанкционированного доступа к данным и защитить конфиденциальность пользовательской информации.
Уязвимость № 6
Межсайтовый скриптинг (XSS) - угроза неконтролируемого ввода данных пользователем
В ходе оценки веб-приложения банка мы обнаружили критическую уязвимость, известную как межсайтовый скриптинг (XSS). Этот недостаток возникает, когда приложение не может должным образом проверить вводимые пользователем данные, что приводит к потенциальным скриптовым атакам, которые могут поставить под угрозу данные пользователя и безопасность приложения.
В этом случае приложение не проверяло должным образом данные, предоставляемые пользователем, что позволяло злоумышленникам внедрять специально созданные URL-адреса или загружать вредоносные файлы. Такие атаки могут привести к различным угрозам, включая открытое перенаправление, перехват сеанса и многое другое. Чтобы воспроизвести атаку, злоумышленнику достаточно было посетить подделанный URL-адрес, например:
https://XYZ_Bank.com/searching.html?keywords=%3Cscript%3Ealert(document.cookie)%3C/script%3E
Этот URL (расшифрованное значение: https://XYZ_Bank.com/searching.html?keywords=<script>alert(document.cookie)</script>) вызывает всплывающее окно, отображающее сессионные файлы cookie пользователя, что позволяет раскрыть конфиденциальную информацию. Эта уязвимость может потенциально раскрыть данные пользователя и привести к различным рискам безопасности.
Влияние этой XSS-уязвимости очень велико, поскольку она позволяет злоумышленникам выполнить произвольный код в браузере пользователя. Для снижения этого риска мы рекомендуем использовать надежные конфигурации брандмауэра и тщательную проверку ввода перед выполнением данных, предоставленных пользователем. Использование значения "nonce" может предотвратить выполнение внешнего JavaScript. Кроме того, рекомендуется ограничить хранение вредоносных и несанкционированных расширений файлов, что повысит общую безопасность приложения.
Выполнив эти рекомендации, банк сможет защитить своих пользователей от потенциальных атак на основе сценариев и сохранить целостность своего веб-приложения.
Классификация результатов тестирования банков на проникновение
В результате проведенной нами оценки безопасности систем банка они были распределены по категориям серьезности:
10 выводов классифицированы как критические/высокие, 11 - как средние, 13 - как низкие и 1 - как информационные.
Эта классификация позволяет получить полное представление о системе безопасности банка:

Заключение
Проведенный нами тест на проникновение в системы банка выявил не только ожидаемые уязвимости средней и низкой степени тяжести, но и такие серьезные проблемы, как "обход 2FA и несанкционированный захват аккаунта", о которых мы рассказывали ранее. Эти данные подчеркивают настоятельную необходимость регулярного тестирования на проникновение в финансовые учреждения. Выявленные уязвимости, начиная от обхода 2FA и заканчивая манипуляциями с курсами валют и XSS-угрозами, иллюстрируют разнообразные векторы атак, которые могут использовать злоумышленники. Определение поля боя, понимание масштабов таких тестов на проникновение и своевременное устранение уязвимостей имеют первостепенное значение для защиты целостности финансовых учреждений.
Раскрывая эти уязвимости, мы подчеркиваем важность надежных протоколов безопасности и постоянной бдительности, необходимой в эпоху быстрого развития киберугроз. Проведение тщательных тестов на проникновение - это не просто передовая практика, это необходимая мера защиты не только самого учреждения, но и, что еще важнее, конфиденциальной финансовой информации его клиентов.
Другие Услуги
Insomnia Security Scanner
AI-powered web application security scanner by CQR. Automated vulnerability discovery, exploit verification, and detailed reporting for modern applications.
Узнать большеЗащита Инфраструктуры CRYEYE
Аудит безопасности с помощью CryEye обеспечивает информационную безопасность предприятия, защищая всю инфраструктуру.
Узнать большеТестирование на проникновение
Найдите уязвимости во всей инфраструктуре вашего бизнеса раньше, чем это сделают хакеры! В рамках консалтинга по тестированию на проникновение мы подберем методы пентестов.
Узнать большеСоциальная инженерия
Simulate real-world phishing, vishing, and pretexting attacks to measure and improve your team's security awareness and response capabilities.
Узнать большеНагрузочное Тестирование
All kinds of load and performance testing of your system from the CQR online security company.
Узнать большеAI-Powered Vulnerability Assessment
Leverage artificial intelligence to discover, prioritize, and remediate vulnerabilities across your digital assets faster and more accurately than traditional scanners.
Узнать большеCloud Security Audit (AWS / GCP / Azure)
Comprehensive security review of your cloud environments — IAM policies, network controls, data exposure, and misconfigurations across all major cloud platforms.
Узнать большеDevSecOps Integration
Embed security into every stage of your CI/CD pipeline. Automated SAST, DAST, SCA, and secret scanning so vulnerabilities are caught before they reach production.
Узнать большеAPI Security Testing
In-depth testing of REST, GraphQL, and SOAP APIs for authentication flaws, authorization bypasses, injection vulnerabilities, and data leakage risks.
Узнать большеMobile Application Penetration Testing
Manual and automated security testing for iOS and Android applications — reverse engineering, runtime analysis, traffic interception, and backend API assessment.
Узнать большеIoT Security Assessment
Evaluate firmware, communication protocols, cloud backends, and physical interfaces of IoT devices to identify vulnerabilities before attackers do.
Узнать большеBlockchain & Smart Contract Audit
Formal verification and manual code review of smart contracts on Ethereum, Solana, and other chains. Detect reentrancy, overflow, and logic flaws before deployment.
Узнать большеRed Team Operations
Advanced adversary simulation using real attacker TTPs (MITRE ATT&CK) to test your detection, response, and overall security posture under realistic conditions.
Узнать большеThreat Intelligence & Monitoring
Continuous monitoring of threat feeds, dark web, and attacker infrastructure to provide actionable intelligence specific to your organization and industry.
Узнать большеZero Trust Architecture Review
Assess and design your Zero Trust security model — identity verification, micro-segmentation, least-privilege access, and continuous validation controls.
Узнать большеCompliance Consulting (PCI DSS / SOC 2 / GDPR)
Expert guidance to achieve and maintain compliance with major security frameworks. Gap analysis, remediation roadmaps, and audit-readiness support.
Узнать большеDark Web Monitoring
Continuous surveillance of dark web forums, marketplaces, and breach databases for leaked credentials, sensitive data, or mentions of your organization.
Узнать большеPhishing Simulation & Awareness Training
Controlled phishing campaigns combined with interactive security awareness training to build a human firewall across your entire organization.
Узнать большеSupply Chain Security Audit
Assess third-party vendor risks, open-source dependencies, and software supply chain integrity to prevent attacks like SolarWinds and Log4Shell.
Узнать большеContainer & Kubernetes Security
Security review of Docker images, Kubernetes clusters, RBAC policies, network policies, and runtime configurations to harden your container infrastructure.
Узнать большеWeb Application Firewall (WAF) Deployment
Professional WAF setup, rule tuning, and ongoing management to block SQL injection, XSS, CSRF, and other OWASP Top 10 threats in real time.
Узнать большеBug Bounty Program Management
Full lifecycle management of your bug bounty program — scope definition, researcher coordination, triage, validation, and remediation tracking.
Узнать большеOSINT Investigation Services
Open-source intelligence gathering on individuals, organizations, and infrastructure. Ideal for pre-engagement recon, fraud investigation, and competitive analysis.
Узнать большеDigital Forensics & Incident Response
Rapid response to security breaches — evidence collection, malware analysis, attacker timeline reconstruction, and actionable remediation recommendations.
Узнать больше