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

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

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

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

Спасибо!

Ответы [ 4 ]

14 голосов
/ 29 августа 2011

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

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

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

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

4 голосов
/ 12 сентября 2013

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

Смысл 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>

4 голосов
/ 29 августа 2011

Например:

<script>alert("XSS")</script>
"><b>Bold</b>
'><u>Underlined</u>
1 голос
/ 29 августа 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...