Чаты Поиск багов на примере D.mess 2.0.7

Discussion in 'Веб-уязвимости' started by Elekt, 6 Dec 2005.

  1. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Недавно нашёл баги в D.mess 2.0.7 . Очень популярная болталка в нашей локалке(работа через майлслот, безсерверная, фунциональная).

    Обнаружил вот что.
    Как известно, имя компа может содержать лишь 15 символов (WinXP) и притом строго определенных: латиница + ещё несколько... А запретные:
    Code:
     ' " `~ ! @#$%^&*()=+|\/ <> :;{}[]?
    +
    Code:
    русские
    +
    Code:
    непечатные
    Фишка в том, что если оттослать мессагу от имени компа, содержащего запретные символы, Дмесс иногда просто игнорирует сообщение, а иногда - окошко зависает и его нельзя закрыть. Да, не бог весть что, но для приколов в локалке - самое то :-] Сам дмесс продолжает работать, но окно с мессагой можно закрыть лишь перегрузив прогу. Очевидно, это ошибка в работе журнала(истории).

    Теперь одна очень полезная особенность: спец-символы в имени смотряться некрасиво и более рульно подменить часть букв кирилицей. Тогда мона реально подставить кого-нить. Причем, если чел напишет ответ на месагу - ответ улетит в никуда (да здравствует днс!!!).

    Однако, не любой даже одинаковый символ можно подменить. Существует сдвиг. Вот список соответствий :
    Code:
    а-р б-с в-т г-у д-ф е-х ж-ц з-ч и-ш й-щ к-ъ л-ы м-ь н-э о-ю п-я
    Тоесть, чтобы подменить латинскую на русскую "а" - надо вписать русскую "р" и т.д.
    Например,
    Code:
    Elekt
    надо написать как
    Code:
    Elхkt
    где "х"- русская.

    Также прога отображает непечатный символ "ALT+3" за букву "i" (для тех, кто в танке - чтобы набрать непечатный символ - удерживая ALT, наберите на цифровой клаве ASC-II код символа).

    ---------------------------------------------------
    Описанная уязвимость лишь капля в море. Ошибки такого рода часто встречаються в 90% болталках.
    Как правило, отсутствует проверка на длину имени компа\длину сообщения, что позволяет переполнить буфер и выполнить произвольный код на жертве. Качественной фильтрации входящих данных нет практически НИГДЕ - дмесс пожалуй самая продуманная болталка такого типа, и то как видите - не без изъяна.
    ---------------------------------------------------


    Вот список прог с возможностью отправки сообщений через майл-слот по локалке от произвольного имени, флуд-функция:

    FakeSend - легко и просто. Только отправление.
    Message.exe - только отправление.
    AVC - несколько функций
    Tar-Facker - спамилка от товарища Tarkus'a =]
    PopCapturer11 - принимает\отправляет, встроенный пассивный снифер сообщений для сети на хабах.
    NetView - многофункциональная сетевая программа для локальных сетей. Имеет в модулях НетСендер.
    ======================================

    Если кто не совсем себе преставляет, как данные вещи можно применить:

    - писать от чужого\несуществующего имени.
    - анонимно флудить жертву.
    - заставлять подвисать болталку, используя её недоработки.
    - писать эксплоит под уязвимую болталку для удалённого взлома.

    ...про зацикливание автоответчика, если мессага приходит сама от себя -- я вообще тихо молчу :))) хыхыхы
     
    #1 Elekt, 6 Dec 2005
    Last edited: 7 Apr 2006
  2. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Ковыряем LIM-Talk

    Теперь приведу другой пример.

    Один из пользователей в моей локалке написал аналог дмесса. Попроще конечно, но вроде как работает. Функций минимум: автоответ, история.
    Софтинка прошла жёсткий тест на уязвимости.. и не зря!



    ========LIM-Talk_2005.03

    Скачать LIM-Talk_2005.03
    Простите, исходники мне так и не отдали, боялись :)

    При тесте на бажность открылись интересные подробности.

    Во входящем сообщении не проверялось имя компа-отправителя. Вообще.
    Само собой при большой длине имени отправителя буфер переполняется и ланталк с ошибкой падает, что собственно можно использовать для выполнения произвольного кода. Талк запускается под учёткой пользователя, а это как правило в 90% случаев - Админ. Вобщем, хорошая такая дырочка.

    Затем выяснились ещё вот какие интересные подробности.
    Журнал реализован в папке "logs". Там храняться "ххх .txt" файлы, где "ххх" - имя отправителя.
    При приёме сообщения лантал выводит на экран. При закрытии окна (именно при ЗАКРЫТИИ!) идёт проверка "имени отправителя" на уже имеющиёся лог-файл. Если такого отправителя небыло - создние файла "имя оправителя".txt и запись новых сообщений.

    Так вот. Если имя отправителя содержит в себе символы, которые запрещены в названиях файлов - лог-файла не создастся. Ошибки при этом не вылетает - лог просто незаписывается, пропадает.
    Так например:
    Code:
    "**HACKER**"
    Дальше больше - если имя отправителя например вот такое:
    Code:
    "../../../../../../../../troyan"
    (без кавычек!), то... в корневой директории диска, где находиться талк создастся "troyan.txt" :)
    Ну, можно и вот так:
    Code:
    "../../../../../../../../WINDOWS\troyan"
    Внимание! Создание файла происходит ПОСЛЕ закрытия окна сообщения. Не забудьте закрыть(ctrl+W).

    Но *.txt расширение как-то не катит =]
    Я угробил немало времени, пытаясь обойти расширение... и нашёл способ!
    Х.з. почему, но если в конец имени поставить двоеточие, то расширение "*.txt" не создаётся.
    Пробуем:
    Code:
    "troyan:"
    . Создаётся файл "troyan" без расширения.
    Пробуем:
    Code:
    "troyan.exe:"
    ... ГЫГЫГЫ :) Готово.

    ... к сожалению двоеточие не только рубит расширение. Оно отрезает всё сообщение после себя.
    Таким образом мы можем создать в любом известном нам месте на диске жертвы:
    - текстовый файл с заданным содержанием
    - любой другой файл без содержания (0 байт объёма)


    ... так же есть ограничения на символы: нельзя использовать русские буквы в пути, двоеточие для междисковых переходов(ибо его наличие есть завершение пути)

    Т.е толка от инклуда почти никакого.
    Однако, кое-что поганого всё же можно сделать :)
    Если имя оправителя будет вот таким: "[пробел]:" или "[пробел][пробел]:" , где [пробел] - это и есть пробел :)) :
    Code:
    ("  :")
    , тогда создастся файл лога с именем в два пробела. Стандартными средствами виндов файл с таким именем НЕЛЬЗЯ создать, и соответственно нельзя удалить.

    Так же при открытии более 72 окон - работа талка опять же аварийно завершаеться. Можно просто послать 73 собщения от разных имён - и талк упадёт.
    При тестировании выяснилось, что если имя отправителя ВООБЩЕ ПУСТОЕ, то талк при приёме каждого такого сообщения открывает окно и присваивает имени отправителя имя "ts[N]", где [N] - номер сообщения по порядку. Итак, послав 73 сообщения от пустого имени отправителя мы снова убиваем талк.


    ========LIM-Talk_2005.03

    Скачать LIM-Talk_2005.11
    Простите, исходники мне так и не отдали, боялись :)

    Об багах 2005.03 версии было честно отписано автору. Он долго мучил себя и меня, разбираясь в сути проблем. Как бонус в новую версию ввёл добавление: фильтр мата... Эх :)

    ===================
    Хочу сказать, что практически во всех болталках в автоответчике отсутствует проверка на совпадение имени получателя-отправителя. И как только возникает возмоность отправить мессагу от произвольного имени, становиться валидной атака на автоответчик - его зацикливание.
    Если вы видите, что у жертвы включён автоответ - просто шлёте мессагу ему же от его же имени. Всё :)

    Как вариант, можно провести атаку на зацикливание автогответа, если присутствует сразу два пользователя с включёнными автоответчиками.
    Стравливаете их автоответчики между собой :)
    ====================


    Это я к тому, что автор так не исправил в этом релизе данную багу, а так же багу с подменой русских букв.

    А словарь имеет следующую багу. Если умудриться добавить в слов. запас строчку вида "[пробел][пробел],[пробел]":
    Code:
    "  , "
    , то при приёме сообщения, содержащего где-либо два пробела подряд - талк зависает и умирает.
    При строчке "[пробел],[пробел]" - талк дохнет от одного единственного пробела(но это уже слишком, кто ж им пользоваться тогда будет?).
    Для надежности было бы не плохо воткнуть подвис на три пробела, но так к сожалению почему-то не катит.

    ========LIM-Talk_2005.03
    Скачать LIM-Talk_v2_with_SMILES
    Простите, исходники мне так и не отдали, боялись :)

    Спустя некоторое время вышел ещё один релиз, держащий смайлы.

    И тут не обошлось без приколов :)
    При просмотре списков соответствия ("alt", "smiles") невольно обращаешь внимание на имена файлов. А что если и здесь инклуд?.. Точно!
    Шлём сообщение, содержащее:
    Code:
    *../../../../WINDOWS/system32/setup:
    хахаха) эта картинка есть в любой ХР, 2003. Возможно и в 2000.

    При экспериментах всплыла ещё вот такая ошибка:
    Code:
    *:
    Вываливаеться еррор.


    ========================

    По данной методике можно расковырять практически ЛЮБОЙ талк. Главное - немного желания, удачи и мозгов.
    Скоро напишу тестовый эксплоит к ним.

    Всем удачи в происках!
     
  3. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    713
    Likes Received:
    142
    Reputations:
    50
    Особое спасибо за список нужных :))) прог для флуда/спама=)