Межсайтовый скриптинг — недооцененная уязвимость

Опубликовано: 10 Апреля, 2023


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


Межсайтовый скриптинг (или XSS) — одна из наиболее распространенных веб-атак на уровне приложений. XSS обычно нацелен на сценарии, встроенные в страницу, которые выполняются на стороне клиента (в веб-браузере пользователя), а не на стороне сервера. Сам по себе XSS представляет собой угрозу, вызванную недостатками интернет-безопасности языков сценариев на стороне клиента, при этом HTML и JavaScript (другими являются VBScript, ActiveX, HTML или Flash) являются главными виновниками этого эксплойта. Концепция XSS заключается в том, чтобы манипулировать сценариями веб-приложения на стороне клиента, чтобы они выполнялись так, как этого хочет злоумышленник. Такая манипуляция может включать в страницу сценарий, который может выполняться каждый раз при загрузке страницы или всякий раз, когда выполняется связанное событие.


Базовым примером XSS является случай, когда злоумышленник внедряет скрипт в URL-адрес легитимного сайта покупок, который, в свою очередь, перенаправляет пользователя на фальшивую, но идентичную страницу. Вредоносная страница запускает сценарий для захвата файла cookie пользователя, просматривающего сайт покупок, и этот файл cookie отправляется злоумышленнику, который теперь может перехватить сеанс законного пользователя. Несмотря на то, что никакого реального взлома сайта покупок не было, XSS все же использовал уязвимость скрипта на странице, чтобы заманить пользователя в ловушку и получить контроль над его сеансом. Уловка, которая часто используется, чтобы сделать вредоносные URL-адреса менее очевидными, заключается в том, чтобы XSS-часть URL-адреса была закодирована в HEX (или других методах кодирования). Это будет выглядеть безобидно для пользователя, который распознает URL-адрес, с которым он знаком, и просто игнорирует и следует «обманутому» коду, который будет закодирован и, следовательно, незаметен.


Владельцы сайтов всегда уверены, но хакеры тоже!


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


Последствия XSS


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


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



  • Кража личных данных
  • Доступ к конфиденциальной или ограниченной информации
  • Получение бесплатного доступа к платному контенту
  • Отслеживание привычек пользователя в Интернете
  • Изменение функциональности браузера
  • Публичная клевета на физическое или юридическое лицо
  • Дефейс веб-приложений
  • Атаки отказа в обслуживании

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


Практический пример XSS на тестовом сайте


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



  1. Загрузите следующую ссылку в свой браузер: http://testasp.acunetix.com/Search.asp вы заметите, что страница представляет собой простую страницу с полем ввода для запуска поиска.

Изображение 24827
фигура 1



  1. Попробуйте вставить в поле поиска следующий код, и обратите внимание, как на странице отобразится форма входа:

    Затем просто нажмите кнопку поиска после ввода кода.

Изображение 24828
фигура 2

Из-за уязвимости XSS на странице стало возможным создать поддельную форму входа, которая может собирать учетные данные пользователя. Как видно из шага 2, код содержит раздел, в котором упоминается «destination.asp». Именно здесь хакер может решить, куда поддельная форма входа будет отправлять данные для входа пользователя, чтобы их можно было получить и использовать злонамеренно.


Хакер также может внедрить этот код, передав его через адресную строку браузера следующим образом:


Рисунок 3


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


Зачем ждать взлома?


Наблюдение, которое можно сделать, когда публикуются новые истории о последних взломах, заключается в том, что сайты, принадлежащие крупным брендам и корпорациям, взламываются точно так же, как и сайты, принадлежащие предприятиям с гораздо меньшим бюджетом. Это ясно показывает, что отсутствие безопасности не связано с ресурсами, а напрямую зависит от недостаточной осведомленности предприятий любого размера. По статистике, 42% веб-приложений, которые запрашивают аудит безопасности, уязвимы для XSS, что, безусловно, является наиболее повторяющимся эксплойтом с высоким риском среди всех протестированных приложений. Усилия по повышению осведомленности о том, насколько легко опытному хакеру использовать уязвимое приложение, похоже, не заходят слишком далеко. Все еще очень часто можно увидеть менталитет «Посмотрим, когда меня взломают», все еще сохраняющийся среди владельцев сайтов, которые в конечном итоге рискуют потерять много денег, а также доверие своих клиентов. Любой, кто заинтересован в изучении этого вопроса, увидит, что даже люди, называющие себя экспертами по безопасности, чувствуют себя комфортно, заявляя, что XSS переоценен и не может быть использован для достижения серьезных результатов в веб-приложении. Однако дальнейшие исследования также докажут, что статистические цифры говорят сами за себя, и эти же статистические данные продолжают расти со скоростью, которая в конечном итоге затмит утверждения этих недоверчивых «экспертов».