Статьи Дефейс у прова с помощью Zip-архива

Discussion in 'Статьи' started by Pochka, 23 Dec 2005.

  1. Pochka

    Pochka Banned

    Joined:
    26 Nov 2005
    Messages:
    27
    Likes Received:
    7
    Reputations:
    -2
    web-hack.ru
    Эта статья посвещается, тем кто хочет замутить свой хостинг с возможностью на нем распаковки ZIP-архивов или тем кто хочет ломануть хостинг с такой возможностью ;-) В этой статье вы сможете узнать об одной дырке с помощью которой можно закачивать файлы и папки в чужие аккаунты из своего =)) Если заинтересовались, то читайте дальше.
    INtRo
    Все началось с идеи создать чат, доступный с гостевого входа. В качестве провайдера был выбран Центральный Телеграф, так как коннект с ним всегда с первого раза и очень рульный. Данный пров дает 1 мег под пагу, если купить инет карту, что мы и сделали. Далее обнаружилось, что CGI/ASP/PHP етс. запрещены, можно юзать только готовые скрипты (которые, естественно, качеством не блещут). Скрипта чата среди них, конечно, не было, и мы решили заюзать под эти цели скрипт гостевой книги или форумов. Через некоторое время чат был готов, но, по прошествии пары недель, было решено, что чат сделан лажово - для входа нужно зарегистрироваться у нас, без этого - только под именем Guest и т.п. заморочки. В общем, было необходимо переделывать. У ЦТ класть файлы на пагу можно только если у тебя что-то есть на счету, а у нас (так достоверно и неизвестно почему) сняли последние 15 минут, которые лежали там специально для доступа к паге ;). Решили не класть денег на этот счет, а сделать все по-новому, с чистого листа, так сказать. И сделали, все круто и удобно, только вот встала одна проблемка - как бы закинуть на старый сайт index.html с ссылкой на новый? Доступ-то к старому запрещен! (NivaX: Тут оговорюсь - в старом чате накопилось некоторое количество заслуженных чатлан - классные, проверенные друзья, и очень захотелось увидеть их на новом сайте) А раз проблемка встала - впору поискать решение. И стали мы искать, как бы можно получить доступ на запись в файлы других паг. Все, длинное и нудное интро закончилось. ;)
    MAiN
    Теперь, собственно, о найденном баге. На паги ЦТ доступ только через веб-интерфейс :(, а чтоб не свихнуться, качая тучу файла, придумана там хорошая система: пакуешь файло в зип, кидаешь зип через веб-интерфейс, а там есть такая кнопка - распаковать. Вот и пришла идея, что распаковщик у них наверняка какой-нибудь кривой-доморощенный. Так и оказалось. При проверке на вшивость было обнаружено следующее:

    1. Если распаковываемые файлы уже существуют, то они перезаписываются без запроса;
    2. Архивер все распаковывает с путями;
    3. Мало того, что с путями, так пути еще и не проверяются на наличие точек и слешей!

    Таким образом, появилось два способа достижения цели. Первый, ясный перец, основывался на подделке путей - создавался каталог с именем из двух символов, в нем - каталог с именем паги, на которую предполагалось залить "обновление" :)), а в эту папку уже клался сам файл для заливки. Первый каталог паковался в зип, зип открывался из HIEW или чего-нить еще, два пресловутых символа в названии папки заменялись на две точки во всех местах, где были найдены в зипе. Второй способ почти такой же - создавался файл с длинным именем, начало которого потом заменялось на точки и слеши. Например, чтобы залить index.html на пагу по имени vaspupkin, создаем файл: !!_vaspupkin_index.html с необходимым содержанием, пакуем в зип, затем в HEX-Редакторе меняем "!!" на "..", а "_" на "\". Кидаем, распаковываем, получаем результат :)). Естественно, можно было писАть в любой файл, на который есть право доступа на запись, но наша цель была другая. После смены индекса на старой паге мы успокоились и откатали письмецо админам, чтобы пофиксили. Вот, вроде, и все о баге ;)
    OuTTRo
    В общем-то, зародыш этой идеи пришел из мира BBS и FIDO, где мы баловались подделкой путей в *.zip-пакетах, распаковывавшихся автоматически. О, это было сладко! :)) Ведь BBS и поинты часто под DOS/Windows, а там можно было поправить имя файла на com1/com2 (модем завален мегами данных :), prn (принтер, если включен, конечно :), ну и конечно же любимый con (вывод прямо в консоль), а код 07h при выводе в консоль - гнусный спикерный звучок ;)). Потом идея подставить вызод на уровень выше в зип, пришедшая сначала к NivaX'у, была исправлена и доработана, и вот на выходе результат. Ну что, допил пиво?

    ЗЫ: На ЦТ этот баг пофиксили после нашего письма, а вот если найдешь других провов с распаковкой архива - флаг тебе в руки ;). И помни: архив - необозримое поле деятельности!

    Путь устранения этой дыры: устанавливать более свежую версию ZIP-архиватора.