Подтвердить что ты не робот

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Например:

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

Ответ 3

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

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

Ответ 4

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

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

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

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