Раскрытие чувствительных данных

RedDeveloper
04.05.2023 12:30
Раскрытие чувствительных данных

Все внешние компоненты, рассмотренные здесь до сих пор, взаимодействуют с клиентской стороной. Однако, если они подвергаются атаке, они не представляют прямой угрозы для основного back-end веб-приложения и, как правило, не приводят к необратимым повреждениям.

Однако, поскольку эти компоненты выполняются на стороне клиента, они подвергают конечного пользователя опасности атаки и эксплуатации при наличии уязвимостей. Если уязвимость внешнего компонента используется для атаки на пользователей с правами администратора, это может привести к несанкционированному доступу, доступу к конфиденциальным данным, недоступности сервиса и многому другому.

Хотя большинство тестов на проникновение веб-приложений сосредоточено на внутренних компонентах и их функциональных возможностях, важно также проверить внешние компоненты на наличие потенциальных уязвимостей, поскольку этот тип уязвимости может быть использован для получения доступа к важным функциональным возможностям, таким как панель администратора, что может привести к полной компрометации сервера.

Под раскрытием чувствительных данных понимается доступность чувствительных данных в виде открытого текста для конечного пользователя. Обычно это можно найти в исходном коде страницы или в исходном коде страницы на передней стороне веб-приложений.

📌 Речь идет об исходном HTML-коде приложения, не путать с внутренним кодом, доступ к которому осуществляется только на сервере.

Таким образом, мы можем просмотреть любой источник страницы в браузере, щелкнув правой кнопкой мыши в любом месте и выбрав опцию View Page Source из появившихся вариантов.

Иногда разработчик может отключить возможность нажатия правой кнопки мыши на веб-странице через меню, которое появляется при нажатии, но это не мешает нам просматривать код, поскольку мы можем использовать клавиши ctrl + u или просматривать его через прокси-сервер, например, Burp Suite.

Давайте посмотрим на исходный код google.com. Для просмотра щелкните правой кнопкой мыши и выберите опцию "view page source", в браузере откроется новая страница с URL view-source:https://www.google.com/.

Здесь мы видим HTML, JavaScript и внешние ссылки. Уделите немного времени изучению страницы.

Здесь мы видим HTML JavaScript и внешние ссылки Уделите немного времени изучению

Иногда мы можем найти учетные данные, хэши или другие конфиденциальные данные, скрытые в комментариях исходного кода страницы или в импортируемом внешнем JS-коде.

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

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

Пример

На первый взгляд, эта форма входа в систему не выглядит необычно:

На первый взгляд эта форма входа в систему не выглядит необычно

Теперь давайте посмотрим на исходный код страницы:

<form action="action_page.php" method="post">

    <div class="container">
        <label for="uname"><b>Username</b></label>
        <input type="text" required>

        <label for="psw"><b>Password</b></label>
        <input type="password" required>

        <!-- TODO: remove test credentials test:test -->

        <button type="submit">Login</button>
    </div>
</form>

</html>    <div class="container">
        <label for="uname"><b>Username</b></label>
        <input type="text" required>

Мы видим, что разработчики добавили несколько комментариев и забыли удалить их, которые содержат тестовые учетные данные:

<!-- TODO: remove test credentials test:test -->

Этот комментарий, по-видимому, служит напоминанием для разработчиков об удалении тестовых учетных данных. Учитывая, что комментарий еще не удален, учетные данные могут быть все еще действительны.

Хотя не так часто можно найти учетные данные для входа в систему в комментариях разработчиков, мы все равно можем найти различные части конфиденциальной и ценной информации при просмотре исходного текста страницы, например, тестовые страницы и каталоги, параметры отладки или скрытые функции.

Существует несколько автоматизированных инструментов, которые мы можем использовать для сканирования и анализа исходного кода страницы с целью выявления потенциальных путей или каталогов или другой конфиденциальной информации.

Использование такой информации может дать нам больше доступа к веб-приложению, что может помочь нам атаковать внутренние компоненты, чтобы получить контроль над сервером.

Профилактика

В идеале исходный код внешнего интерфейса должен содержать только то, что необходимо для выполнения всех функций приложения, без лишнего кода и комментариев, которые не нужны для правильного функционирования веб-приложения.

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

Также важно классифицировать типы данных в исходном коде и установить контроль над тем, что можно или нельзя раскрывать на стороне клиента. Разработчики фронтенда также должны просмотреть код на стороне клиента, чтобы убедиться, что в нем не осталось ненужных комментариев или скрытых ссылок.

Кроме того, разработчики внешнего интерфейса могут захотеть использовать упакованный или обфусцированный JS-код, чтобы уменьшить вероятность раскрытия конфиденциальных данных через JavaScript-код. Эти методы могут помешать автоматизированным инструментам обнаружить такие данные.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.