Соберите проект #
Выберите интересующую вас услугу
Меня интересует...

    Что такое XSS-уязвимость?

    Что такое XSS-уязвимость?
    5 мин.

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

      Что представляет собой XSS-уязвимость? 

      Межсайтовый скриптинг, известный как XSS, является видом уязвимости, который позволяет злоумышленникам взаимодействовать с данными пользователей. Это может включать действия от имени пользователя без его ведома. XSS часто встречается на сайтах, требующих регистрации, таких как социальные сети ВКонтакте и Telegram, а также на портале «Госуслуги». Чтобы избежать рисков, пользователям советуют избегать подозрительных ссылок и всегда проверять URL перед вводом личной информации.

      Механизм действия межсайтового скриптинга

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

      Рассмотрим ситуацию, когда у пользователя уже открыта вкладка с сайтом, на который злоумышленник успел подгрузить свой вредоносный скрипт. Этот скрипт может обращаться к cookies, включая те, что используются для аутентификации, и отправлять их данные через Ajax-запрос на сервер атакующего. Ajax позволяет осуществлять такие запросы в фоновом режиме, не требуя перезагрузки страницы, что делает передачу данных незаметной для пользователя. Получив доступ к аутентификационным cookies, злоумышленник может использовать их для входа на сайт под чужим именем, получая доступ к конфиденциальной информации.

      Типы XSS-уязвимостей и способы их реализации

      Межсайтовый скриптинг классифицируется на три основных типа:

      • Постоянные XSS-атаки: злонамеренный скрипт сохраняется на сервере и отображается пользователям, когда они загружают затронутую страницу. Такие скрипты могут быть размещены в базе данных, на форумах, в записях блогов или в секции комментариев. Каждый раз, когда пользователь переходит на такую страницу, вредоносный код активируется в его браузере.
      • Отраженные XSS-атаки: этот вид атаки передает вредоносный скрипт через ссылки, которые могут быть отправлены пользователю по электронной почте или через социальные сети, часто под видом легитимной ссылки. Этот скрипт активируется, когда пользователь кликает по ссылке, и исполняется в его браузере, если пользователь вводит данные на поддельной странице или в маскированной форме.
      • XSS на основе DOM (Document Object Model): здесь злоумышленник использует уязвимости на клиентской стороне для выполнения скриптов в браузере пользователя. Это может происходить, когда небезопасный JavaScript анализирует пользовательские данные в URL или формах и манипулирует DOM страницы в реальном времени. Такие атаки изменяют структуру и содержание веб-страницы на лету, что может привести к несанкционированному доступу к данным или переадресации на вредоносные сайты.

      Рамификации атак XSS

      Основные риски, связанные с XSS-атаками, включают следующее:

      • Кража конфиденциальной информации. Злоумышленники могут встраивать злонамеренный код на веб-страницы с целью украсть личные данные пользователей, такие как логин и пароль, адреса электронной почты, данные банковских и инвестиционных счетов, а также переписку. Эта информация может быть использована для финансового мошенничества или идентификационного воровства.
      • Угон сессии. Злоумышленник может перехватывать cookie-файлы или токены сессий, выдавая себя за жертву, чтобы осуществлять действия от её имени, такие как неавторизованные транзакции или изменение настроек учетной записи. Этот метод особенно распространен в секторе e-commerce, где угонщики сессий могут совершать покупки, используя учетные записи жертв.
      • Вандализм и внедрение вредоносного контента. Злоумышленники могут модифицировать внешний вид сайта или его содержание, добавляя оскорбительные или недостоверные сведения. Это может серьезно подорвать репутацию компании, уменьшить доверие пользователей и даже привести к судебным разбирательствам.
      • Распространение вредоносных программ. Посредством XSS пользователи могут быть перенаправлены на сайты, содержащие вредоносные программы, или же на их компьютеры может быть незаметно загружено вредоносное ПО. Такие программы могут компрометировать личные данные, шпионить через камеру или перехватывать файлы и данные приложений.
      • Фишинг. При помощи XSS злоумышленники могут маскировать мошеннические сайты под легитимные, просить пользователей ввести свои учетные данные на поддельных страницах входа. Фишинг часто встречается на популярных социальных платформах, на сайтах государственных услуг или интернет-магазинах.

      Процесс проверки сайта на наличие XSS-уязвимостей

      Для выявления уязвимостей XSS можно использовать как ручные методы, так и автоматизированные инструменты, такие как Bug Bounty, XSSer, DOMinator, XSStrike и другие. В этом разделе мы рассмотрим, как осуществляется поиск уязвимостей вручную и с помощью сканера IWS.

      Ручное тестирование уязвимостей 

      Давайте проведем тестирование на примере сайта интернет-магазина запчастей для грузовиков.

      • Тестирование валидации ввода данных. На рассматриваемом сайте есть форма для подачи заявок, однако она не выполняет должную проверку введенных данных. Например, формат ввода телефонного номера не специфицирован. Введем в поля формы случайные символы и нажмем кнопку «Отправить». Если сайт не предусматривает защиту от некорректного ввода, он примет данные без предупреждений и добавит их в базу данных. Такое отсутствие реакции на ошибочный ввод указывает на уязвимость, которую могут использовать злоумышленники, вставив вредоносные ссылки.
      • Тестирование загрузки файлов. Отсутствие ограничений на типы файлов, которые могут быть загружены на сайт, представляет собой другую потенциальную уязвимость. На сайте интернет-магазина запчастей можно загрузить файл любого формата, например, DOCX, без какой-либо проверки. Для проверки того, как файл обрабатывается сайтом, загрузим файл и затем проверим HTML-код страницы. Для этого кликните правой кнопкой мыши по странице и выберите «Посмотреть код». В открывшемся окне перейдите во вкладку «Сеть» и отыщите данные отправленной формы. Наличие возможности загрузить файл без проверки может позволить злоумышленникам внедрять вредоносные файлы на сайт.

      Использование сканера IWS для обнаружения XSS

      Для демонстрации использования сканера рассмотрим платформу для тестирования веб-уязвимостей bwapp, которая изначально включает все типичные XSS-уязвимости. 

      • Для начала работы необходимо выполнить авторизацию. Рекомендуется использовать Яндекс Браузер с расширением Cookies Editor для управления cookies.
      • После входа в систему откроется главная страница BWAPP. Чтобы начать поиск уязвимостей, рекомендуется перейти на страницу BWAPP/aim.php, скопировать эту ссылку в блокнот и загрузить в Cookies Editor.
      • Затем запустите сканер и создайте новую задачу сканирования, выбрав соответствующий режим. Вставьте скопированную ссылку в поле «Карта сайта» и инициируйте процесс нажатием на кнопку «Старт».
      • Процесс сканирования может продлиться несколько минут. По его завершении следует обновить карту сайта, выбрав «Режим сканирования» и «Обновить карту сайта», затем снова запустить сканирование.
      • Для быстрого анализа результатов включите опцию «Быстрое сканирование обнаруженных ресурсов» и нажмите на кнопку для начала сканирования. После завершения работы сканера перейдите по ссылке с результатами.
      • На странице результатов выберите вкладку html для просмотра уязвимых секций или фрагментов страницы. Вкладка «Код страницы» покажет исходный код, а вкладка «Информация» предоставит детальное описание уязвимости.
      • Для завершения анализа нажмите на кнопку «Сформировать отчёт», который будет создан в формате HTML и включит список уязвимых страниц, запросы к серверу и фразы, указывающие на потенциальные уязвимости.

      Меры защиты сайта от XSS-атак

      Полностью исключить XSS-атаки невозможно, но можно значительно уменьшить риск их возникновения, применив несколько эффективных методов:

      • Экранирование пользовательских данных. Все пользовательские вводы на сайте должны быть должным образом обработаны для предотвращения интерпретации введенного текста как исполняемого кода. Экранирование помогает блокировать попытки внедрения злонамеренного кода.
      • Использование HTTP-only cookies. Этот метод заключается в настройке cookie таким образом, чтобы они были недоступны для скриптов на стороне клиента. Это уменьшает риск утечек данных через клиентские скрипты.
      • Очистка cookies от лишних данных. Важно тщательно контролировать, какие данные хранятся в cookies, особенно те, которые могут быть доступны для JavaScript. Удаление ненужных или чувствительных данных из cookies поможет уменьшить потенциальный ущерб в случае XSS-атаки.

      Продолжая пользоваться сайтом, я даю согласие на использование файлов cookie.