В этой статье мы расскажем об одном из самых распространенных методов атаки на сайты — межсайтовом скриптинге (XSS). Это технология, с помощью которой злоумышленники загружают вредоносные скрипты на достоверные ресурсы и используют их для перенаправления трафика на сторонние сайты или для кражи данных.
Что такое XSS
Межсайтовый скриптинг (X-site scripting) — одна из самых известных и широко используемых технологий атак на сайты и приложения. Злоумышленники находят уязвимости на сайте и распространяют через них вредоносные скрипты. При этом целью, как правило, является не сам сайт, а конечный пользователь.
Название технологии происходит от ранних версий этого метода, когда кибермошенники специализировались на краже межсайтовых данных. Современная версия является разновидностью инъекционной атаки, то есть внедрения вредоносного куска кода.
Мошенники внедряют на взломанный сайт или в приложение вредоносный скрипт – часто JavaScript, который переносится в браузер пользователя, посетившего ресурс. Таким образом злоумышленник получает доступ к cookie-файлам пользователя, может отслеживать его поведение, загружать поддельный или внешний контент и похищать конфиденциальные данные. Например, мошенники могут внедрять скрипты на сайте через окно для комментариев.
Как это работает
Атаки с использованием межсайтового скриптинга выполняются в два этапа:
— Внедрение кода
Сначала злоумышленник должен найти способ внедрить вредоносный код на сайт или в приложение. Как правило, это делается с помощью JavaScript. Также мошенники могут использовать HTML или любой другой язык разметки.
Чтобы этот шаг был возможен, на атакуемом сайте должна быть возможность ввода пользователем данных: панель поиска, поле для ввода комментариев, форма авторизации.
Подписывайтесь на наш ТГ-канал: рассказываем о реальных кейсах, тактиках и технологиях мошенников, факты о кликфроде и не только. Без спама и с пятничными мемами.
Например, можно предположить, что комментарии пользователей формируются в виде простого текста и внедряются непосредственно в код сайта. В этом случае кибермошенник может отправить комментарий, содержащий вредоносный JavaScript или HTML, и таким образом изменить исполняемый код сайта.
— Исполнение кода браузером пользователя
На втором этапе XSS-атаки идет злоупотребление неспособностью браузера отличить вредоносный скрипт от оригинальной разметки сайта, из-за чего он начинает его исполнять.
Таким образом злоумышленник может использовать скрипт для проведения различных атак, таких как чтение данных из локального хранилища, доступ к cookie-файлам, включая кражу личной информации, фишинг или распространение вредоносного ПО.
Чем XSS-атака может грозить бизнесу
Атаки с использованием межсайтового скриптинга настолько распространены, что с момента своего появления остаются в ТОП-10 по мнению OWASP (открытый проект по безопасности веб-приложений, созданный и поддерживаемый некоммерческой организацией).
При использовании базового XSS-эксплойта злоумышленник может не заходить дальше кражи куки-файлов, тем не менее, это всё равно считается кражей персональных данных и серьезным нарушением законов о конфиденциальности в некоторых странах. И поскольку кража происходит с со стороннего сайта, то ответственность за это несет его владелец. Если речь идет о конфиденциальных данных, таких как медицинские записи или банковские транзакции, последствия могут быть еще более серьезными.
Похищенные cookie-файлы злоумышленники могут использовать для накрутки недействительного трафика на сайты и рекламу, а также для подкрепления ботововых профилей, чтобы выдавать их за реальных пользователей.
XSS и реклама
В рекламе и SEO атаки по типу XSS используются для взлома сайтов и размещения на них обратных ссылок, перенаправления посетителей, создания дорвеев и т. д. Как правило, все уязвимости пытаются монетизировать, перенаправляя посетителей на сайты партнерских программ.
Вся цепочка поставок в отрасли цифровой рекламы подвергается опасности со стороны кибергруппировок, которые специализируются на XSS-атаках. Вот краткий список участников, которые могут пострадать от межсайтового скриптинга:
- Издатели (вебмастера), чьи сайты подвергаются взлому.
- Рекламные платформы со своими медийными сетями, скомпрометированными атаками злоумышленников.
- Рекламодатели, которые теряют деньги на недействительных кликах и другом вредоносном трафике.
Такие атаки также подрывают доверие всех участников этой цепочки.
Реальные примеры межсайтового скриптинга
— Magecart и Newegg
Хакеры из группировки Magecart использовали межсайтовый скриптинг для взлома сайта интернет-магазина компьютерной техники и электроники Newegg. Они внедрили вредоносный JavaScript на страницу secure.newegg.com для оформления заказа, используя этот скрипт для кражи платежных данных клиента.
Затем они отправляли эти данные в домен neweggstats.com, принадлежащий кибермошенникам. Скрытый характер атаки позволил злоумышленникам более месяца похищать данные ничего не подозревающих пользователей. За это время они смогли похитить данные тысяч клиентов.
Такого рода атаки не только влекут за собой штрафные санкции со стороны регулирующих органов и угрозы судебного преследования, но и могут иметь катастрофические последствия для репутации компании и доверия клиентов.
— Magecart и British Airways
Еще одна попытка атаки через XSS произошла в 2018 году. Тогда авиакомпания British Airways подверглась атаке со стороны уже известной нам хакерской группировки Magecart. Злоумышленники использовали XSS-уязвимость в библиотеке JavaScript Feedify, которая использовалась на официальном сайте компании.
Злоумышленники модифицировали скрипт, чтобы отправлять данные о клиентах на вредоносный сервер, который использовал доменное имя, схожее с British Airways. Поддельный сервер имел SSL-сертификат, поэтому пользователи полагали, что совершают покупку на официальном сайте.
Таким образом мошенникам удалось провести скимминг кредитных карт при 380 тыс. транзакций бронирования, прежде чем служба кибербезопасности British Airways обнаружила взлом.
— eBay
В конце 2015 и начале 2016 года на eBay была обнаружена серьезная XSS-уязвимость. Сайт использовал параметр url, который перенаправлял пользователей на разные страницы платформы, однако не выполнялась проверка значения параметра.
Это позволило злоумышленникам внедрить вредоносный код на страницу и получить полный доступ к учетным записям продавцов на eBay, продавать товары со скидкой и красть платежные реквизиты. Они активно использовали ее для манипулирования каталогом дорогостоящих товаров на eBay, например транспортными средствами. В конечном итоге маркетплейс устранил уязвимость, но последующие атаки продолжались до 2017 года.
Типы XSS-атак
Существует два основных типа межсайтового скриптинга: атаки с сохранением данных и отраженные атаки, а также третья, менее распространенная разновидность, называемая атаками на основе DOM.
Хранимые (постоянные) атаки межсайтового скриптинга
При постоянных XSS-атаках злоумышленники внедряют вредоносный скрипт или полезную нагрузку в приложение или сайт, чтобы те постоянно хранились на сервере. Таким образом, вредоносный код будет внедряться всем будущим пользователям.
Поскольку этот метод сохраняется после первоначального действия злоумышленника, постоянные XSS-атаки являются наиболее распространенной формой межсайтового скриптинга.
Скрытые XSS-уязвимости — это разновидность хранимых XSS-атак, которые происходят, когда вводимые мошенником данные сохраняются сервером, но выполняются в другом месте, будь то во внутренней части приложения или в другом приложении в целом. Например, если злоумышленник внедряет вредоносный код в формы обратной связи, то скрипт будет запущен, как только администратор приложения откроет форму.
Отраженные XSS-атаки
Отраженные атаки с использованием межсайтового скриптинга или непостоянные XSS-атаки возникают, когда вредоносный скрипт отражается из приложения или сайта в браузер пользователя. Как правило, это делается с помощью вредоносной ссылки, которая размещается на стороннем ресурсе, например в разделе комментариев, и которая инициирует XSS-запрос к уязвимому сайту, чтобы перенаправить атаку на пользователя.
Хотя отраженная атака не требует от злоумышленника поиска сайта с XSS-уязвимостью, она не сработает, если пользователи не перейдут по ссылке. Следовательно, она имеет более низкий процент успеха, чем постоянные атаки.
XSS-атаки, основанные на DOM
Межсайтовый скриптинг на основе DOM или на стороне клиента — это атака, при которой злоумышленник изменяет среду DOM в браузере жертвы для выполнения полезной нагрузки.
Как защитить сайт от XSS-инъекций
XSS-уязвимости — одна из наиболее распространенных уязвимостей приложений. К счастью, можно легко определить, уязвим ли сайт для XSS-атак. Вот что можно сделать, чтобы защитить сайт от межсайтового скриптинга.
Ручные проверки кода и тестирование на проникновение (пентест)
При создании приложений или сайтов всегда требуется проверка кода. Желательно провести аудит исходного кода вручную, чтобы выявить уязвимости в системе безопасности, и выполнить пентест, чтобы выявить потенциальные проблемы.
В частности, необходимо посмотреть, как обрабатываются вводимые пользователем данные, например в окне ввода комментария или в поле для логина в форме авторизации, и убедиться в корректной обработке. Любой вывод HTML, включающий пользовательский ввод, должен быть закодирован, как и URL-адреса. Также при включении пользовательского ввода в URL важно провести валидацию и кодирование, чтобы предотвратить возникновение нерабочих ссылок и уязвимости системы.
Фильтрация вводимых пользователем данных
Простой способ снизить вероятность XSS-атак — это «очищать» весь вводимый пользователем текст и удалять из него опасные теги и атрибуты, такие как <script>, <body>, <html> и т. д. Однако не рекомендуется полагаться на фильтрацию как на единственный метод защиты от межсайтового скриптинга, поскольку опытные злоумышленники могут использовать такие методы, как шестнадцатеричное кодирование и вариации символов Unicode, для обхода фильтров.
Методы экранирования
Другим популярным методом защиты от межсайтового скриптинга может быть использование методов экранирования, которые сигнализируют браузеру о том, что данные не следует интерпретировать как код. Таким образом, даже если злоумышленник сможет внедрить скрипт на страницу сайта, вредоносный код не сможет быть выполнен. Методы экранирования различаются в разных языках, таких как HTML, JavaScript и CSS, и должны быть реализованы для каждого, который используется на вашем сайте.
Написание кода для экранирования пользовательского ввода — трудоемкий процесс, поэтому рекомендуется использовать существующие библиотеки, такие как OWASP ESAPI или Microsoft AntiXSS.
Самостоятельное внедрение кода
Если вы подозреваете наличие XSS-уязвимости на своем сайте, проверьте это вручную, запустив какой-нибудь безвредный скрипт. Узнайте, выполнит ли его ваш браузер. Функция alert() хорошо подходит для этой цели.
Придерживайтесь политик CSP
CSP также может защитить от XSS-атак. Content Security Policy (CSP) — стандарт безопасности для веб-разработчиков. Он ограничивает список источников, из которых можно загружать скрипты и элементы оформления при открытии сайта в браузере. С помощью заголовка HTTP-ответа можно контролировать загрузку контента на странице в зависимости от источника запроса.
Такой метод может ограничивать исполнение встроенных и удаленных скриптов, небезопасного JavaScript, а также отправку форм. Однако этот метод не является единственной защитой от XSS-атак и не заменяет безопасную разработку.
Проверяйте рекламный трафик и используйте black-листы для площадок
Если говорить о рекламе, то рекламодателю стоит анализировать качество источников рекламного трафика. Сделать это можно с помощью специальных систем антифрода, которые анализируют не только посетителей, которые перешли по рекламе, но и качество площадок в РСЯ и КМС.
Например, один из таких инструментов — Защита Яндекс Директ от сервиса кибербезопасности Botfaqtor. Мы в реальном времени получаем данные о визитах и анализируем их по сотням параметров, в том числе оцениваем качество источников трафика и даем возможность рекламодателям отправлять площадки с плохой репутацией в black-лист.
Не платите за фальшивый рекламный трафик. Экономьте бюджет вместе с инструментами киберзащиты Botfaqtor. Защита Яндекс Директ обнаруживает и блокирует до 90% ботов, проверяет качество источников трафика, анализирует ключевые запросы и UTM-метки.
Защите рекламу от недействительного трафика. Приводите только целевых клиентов и экономьте бюджет — пусть он работает на ваш бизнес, а не утекает в карманы мошенников.
7 дней бесплатный тестовый период при подключении тарифа «Безлимитный».