Можно ли проводить XSS-атаки с помощью html-комментариев с JSP-кодом внутри? - PullRequest
2 голосов
/ 06 мая 2010

Правда ли, что следующий код добавляет уязвимость XSS к какой-либо странице JSP?

<!--    <%=paramName%>=<%=request.getParameter(paramName)%><BR>  -->

Это выглядит как "оставшаяся отладка" и определенно должно быть удалено из кода, но насколько это опасно?

Ответы [ 2 ]

5 голосов
/ 06 мая 2010

Да, вы смотрите на отражающую XSS-атаку. Это опасно, поскольку позволяет злоумышленнику захватить аутентифицированный сеанс. Если у вас в системе работает этот код, злоумышленник сможет получить доступ к учетным записям других людей без необходимости знать их имя пользователя / пароль.

XSS-уязвимости также можно использовать для обхода CSRF-защиты . Это связано с тем, что XSS позволяет злоумышленнику прочитать значение токена CSRF с помощью XmlHTTPRequest. XSS также может использоваться, чтобы обмануть проверки реферера.

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

http://localhost/xss_vuln.jsp?paramName='--><script>alert(document.cookie)</script><!--' 

Это бесплатный xss сканер , вам следует протестировать все приложения, которые вы пишете.

1 голос
/ 06 мая 2010

Анализатор JSP обрабатывает комментарии HTML как текст шаблона .Он не игнорирует его содержимое.HTML-комментарии игнорируются только синтаксическими анализаторами / интерпретаторами HTML (веб-браузерами!).Вместо этого следует использовать комментарии JSP, чтобы запретить обработчику JSP обрабатывать определенный фрагмент кода.

<%--    <%=paramName%>=<%=request.getParameter(paramName)%><BR>  --%>

Обратите внимание на стиль <%-- --%>, а не на стиль <!-- --> HTML-комментариев.Анализатор JSP не будет их анализировать, но удаляет их из выходных данных.Таким образом, вы не увидите их в сгенерированном выводе HTML.

Риск XSS здесь, потому что вы не экранируете контролируемый пользователем ввод здесь.Параметры запроса полностью контролируются конечными пользователями.Конечный пользователь может, например, передать --><script>alert('xss')</script><!-- в качестве значения параметра, и он будет выполнен.Это открывает двери для атак XSS и CSRF .Вредоносный скрипт может, например, отправить все куки-файлы с помощью ajax-запроса на вредоносный сервер.Затем злоумышленник может просто скопировать значение cookie, чтобы иметь возможность войти в систему как вы сами.

Вы должны использовать тег JSTL c:out или fn:escapeXml, чтобы избежать ввода, управляемого пользователем,Я подробно отвечал на это несколько раз, под каждым здесь .Более подробное описание CSRF можно найти в моем ответе здесь .

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