Примеры XSS, которые я могу использовать для проверки ввода моей страницы?

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

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

Я использую PHP, и я собираюсь реализовать htmlspecialchars (), но сначала я пытаюсь воспроизвести эти уязвимости.

Благодаря!

Вы можете использовать этот аддон firefox:

  • XSS Me

XSS-Me – это инструмент Exploit-Me, используемый для тестирования отраженных межсайтовых сценариев (XSS). В настоящее время он не проверяет сохраненный XSS.

Инструмент работает, отправляя ваши HTML-формы и заменяя значение формы строками, которые представляют собой атаку XSS. Если результирующая страница HTML задает конкретное значение JavaScript (document.vulnerable = true), тогда инструмент помечает страницу как уязвимую для данной строки XSS. Инструмент не пытается скомпрометировать безопасность данной системы. Он ищет возможные точки входа для атаки на систему. Нет сканирования портов, обнюхивания пакетов, взлома паролей или атак брандмауэра, выполняемых инструментом.

Вы можете думать о работе, выполняемой инструментом, так же, как тестеров QA для сайта, вручную вводя все эти строки в поля формы.

Например:

 <script>alert("XSS")</script> "><b>Bold</b> '><u>Underlined</u> 

Очень полезно использовать некоторые из автоматизированных инструментов, однако вы не получите ни понимания, ни опыта от них.

Точкой атаки XSS является выполнение javascript в окне браузера, который не предоставляется сайтом. Поэтому сначала вы должны посмотреть, в каком контексте пользователь предоставил данные, напечатан на веб-сайте; он может быть в блоке кода <script></script> , он может находиться в блоке <style></style> , он может использоваться как атрибут элемента <input type="text" value="USER DATA" /> или, например, в <textarea> . В зависимости от этого вы увидите, какой синтаксис вы будете использовать, чтобы избежать контекста (или использовать его); например, если вы находитесь в тегах <script> , может быть достаточно закрыть пасетез функции и закончить линию точкой с запятой, так что окончательная инъекция будет выглядеть ); alert(555); ); 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>

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

acunetix довольно хорош и имеет бесплатную пробную версию своего приложения:

http://www.acunetix.com/websitesecurity/xss.htm

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