Автор: БИБИ
Всякий раз, когда мы думаем о хакерах, мы часто представляем себе хакера следующим образом: одинокий человек, который незаметно проникает на чужие серверы, чтобы уничтожить или украсть чужую секретную информацию. Возможно, он меняет нашу домашнюю страницу или даже крадет номера кредитных карт и пароли клиентов. Кроме того, хакеры могут атаковать клиентов, посещающих наш сайт. При этом его сообщником стал и наш сервер. Microsoft называет эту атаку атакой «межсайтового скриптинга». Большинство этих атак происходит, когда веб-сайт динамически генерирует веб-страницы, но целью хакера является не ваш веб-сайт, а клиенты, которые его просматривают.
Описание атак с использованием межсайтовых сценариев.
В журнале <<ADVISORY CA--2000-02>> CERT предупреждает всех: если сервер не сможет эффективно проверить вводимые пользователем данные, хакер введет какой-либо вредоносный HTML-код, когда эти HTML-коды ввод кода используется в программах SCRIPT, они могут использовать его для нанесения ущерба, например, для вставки отвратительных изображений или звуков и т. д., и в то же время он также может мешать правильному просмотру веб-страницы клиентами.
Мы знаем, что некоторые друзья были перенаправлены на некоторые подозрительные бесплатные веб-сайты, и все, что они получили, это от 10 до 20 маленьких окон. Эти окна часто сопровождаются недействительными кнопками, созданными JAVA или JAVASCRIPT. Это называется мышеловкой. Закрытие этих окон бесполезно. Каждый раз, когда мы закрываем окно, появляется еще 10 окон. Такая ситуация часто возникает, когда администратор недоступен. Инциденты с мышью — типичный пример использования хакерами межсайтовых методов SCRIPT для атак на клиентов.
Вредоносные теги и скрипты — это не просто розыгрыши, они могут даже украсть данные и повредить системы. Умный или даже не очень умный хакер может использовать SCRIPT, чтобы вмешаться или изменить ввод данных на сервер. Коды SCRIPT также могут использоваться для атаки на системы клиентов и полного повреждения вашего жесткого диска. И вы должны знать, что пока вы используете сервер, хакерский СКРИПТ также работает в безопасном месте на вашем сервере! Если клиенты доверяют вашему серверу, они также будут доверять вредоносному коду SCRIPT. Даже этот код приходит с сервера хакера в виде <SCRIPT> или <OBJECT>.
Даже использование брандмауэра (SSL) не может предотвратить межсайтовые атаки SCRIPT. Это связано с тем, что если устройство, сгенерировавшее вредоносный код SCRIPT, также использует SSL, SSL нашего сервера не сможет идентифицировать код. Собираемся ли мы просто отдать хакерам веб-сайт, которому наши клиенты когда-то так доверяли? И существование такого рода разрушений полностью нанесет ущерб репутации вашего сайта.
1. Пример межсайтовой атаки SCRIPT.
Согласно информации CERT, динамический ввод обычно имеет следующие формы: параметры URL, элементы таблицы, COOKISE и запросы данных. Давайте проанализируем этот веб-сайт, состоящий всего из двух страниц, имя которого: MYNICESITE.COM. На первой странице используется форма или COOKIE для получения имени пользователя:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Тогда
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>Домашняя страница MyNiceSite.com</TITLE>
</HEAD>
<BODY>
<H2>MyNice Сайт .com</H2>
<FORM метод="post" action="page2.asp">
Введите свое имя пользователя MyNiceSite.com:
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
Вторая страница возвращает имя пользователя для приветствия:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Тогда
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
End If %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %> </H3>
</BODY>
</HTML>
Когда вы обычно Когда набираю текст, все работает нормально. Если вы введете код сценария: <SCRIPT>alert('Hello.';</script>), появится предупреждающая метка JavaScript:
при следующем посещении эта предупреждающая метка также появится; это потому, что код сценария Он уже есть в файле cookie при первом посещении. Это простой пример межсайтовой атаки.
Если вы считаете, что это особый случай, вы можете поискать где-нибудь в Интернете и попробовать некоторые из них. крупные правительственные веб-сайты, образовательные веб-сайты и коммерческие веб-сайты, и на некоторых из них действительно наблюдается описанная выше ситуация. Я даже обнаружил, что веб-сайт, на котором я часто использую кредитные карты, не фильтрует входные данные,
когда мы об этом задумываемся
.Среди хакеров хакер часто бывает таким: одинокий человек, который незаметно проникает на серверы других людей, чтобы уничтожить или украсть секретную информацию других людей. Возможно, он изменит нашу домашнюю страницу или даже украдет номера кредитных карт и пароли клиентов. Хакеры также атакуют клиентов, посещающих наш веб-сайт. Microsoft называет эту атаку атакой с использованием «межсайтового скрипта». Большинство этих атак происходит, когда веб-сайт динамически генерирует веб-страницы, но целью хакера является не ваш веб-сайт, а клиенты. которые просматривают веб-сайт.
Описание атак с использованием межсайтовых сценариев
содержится в книге под названием <<ADVISORY CA --2000-02>>В журнале CERT предупредил всех: если сервер не проверяет вводимые пользователем данные эффективно, хакеры. будут вводить некоторые вредоносные HTML-коды. Когда эти входные HTML-коды используются в программах SCRIPT, они могут использовать их для нанесения ущерба, например, вставки отвратительных изображений или звуков и т. д., и в то же время это также может мешать клиентам. ' правильный просмотр веб-страниц.
Мы знаем, что некоторые друзья были привлечены к некоторым подозрительным бесплатным веб-сайтам, и их было всего 10. Эти 20 маленьких окон часто сопровождаются недействительными кнопками, созданными JAVA или JAVASCRIPT. называется мышеловкой. Закрытие этих окон бесполезно. Каждый раз, когда мы закрываем окно, появляется еще 10 всплывающих окон. Такая ситуация часто возникает в отсутствие администратора. Типичный пример использования хакерами. межсайтовые методы SCRIPT для атаки на клиентов.
Вредоносные теги и SCRIPT — это не просто розыгрыши, они могут даже украсть данные и уничтожить систему. Умный или даже неумный хакер может использовать SCRIPT для вмешательства или изменения ввода данных сервера. Использование кода SCRIPT также может атаковать клиентскую систему, и вам нужно знать, что пока вы используете сервер, скрипт хакера также работает в безопасном месте на вашем сервере. Если клиенты очень доверяют вашему серверу, они тоже будут доверять вам. доверяйте этим вредоносным кодам SCRIPT, даже если код начинается с <SCRIPT> или <OBJECT>. Форма поступает с сервера хакера.
Даже использование брандмауэра (SSL) не предотвращает межсайтовые атаки SCRIPT. Это связано с тем, что если устройство, сгенерировавшее вредоносный код SCRIPT, также использует SSL, SSL нашего сервера не сможет идентифицировать код. Собираемся ли мы просто отдать хакерам веб-сайт, которому наши клиенты когда-то так доверяли? И существование такого рода разрушений полностью нанесет ущерб репутации вашего сайта.
1. Пример межсайтовой атаки SCRIPT.
Согласно информации CERT, динамический ввод обычно имеет следующие формы: параметры URL, элементы таблицы, COOKISE и запросы данных. Давайте проанализируем этот веб-сайт, состоящий всего из двух страниц, имя которого: MYNICESITE.COM. На первой странице используется форма или COOKIE для получения имени пользователя:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Тогда
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>Домашняя страница MyNiceSite.com</TITLE>
</HEAD>
<BODY>
<H2>MyNice Сайт .com</H2>
<FORM метод="post" action="page2.asp">
Введите свое имя пользователя MyNiceSite.com:
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
Вторая страница возвращает имя пользователя для приветствия:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Тогда
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
End If %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %> </H3>
</BODY>
</HTML>
Когда вы обычно Когда набираю текст, все работает нормально. Если вы введете код сценария: <SCRIPT>alert('Hello.';</script>), появится предупреждающая метка JavaScript:
при следующем посещении эта предупреждающая метка также появится; это потому, что код сценария Он уже есть в файле cookie при первом посещении. Это простой пример межсайтовой атаки.
Если вы считаете, что это особый случай, вы можете поискать где-нибудь в Интернете и попробовать некоторые из них. крупные правительственные веб-сайты, образовательные веб-сайты и коммерческие веб-сайты, и на некоторых из них действительно наблюдается описанная выше ситуация. Я даже обнаружил, что веб-сайт, на котором я часто использую кредитные карты, не фильтрует входные данные, об этом действительно страшно думать.
Часть 2. : Предотвращение атак с использованием межсайтовых сценариев.
1. Как предотвратить атаки межсайтовых скриптов на серверы.
К счастью, технологии предотвращения атак межсайтовыми скриптами становятся все более совершенными. В настоящее время можно использовать несколько методов для предотвращения атак межсайтовых сценариев:
1. Закодировать символы динамически создаваемой страницы.
Первое, что вам нужно сделать, — это закодировать символы динамически создаваемой страницы. В противном случае вам придется это сделать. хакеры будут очень уязвимы. Можно изменить настройки вашего персонажа, чтобы легко обойти вашу защиту. Если наш веб-сайт является англоязычным, нам нужно установить только латинскую кодировку ISO-8859-1. Конкретная ситуация следующая:
<META http-equiv="Content-Type" content="text/html. ;charset= ISO-8859-1">
2. Фильтровать и ограничивать все входные данные.
Это второй метод предотвращения атак межсайтовых сценариев. При входе в систему не разрешайте вводить эти специальные символы. Поэтому мы можем добавить программу JAVASCRIPT к методу ONSUBMIT для завершения этой функции. В этом примере мы ограничиваем ввод 15 символами. Это предотвращает ввод более длинных сценариев.
В книге <<Статья базы знаний QA252985>>Microsoft предоставляет короткую программу Javascript для выполнения фильтрации входных данных. Мы также ввели этот код для нашего примера в соответствии с конкретной ситуацией, например:
function checkForm() {
document.forms[0].userName.value = _
RemoveBad(document.forms[0].userName.valuereturn true
);
}
// КОДЕ МАЙКРОСОФТ
function RemoveBad(strTemp) {
strTemp = strTemp.replace(/</>/"/'/%/;/(/)/&/+/- /
g
,"");
return strTemp;
}
Используя этот метод, вы можете фильтровать следующие символы, содержащиеся во входных данных:
% < > [ ] { } ; & + - " '( )
3. Используйте кодировку HTML и URL,
несмотря на использование вышеуказанного. Вышеупомянутый метод фильтрации и ограничения ввода является очень важным защитным методом, но он все еще бессилен против моей атаки по электронной почте. Потому что я помещаю параметры URL прямо в письмо. В ответ на эту ситуацию мы должны принять более мощные меры безопасности. Если мы будем использовать ASP, решить эту проблему будет относительно проще. Только HTML и URL кодируют динамически генерируемые веб-страницы. Для ситуации в нашем примере мы внесли следующие изменения в URL-адрес перенаправления на первой странице ввода:
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
На странице выполнения мы добавили:
strUserName = server .HTMLEncode(Request.QueryString("userName"))
и
strUserName =server.HTMLEncode(Request.Form("userName"))
Корпорация Майкрософт рекомендует кодировать все входные и выходные данные динамических страниц. Это должно быть верно даже при хранении и извлечении данных из базы данных. Таким образом, вы можете в значительной степени избежать атак с использованием межсайтовых сценариев.
Для этого добавьте в Page1.asp:
<%@ Language=VBScript %>
<% Если Request.Cookies("userName") <> "" Тогда
'перенаправляем, если обнаружен файл cookie.
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">
<TITLE>Домашняя страница MyNiceSite.com</TITLE>
</ HEAD>
<script LANGUAGE="javascript">
<! --
function checkForm() {
document.forms[0].userName.value =
RemoveBad(document.forms[0].userName.value
return true
}
;
//************************************************ ******
//Программист: НЕ ОРИГИНАЛЬНЫЙ КОД — ПРИХОДИТ ОТ MICROSOFT
//Источник кода: статья Q25z985 базы знаний Microsoft
//Описание: удаляет недопустимые символы
//*************
.***** *****************************************
function RemoveBad(strTemp) {
strTemp =strTemp.replace(/</>/"/'/%/;/(/)/&/+/-/g, "");
return strTemp
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORM метод="post"action="page2.asp" onsubmit="return checkForm; ();">
Введите свое имя пользователя MyNiceSite.com:
<INPUT type="text"name="userName" width="10" maxwidth="10">
<INPUT type="submit"name="submit" value=" submit">
</FORM>
</BODY>
</HTML>
<% end if %>
Добавьте в Page2.asp следующее:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<>"" Тогда
strUserName =server.HTMLEncode(Request.QueryString("userName"))
Else
Response.Cookies("userName") =Request.Form("userName")
strUserName = server.HTMLEncode(Request.Form("userName"))
End If %>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/ html;charset=ISO-8859-1">
</HEAD>
<BODY>
<H3 align="center">Привет: <%= strUserName %></H3>
</BODY>
</HTML>
Теперь из-за этого Нападение было эффективно предотвращено. После того, как эти вредоносные теги и сценарии закодированы, они отображаются в виде текста, как показано ниже:
Мы также можем добавить компонент IIS для фильтрации всех специальных символов из динамического ввода. Для тех веб-сайтов, которые уже разработаны, этот метод очень легко использовать для предотвращения атак межсайтовых скриптов. Наш элемент управления может перехватить цель REQUEST со страницы ASP и обнаружить содержимое таблиц, файлов cookie, строк запроса и программ:
Мы также можем добавить статистические данные в этот компонент, написав файлы журналов. Всякий раз, когда клиент вводит недопустимый символ, этот компонент регистрирует его IP-адрес и время. Подробности см. в статье Дуга Дина «Разверните собственное приложение IIS» на сайте ASPToday>>.
Нам нужно всего лишь предпринять несколько простых шагов, чтобы эффективно предотвратить атаки с использованием межсайтовых сценариев. В дополнение к трем методам, упомянутым выше, Microsoft и CERT также настоятельно рекомендуют использовать метод, который они называют «проверкой работоспособности». Например, если есть окно ввода, которое позволяет вводить только цифры, мы ограничим его, разрешив ввод только цифр от 0 до 9. Метод, используемый Microsoft и CERT для ограничения входных символов, намного лучше, чем просто фильтрация специальных символов. Приняв эти меры, вы сможете защитить клиентов, которые посещают ваш сайт, пока они там находятся.
2. Как защитить свой браузер от хакерских атак:
Как избежать атак, когда вы находитесь в Интернете? Microsoft и CERT не советуют возиться в Интернете. В ответ на эту ситуацию автор колонки в журнале PC Magazine Джон Дворак дал интересный ответ. Он считает, что это преднамеренное действие Microsoft: запугать интернет-пользователей и заставить их просматривать безопасные сайты, такие как America Online и MSN.com.
В нашем примере, даже если вы не бродите по Интернету, вы не сможете избежать атак хакеров онлайн. По иронии судьбы, большая часть опасностей исходит от веб-сайтов, которым мы доверяем больше всего. Если вы хотите, чтобы ваш веб-сайт работал без сбоев, вам не нужно загружать динамический контент или файлы cookie. Для получения более подробной информации обратитесь к соответствующей информации вашего браузера.
Microsoft также предупреждает вас, что вам следует установить активный сценарий вашего браузера в строго ограниченное состояние, а вашу электронную почту — в строго ограниченный режим получения. Будьте осторожны при переходе по ссылкам в электронных письмах. Для получения дополнительной информации обратитесь к книге под названием <<Статья базы знаний Microsoft Q253117>>. На всякий случай вам лучше иметь больше опыта работы в Интернете и всегда быть осторожным.
Заключение
Если вы бывший программист UNIX, возможно, вы не знаете, что такое межсайтовый скриптинг. Вы знаете, что имя пользователя и пароль для входа в систему администраторов многих сайтов — root и root соответственно. Точно так же имя и пароль многих администраторов баз данных — sa и пароль соответственно. Вы также знаете Webzine (например, Phrack и Alt2600). Предоставляемые ими методы могут шаг за шагом рассказать вам о слабых сторонах определенного сервера. Вы также знаете, что на таком оборудовании многие серверы баз данных веб-сайтов и веб-серверы не защищают себя. Как только он встретит хакера, машина будет парализована.
Хотя принять меры для защиты наших систем от хакеров несложно, наши системы всегда уязвимы для хакеров. Есть все основания полагать, что в следующем году появятся новые уязвимости безопасности. В документе, написанном под руководством г-на Джона Ховарда из компании CERT, упоминается: «Согласно текущим исследованиям, каждый веб-сайт с доменным именем в Интернете подвергается атакам хакеров в среднем не реже одного раза в год.
Для серверов даже один такой
».атака невыносима. Атаки с использованием межсайтовых сценариев — еще один метод, который могут использовать хакеры. Но мы можем предотвратить эту форму атаки, если выполним простую обработку, упомянутую выше.