Очень хорошо использовать некоторые из автоматизированных инструментов, однако вы не получите никакого понимания или опыта от них.
Смысл XSS-атаки заключается в выполнении javascript в окне браузера, которое не предоставляется сайтом. Итак, сначала вы должны посмотреть, в каком контексте предоставленные пользователем данные напечатаны на веб-сайте; он может находиться в блоке кода <script></script>
, он может находиться в блоке <style></style>
, он может использоваться как атрибут элемента <input type="text" value="USER DATA" />
или, например, в <textarea>
. В зависимости от этого вы увидите, какой синтаксис вы будете использовать для выхода из контекста (или использовать его); например, если вы находитесь внутри тегов <script>
, может быть достаточно закрыть parethesis функции и завершить строку точкой с запятой, чтобы окончательная инъекция выглядела как ); alert(555);
. Если предоставленные данные используются в качестве атрибута html, внедрение может выглядеть как " onclick="alert(1)"
, что приведет к выполнению js, если вы щелкнете по элементу (эта область богата для работы, особенно с html5).
Дело в том, что контекст xss так же важен, как и любые функции фильтрации / санации, которые могут быть на месте, и часто могут быть небольшие нюансы, которые автоматизированный инструмент не уловит. Как вы можете видеть выше, даже без кавычек и HTML-тегов, при ограниченном числе обстоятельств вы можете обойти фильтры и выполнить js.
Также необходимо учитывать кодировку браузера, например, вы можете обойти фильтры, если целевой браузер имеет кодировку utf7 (и вы кодируете свою инъекцию таким образом). Уклонение от фильтров - это совсем другая история, однако текущие функции PHP довольно пуленепробиваемы, если используются правильно.
Также здесь представлен достаточно длинный список XSS-векторов
И, наконец, вот фактический пример строки XSS, найденной на сайте, и я гарантирую вам, что ни один сканер не обнаружил бы это (были различные фильтры и черные списки слов, страница была разрешена) чтобы вставить базовое форматирование HTML для настройки страницы вашего профиля):
<a href="Boom"><font color=a"onmouseover=alert(document.cookie);"> XSS-Try ME</span></font>