Содержание

Что такое XSS-уязвимость и как тестировщику не пропустить ее / Хабр

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

Если вы гуру тестирования безопасности и на раз-два участвуете в баунти-программах крупных IT-компаний, а количество найденных вами XSS исчисляется десятками или даже сотнями — можно смело проходить мимо этой статьи. Если же вы новичок в теме и только начинаете интересоваться поиском уязвимостей — добро пожаловать под кат.



Определение

XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») — довольно распространенная уязвимость, которую можно обнаружить на множестве веб-приложений. Ее суть довольно проста, злоумышленнику удается внедрить на страницу JavaScript-код, который не был предусмотрен разработчиками. Этот код будет выполняться каждый раз, когда жертвы (обычные пользователи) будут заходить на страницу приложения, куда этот код был добавлен. А дальше существует несколько сценариев развития.

Первый: злоумышленнику удастся заполучить авторизационные данные пользователя и войти в его аккаунт.

Второй: злоумышленник может незаметно для жертвы перенаправить его на другую страницу-клон. Эта страница может выглядеть совершенно идентично той, на которой пользователь рассчитывал оказаться. Но вот принадлежать она будет злоумышленнику. Если пользователь не заметит подмены и на этой странице введет какие-то sensitive data, то есть личные данные, они окажутся у злоумышленника.

Третий… да в общем-то много чего еще можно придумать. Почти все, что может JavaScript, становится доступным для злоумышленника. Чуть ниже мы рассмотрим подробнее один из таких примеров. А пока давайте попробуем чуть подробнее обсудить, как именно устроена уязвимость. И почему злоумышленнику удается внедрить свой код в чужое приложение без доступа к его исходникам.

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

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

Но вернемся к XSS.

Как устроена уязвимость?

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

Например, можно добавить JavaScript-код в поле ввода, текст из которого сохраняется и в дальнейшем отображается на странице для всех пользователей.

Это может быть поле для ввода информации о себе на странице профиля социальной сети или комментарии на форуме.

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

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

А пока давайте двигаться дальше.

Почему такие ошибки часто встречаются на веб-проектах?

Суть в том, что браузер не может самостоятельно отличить обычный текст от текста, который является CSS, HTML или JavaScript-кодом. Он будет пытаться обрабатывать все, что находится между тегами <script>, как JavaScript-код. Все, что находится между тегами <style>, считать CSS. И все, что похоже на тег, считать HTML-кодом.

Если разработчик хочет, чтобы какой-то текст только выглядел как код, но таковым не являлся (то есть не обрабатывался браузером, а выводился как есть), этот текст надо специально обработать прежде, чем отдать его браузеру. Такая обработка называется “экранированием”.

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

Например, не всегда программист держит в уме все места, где текст, заданный пользователем, попадает на страницу. Более того, иногда разные части сайта могут создаваться в разное время и/или разными людьми.

В этом случае вероятность ошибки возрастает.

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

Такой риск есть всегда. Все же писать приложение полностью с нуля, не используя вообще никаких библиотек, в наше время долго и дорого. Далеко не каждая компания может позволить себе разработку такого уровня.

В этом случае вся надежда на тестировщиков.

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

Давайте еще раз, более детально, поговорим об опасности XSS-уязвимости. Сама по себе уязвимость не является опасной. Опасной она становится тогда, когда ее находит злоумышленник и начинает ее использовать в своих целях. Использование уязвимости называется “вектором атаки”. В случае XSS векторов атаки довольно много.

Самый простой пример — кража авторизационных cookie пользователей веб-приложения. Чаще всего сайт, на котором присутствует авторизация, отличает авторизованного пользователя по так называемой сессионной cookie. Если ее нет, то пользователь не авторизован. А если она есть, то по значению этой cookie сервер может отличить одного пользователя от другого.

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

То же касается JavaScript-кода, который выполняется в браузере пользователя. Этот JavaScript-код будет видеть значение cookie того пользователя, в браузере которого он исполняется и только его.

Теперь допустим, что злоумышленнику удастся внедрить JavaScript-код на страницу веб-приложения. У любого пользователя, который теперь зайдет на эту страницу, будет исполняться в браузере JavaScript-код. Он будет читать значение cookie этого пользователя (теперь уже жертвы).

Осталось только передать это значение злоумышленнику — и дело сделано. Но как передать значение, ведь вредоносный код исполняется в браузере жертвы?

Все довольно просто. Этот же JavaScript-код может создать AJAX-запрос на удаленный сервер. Например, на вот такой URL: www.zloy-site.ru/stolen={значение_cookie_жертвы}

Домен zloy-site принадлежит злоумышленнику из нашего примера. Все запросы, которые приходят на этот домен, записываются в базу данных. Посмотрев на параметры URL, злоумышленник узнает значения cookie жертв и сможет их использовать, чтобы попасть в их аккаунты.

Как мы обсудили выше — это не единственное, чем опасна XSS-уязвимость. Так что ради безопасности и для защиты своих пользователей необходимо уметь искать и закрывать подобные уязвимости на ваших проектах.

Где искать XSS? Как с ней бороться? Демо-страница с примером

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

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

Открываем песочницу: https://playground.learnqa.ru/demo/xss

Для начала посмотрим, как устроена страница. Это по сути очень простой каталог книг, в котором есть поиск. Если ввести в запросе “Рей Брэдбери” мы увидим все книги, которые есть в этом каталоге этого автора.

Внимательный пользователь уже заметил, что текст, который мы вводили в поле поиска, тут же оказался в URL. Нам этот момент еще пригодится.

А пока давайте попробуем вставить какую-нибудь ерунду в поле поиска: “fwefewf”.

Мы увидим, что в этом случае ничего найти на странице не удалось. А текст запроса повторился в тексте ошибки:

Итак, мы с вами обнаружили место, где появляется текст, вводимый нами. Следовательно, это и есть потенциальное место для XSS-уязвимости. Давайте попробуем вставить самый популярный JavaScript-код для проверки, есть ли там уязвимость.

<script>alert(123)</script>

В случае, если страница является уязвимой, после ввода этого кода на странице появится вот такое окошко:

Оно и будет означать, что наш JavaScript-код исполнился и мы нашли XSS-уязвимость.

Итак, вводим код и видим следующее предупреждение:

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

Помните, чуть выше мы с вами заметили, что текст, который мы вводим в поле поиска, отображается в URL в так называемом GET-параметре? Имя этого параметра “q”, а значение — то, что мы вводим в поле поиска. Это сделано для того, чтобы можно было скопировать URL вместе с этой самой строкой поиска и в следующий раз открыть страницу сразу с нужными авторами.

Например, вот такой URL откроет страницу сразу только с книгами Рея Брэдбери: playground.learnqa.ru/demo/xss?q=Рей+Брэдбери

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

Проверим, не забыл ли наш разработчик все учесть тут. Попробуем в GET-параметр “q” подставить тот самый JavaScript-код: https://playground.learnqa.ru/demo/xss?q=<script>alert(123)</script>

Перейдя по этому URL мы видим, что на странице появилось окошко со значением 123. Но почему?

Все довольно просто. Помните, когда сайт не может найти нужные книги по заданному поисковому запросу, он текст этого поискового запроса выводит в тексте ошибке? Мол, не нашли ничего по запросу “бла-бла”. Вот вместо этого “бла-бла” у нас теперь JavaScript-код с алертом. Разработчик написал валидацию поля ввода и решил, что так он защитил сайт от того, чтобы JavaScript мог оказаться в поисковом запросе. И не стал экранировать текст ошибки. Нам же удалось обойти валидацию через URL, поменяв там значение поискового запроса.

Ради интереса теперь можем вывести значение нашей сессионной cookie, для этого вместо <script>alert()</script> в URL надо подставить другой код: <script>alert(document.cookie)</script>

С этим я уже предоставлю поиграться вам самостоятельно. 🙂

Найдя ошибку, стоит обратиться к разработчикам — они ее исправят.

Способов закрыть ошибку довольно много. Экранировать текст — не единственный из них. Еще можно запретить самому JavaScript видеть некоторые cookie. Для этого у cookie есть специальный параметр “http only”. Если он выставлен в TRUE, JavaScript никак не сможет узнать, что такая cookie вообще выставлена и не сможет ее прочитать и передать злоумышленнику даже в том случае, если ему удастся найти XSS на вашем проекте.

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

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

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

XSS атаки: что это такое

АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

ABCDEFGHIJKLMNOPQRSTUVWXYZ0-9

Cross Site Sсriрting, или XSS (в переводе с английского — межсайтинговый скриптинг) — это тип уязвимости сайтов, возникающий при попадании пользовательских скриптов в генерируемые веб-сервером страницы.

По мнению специалистов из securitylab.ru, на XSS приходится более 15% интернет-атак. Они позволяют получить третьим лица доступ к пользовательским файлам cookies и другой конфиденциальной информации, затруднить взаимодействие посетителей с сайтом или внедрить в их операционную систему вредоносный код. Поэтому при раскрутке сайта разрабатывают методы защиты от данной угрозы.

Виды

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

В зависимости от каналов внедрения кода выделяются следующие уязвимости:

  • использование HTML тегов в сообщениях на сайте для форматирования текста. При отсутствии должного уровня фильтрации таких постов в них могут быть вставлены теги
  • отсутствие фильтрации разрешенных тегов: названий атрибутов и их значений. Вредоносный скрип может быть внедрен, к примеру, в тег img. Для защиты от данной уязвимости применяется жесткая фильтрация тегов и запрет использования протоколов data и javascript во всех гиперссылках;
  • изменение кодировки в тайтле страницы. Для устранения такой уязвимости при поисковой оптимизации сайта кодировка страницы указывается до пользовательских полей.

Также различают моментальные XSS, при которых скрипт возвращается сразу как ответ на HTTP запрос, и отложенные — код сохраняется в системе и внедряется в HTML страницу через определенный период времени.

Индексация сайта

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

Другие термины на букву «X»

XenuXML выдача Яндекса

Все термины SEO-Википедии

Теги термина

Вредоносные технологии

(Рейтинг: 5, Голосов: 5)

Находи клиентов. Быстрее!

Работаем по будням с 9:30 до 18:30. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 10:30.

Приложи файл или ТЗ

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

Работаем по будням с 9:30 до 18:30. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 10:30.

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

наверх

Что такое межсайтовый скриптинг (XSS)? Как это предотвратить и исправить

Безопасность
К

  • Бен Луткевич, Технические характеристики Писатель
  • Линда Розенкранс

Что такое межсайтовый скриптинг (XSS)?

Межсайтовый скриптинг (XSS) — это тип атаки с внедрением, при которой субъект угрозы вставляет данные, например вредоносный скрипт, в содержимое доверенных веб-сайтов. Затем вредоносный код включается в динамический контент, доставляемый в браузер жертвы.

XSS — один из самых распространенных типов кибератак. Вредоносные скрипты часто доставляются в виде фрагментов кода JavaScript, которые выполняет браузер жертвы. Эксплойты могут включать вредоносный исполняемый код на многих других языках, включая Java, Ajax и язык гипертекстовой разметки (HTML). Хотя XSS-атаки могут быть серьезными, предотвратить уязвимости, которые делают их возможными, относительно легко.

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

Как работает межсайтовый скриптинг?

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

Атаки

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

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

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

Какие существуют 3 типа XSS-атак?

Существует три основных категории уязвимостей межсайтового скриптинга: хранимый XSS, отраженный XSS и XSS на основе объектной модели документа (DOM).

Сохранено XSS

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

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

Отраженный XSS

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

Отраженный ответ протокола передачи гипертекста включает полезную нагрузку из HTTP-запроса. Затем жертва выполняет сценарий, который отражается и выполняется внутри браузера. Поскольку отраженный XSS не является постоянной атакой, злоумышленник должен доставить полезную нагрузку каждой жертве.

XSS на основе DOM

Атаки на основе DOM — это продвинутые атаки, которые становятся возможными, когда клиентский сценарий веб-приложения записывает предоставленные пользователем данные в DOM. Веб-приложение считывает данные из DOM и доставляет их в браузер. Если данные обрабатываются неправильно, злоумышленник может внедрить полезную нагрузку, которая будет храниться как часть модели DOM. Затем полезная нагрузка выполняется, когда данные считываются из DOM.

Как вы проверяете XSS-уязвимости?

Веб-сайт уязвим для XSS, когда он передает непроверенные входные данные из запросов обратно клиенту.

Средства веб-сканирования можно использовать для проверки уязвимости веб-сайта или приложения. Эти инструменты внедряют скрипт в веб-приложение — например, переменные GET или POST, URL-адреса, файлы cookie и другой код, который может удерживать кросс-скриптовую атаку.

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

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

  1. Найти входные векторы. Это включает в себя определение всех пользовательских входных данных приложения. Для этого можно использовать редакторы HTML в браузере или веб-прокси.
  2. Анализ входных векторов. Определенные входные данные вызывают ответы браузера, указывающие на наличие уязвимости. Проект Open Web Application Security Project (OWASP) предоставляет список тестовых входных данных.
  3. Проверьте влияние тестового ввода. Тестировщик должен проанализировать результаты выбранных им входных данных и определить, повлияют ли обнаруженные уязвимости на безопасность приложения. Тестер должен идентифицировать специальные символы HTML, создающие уязвимости, которые необходимо заменить или иным образом отфильтровать или удалить.
Уязвимости внедрения, такие как межсайтовый скриптинг, являются одним из 10 главных рисков безопасности API Open Web Application Security Project.

Как предотвратить межсайтовый скриптинг?

Ниже приведены рекомендации по устранению недостатков безопасности приложений, которые позволяют выполнять межсайтовые сценарии:

  • Экранирование пользовательского ввода — один из способов предотвращения уязвимостей XSS в приложениях. Экранирование означает получение данных, полученных приложением, и обеспечение их безопасности перед их отображением для пользователя. Это предотвращает интерпретацию ключевых символов в данных, которые получает веб-страница, как исполняемый код. Он не позволяет браузеру интерпретировать символы, сигнализирующие о начале или конце исполняемого кода, и переводит их в 9 символов.0050 сбежал . Например, кавычки, круглые скобки, квадратные скобки и некоторые другие знаки препинания иногда используются для выделения исполняемого кода. Экранирование этих символов означает преобразование их из отдельных символов, которые не отображаются, в строки, которые браузер интерпретирует как печатные версии символов.
  • Очистка пользовательского ввода очищает данные от потенциально исполняемых символов. Он преобразует неприемлемый пользовательский ввод в приемлемый формат и гарантирует, что полученные данные не могут быть интерпретированы как исполняемый код. Этот подход особенно полезен на веб-страницах, допускающих HTML-разметку.
  • Проверка ввода гарантирует, что приложение отображает правильные данные и что вредоносные данные не наносят вреда веб-сайту, базе данных и пользователям. Проверка ввода предотвращает использование XSS в формах. Он запрещает пользователям добавлять специальные символы в поля ввода данных веб-страницы, отклоняя запрос. Проверка ввода помогает снизить вероятность причинения вреда, если злоумышленник обнаружит такую ​​XSS-уязвимость.

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

Каково влияние XSS?

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

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

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

Каковы примеры межсайтового скриптинга?

Одним из примеров хранимой атаки XSS является внедрение вредоносного кода в поле комментариев на сайте электронной коммерции. Злоумышленник встраивает код в комментарий, написав «Прочитайте мой обзор этого элемента!» вместе с кодом со встроенным вредоносным URL. Код может говорить что-то вроде:

  

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

Комментарий, содержащий вредоносный контент между тегами script, будет загружаться каждый раз при загрузке страницы. Загрузка страницы активирует вредоносный файл JavaScript, размещенный на другом веб-сайте, который может украсть файлы cookie сеанса пользователя. Файлы cookie, вероятно, хранят важную информацию о поведении пользователя на сайте электронной коммерции, например данные для входа. С помощью этой информации хакер может получить доступ к более конфиденциальным данным учетной записи, таким как платежная или контактная информация.

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

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

Последнее обновление: ноябрь 2021 г.

Продолжить чтение О межсайтовом скриптинге (XSS)
  • Средства управления уязвимостями на основе рисков в облаке
  • Может ли веб-приложение быть по-настоящему безопасным?
  • Контроль приложений с помощью этих 3 инструментов тестирования безопасности приложений
  • Повышение безопасности веб-приложений и мобильных приложений
  • Как выполнить оценку риска кибербезопасности за 5 шагов
Углубитесь в безопасность приложений и платформ
  • отравление печеньем
    Автор: Рахул Авати

  • 5 угроз безопасности приложений и способы их предотвращения
    Автор: Кэти Донеган

  • Как лучше всего предотвратить XSS-атаки?
    Автор: Чарльз Ширер

  • атака проверки ввода
    Автор: Лора Фитцгиббонс

Сеть

  • 9 способов заставить модернизацию сети работать

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

  • SONiC NOS сталкивается с проблемами, связанными с мейнстримом

    По оценкам Gartner, менее 200 предприятий используют SONiC из потенциального рынка центров обработки данных в 100 000 предприятий. Один…

  • 12 распространенных сетевых протоколов и объяснение их функций

    Работа в сети заставляет Интернет работать, но ни один из них не может быть успешным без протоколов. Общие сетевые протоколы и их функции …

ИТ-директор

  • Компании на ранней стадии изучают практику на мероприятии CIO

    Стартапы на выставке инноваций Симпозиума ИТ-директоров Слоана в Массачусетском технологическом институте заявили, что их предложения решают ключевые корпоративные ИТ-проблемы, начиная с …

  • 4 совета, которые ИТ-директора могут использовать для управления изменениями

    ИТ-директора и ИТ-руководители должны быть ключевыми движущими силами программ управления изменениями. Изучите ценные советы по навигации по сложности и …

  • FTC предупреждает бизнес об использовании биометрической информации

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

Корпоративный настольный компьютер

  • Что включает в себя новый Microsoft Intune Suite?

    В связи со всеми недавними изменениями названий продуктов и надстроек Microsoft для управления конечными точками ИТ-специалистам необходимо знать, что такое Intune…

  • Нужен ли macOS сторонний антивирус на предприятии? Компьютеры Mac

    известны своей безопасностью, но это не означает, что они защищены от вирусов и других угроз. ИТ-команды могут изучить …

  • Устройства, которые работают только с Microsoft Teams, в нашем будущем?

    Microsoft Teams постоянно росла и добавляла новые функции, так что же дальше с этой многофункциональной платформой? Может быть . ..

Облачные вычисления

  • 3 правила адаптации политик управления изменениями в облаке

    Наличие политики управления изменениями может свести к минимуму риск внесения изменений. Следуйте этим правилам, чтобы адаптироваться к изменениям в облаке…

  • Как создать виртуальную машину Google Cloud Spot

    Виртуальная машина Google Cloud Spot может помочь вам воспользоваться скидками, но вы должны быть осторожны, чтобы не запускать на ней определенные приложения. Узнать…

  • Google удваивает генеративный ИИ

    На Google I/O 2023 Пол Нашавати из Enterprise Strategy Group комментирует улучшения ИИ в поиске Google, фотографиях, картах и ​​…

ComputerWeekly.com

  • «Резкий» сдвиг в глобальных тенденциях использования широкополосной связи

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

  • IBM стремится обеспечить управление мультиоблачной инфраструктурой с помощью Hybrid Cloud Mesh

    ИТ-гигант представляет решение для подключения, ориентированное на приложения, которое позволяет бизнес-операциям в гибридных облачных средах…

  • Испанские юристы утверждают, что взлом полицией криптофонов EncroChat нарушает закон о правах человека

    Адвокаты, выступающие в Мадридской коллегии адвокатов, ставят под сомнение законность взлома криптофона, который привел к арестам …

Что такое межсайтовый скриптинг (XSS)? Определение и предотвращение

Что такое межсайтовый скриптинг (XSS)?

Межсайтовый скриптинг (XSS) — это атака безопасности путем внедрения кода, нацеленная на веб-приложения, которая доставляет вредоносные клиентские сценарии в веб-браузер пользователя для выполнения. Цели не подвергаются прямым атакам, скорее уязвимые веб-сайты и веб-приложения используются для выполнения атак с использованием межсайтовых сценариев, когда пользователи взаимодействуют с этими сайтами/приложениями.

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

Из-за широкой поддержки во многих веб-браузерах и платформах JavaScript был популярным выбором для авторов XSS-атак, но атака может быть реализована на любом языке, поддерживаемом браузерами. Хотя XSS-атаки существуют уже более 15 лет, они доказали свою высокую эффективность и до сих пор часто рассматриваются как распространенный и жизнеспособный вектор атак.

Узнайте больше о 7 распространенных типах кибератак.

Воздействие межсайтовых сценариев

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

  • Раскрытие конфиденциальных пользовательских данных
  • Злоумышленники захватывают онлайн-аккаунты и выдают себя за пользователей
  • Вандализм в отношении представления содержимого веб-сайта
  • Загрузка вредоносных «троянских программ»
  • Перенаправление веб-страниц в опасные места

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

Неудачный пример межсайтового скриптинга произошел во время курортного сезона 2018 г., когда появилось вредоносное ПО для скимминга кредитных карт под названием «Magecart». впервые такое масштабное нападение произошло. Информация о кредитной карте пользователя, вероятно, была загружена на сервер, контролируемый злоумышленником, и потенциально продана или использована для мошеннических покупок.

Типы атак с использованием межсайтовых сценариев

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

  • Отраженный XSS
  • Постоянный XSS
  • XSS на основе домена
Отраженный XSS

Отраженная XSS-атака включает в себя уязвимый веб-сайт, принимающий данные (т. е. вредоносный скрипт), отправленные собственным веб-браузером цели для атаки. Поскольку вредоносный скрипт отправляется самим клиентом и не хранится на уязвимом сервере, этот тип атаки также называют «непостоянным».

Простой пример отраженной атаки XSS может заключаться в том, что злоумышленник создает URL-адрес, который передает небольшой вредоносный скрипт в качестве параметра запроса на веб-сайт, страница поиска которого уязвима для XSS:

http://vulnerable- веб-сайт.com/search?search_term=»»

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

Когда цель щелкает ссылку, уязвимый сайт принимает параметр запроса «search_term», ожидая, что это значение представляет собой то, что цель хочет найти на сайте уязвимый-website. com, когда на самом деле значение является вредоносным сценарий.

Затем на странице поиска, как и на большинстве страниц поиска по веб-сайту, когда пользователь что-то ищет, отображается сообщение «Поиск …», но поскольку уязвимый сайт не очистил значение search_term, вредоносный сценарий вводится на веб-страницу, которую загружает целевой браузер, а затем выполняется целевым браузером.

Постоянная XSS

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

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

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

XSS на основе DOM

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

Простой пример атаки XSS на основе DOM может включать ту же настройку для приведенного выше примера отраженного сценария XSS. Злоумышленник создает URL-адрес с вредоносным скриптом в качестве «search_term» и запрашивает его у потенциальных целей.

Когда цель щелкает URL-адрес, ее браузер загружает страницу поиска по сайту и уязвимые клиентские сценарии обработки. Хотя «seach_term» по-прежнему предоставляется серверной части сайта в качестве параметра запроса для обработки, сам сайт не создает веб-страницу с внедренным вредоносным скриптом.

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

XSS-атаки на основе DOM подчеркивают тот факт, что XSS-уязвимости не ограничиваются серверным программным обеспечением.

Как предотвратить атаки с использованием межсайтовых сценариев

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

Следующие рекомендации могут помочь защитить ваших пользователей от XSS-атак:

Дезинфицировать пользовательский ввод:

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

Ограничить использование предоставленных пользователем данных:

  • Использовать только там, где это необходимо.

Используйте политику безопасности контента:

  • Обеспечивает дополнительные уровни защиты и смягчения последствий попыток XSS.

Регулярно используйте инструмент сканирования уязвимостей веб-приложений для выявления уязвимостей XSS в вашем программном обеспечении.