LINUX.ORG.RU

Samba directory traversal 0-day

 , ,


0

0

В серверной части популярной реализации SMB/CIFS для *nix-систем Samba обнаружена уязвимость, позволяющая удаленному пользователю выйти за пределы каталога ресурса (share) и получить доступ к корневому каталогу системы.

Для успешной эксплуатации данной уязвимости злоумышленнику необходим доступ на запись в какой-либо ресурс на атакуемой системе. Используя специально модифицированный smbclient (см. ниже), он может создать символьную ссылку на каталог, находящийся одним или нескольким уровнями выше (../../.. и т.п.), после чего перейти по этой ссылке. Полученный им доступ будет ограничиваться полномочиями того пользователя, из-под которого осуществляется доступ к ресурсу (например, при анонимном доступе этот пользователь определяется параметром guest account).

Таким образом, на большинстве конфигураций злоумышленник сможет, к примеру, залить свои файлы в /tmp или стянуть /etc/passwd, но у него не получится утащить /etc/shadow.

В качестве workaround рекомендуется запрещать следование по символьным ссылкам (follow symlinks = no), разрешенное по умолчанию.

Ниже представлен патч, превращающий обычный smbclient3 в орудие для атаки:

--- samba-3.4.5/source3/client/client.c 2010-01-18 14:38:09.000000000 +0300
+++ samba-3.4.5/source3/client/client.c 2010-01-18 14:38:09.000000000 +0300
@@ -2754,15 +2754,13 @@
                return 1;
        }
        oldname = talloc_asprintf(ctx,
-                       "%s%s",
-                       client_get_cur_dir(),
+                       "%s",
                        buf);
        if (!oldname) {
                return 1;
        }
        newname = talloc_asprintf(ctx,
-                       "%s%s",
-                       client_get_cur_dir(),
+                       "%s",
                        buf2);
        if (!newname) {
                return 1;
Патч подготовлен для клиента из комплекта Samba 3.4.5.

Также доступно видео с подробной демонстрацией атаки.

>>> Подробности

★★★★

Проверено: anonymous_incognito ()
Последнее исправление: nnz (всего исправлений: 1)

Ответ на: комментарий от faustus

>> Теперь давай еще скажи, что нет разницы, в чем пароль - MD5 или SHA-2.

В чем разница между MD5 и другими хэшами при атаке со словарем? Ломал ли ты пароли хоть раз в жизни, или ты теоретик?


похоже, ты и не теоретик, и не практик - так, мимо проходил.
разница во времени подсчета хеша и вероятности нахождения коллизии.

val-amart ★★★★★
()

LOL
Я этой уязвимостью ещё в 92 году пользовался.

redbonnet
()
Ответ на: комментарий от sjinks

> И сильно ли поможет заранее вычисленный хэш, если используется salt?

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

faustus
()
Ответ на: комментарий от val-amart

> похоже, ты и не теоретик, и не практик - так, мимо проходил.

Начнем с того, что ты... впрочем, скипну данную часть.

разница во времени подсчета хеша

Это константа.

вероятности нахождения коллизии.

Которая 0 если нет неограниченных ресурсов? Или давай пруф нахождения такой коллизии для MD5, при заданном хэше.

faustus
()
Ответ на: комментарий от faustus

Зря вы спорите. NT пароли мы ломали на маленьком кластере за час, так как там две половинки пароля подбираются параллельно :) Для NTLM я пару раз использовал онлайновые rainbow таблицы. $6$v/NOWhof$CEVuSIIkget4sI.DGKB/mjBHetFjMBaZ5G13d71va1gXmuGBrFr/3H7ebYxIKKaY13ffPKlvR7DfSHIXk2pg91 Кто не в курсе, соль здесь - символы до 2-го знака $. С учетом того что SHA более ресурсоемкий алгоритм, чем md5, и к тому же хэш вычисляется не однократно, использовать rainbow таблицы для взлома нельзя.

По поводу того что достаточно подобрать любой пароль. Да, это так, но для перебора например 100 паролей нам понадобится в 100 раз больше ресурсов, так как нельзя использовать вычисленные хэши повторно.

farafonoff ★★
()
Ответ на: комментарий от farafonoff

> Зря вы спорите.

Почему же зря. Я так поднимаю себе ЧСВ, так как я знаю основы криптографии, а школота - нет.

NT пароли мы ломали на маленьком кластере за час, так как там две половинки пароля подбираются параллельно :)

Я тоже ломал. Половинки по 7 символов, еще и case-insensitive. За сутки на одном сервере почти все поломал, потом все в словарь, и уже на NIS passwd можно запускать. :3

По поводу того что достаточно подобрать любой пароль. Да, это так, но для перебора например 100 паролей нам понадобится в 100 раз больше ресурсов, так как нельзя использовать вычисленные хэши повторно.

Разницы с обычным passwd (crypt) практически никакой, если пользователей не на порядок больше, чем пару тысяч.

faustus
()
Ответ на: комментарий от anonymous

> Это, правда, не для паролей, а для SSL.

В смысле для взлома паролей это не сильно полезно, если только он не совсем простой, всё таки нахождение первого и второго прообразов - две большие разницы.

anonymous
()
Ответ на: комментарий от anonymous

>Сразу видно профи. Ну что дружок, расскажи, сколько по времени займет взлом пароля, как я привел. Ты ведь знаешь про радужные таблицы, и про Cuda. При этом учти, что пароль имеет 11 символов длину, нет повторяющихся букв(исключение «а», но тут в разных регистрах), использованы оба регистра, цифры, и спецсимвол. А еще не забудь про то, что хэш не MD5, а SHA. Что, пару дней говоришь? А мужики то и не знают!

Личный опыт. FreeBSD MD5 на машинке Celeron 4 2.8GHz, перебор немодифицированным john'ом. Скорость ~4k/s. Пароль в 8 букв ([A-Z][a-z][.#]) - около 14 дней.

Теперь считаем какой у нас кластер и вауля, реально получить пасс за два дня. А если учесть, что пароли меняют не чаще раза в неделю, то атака будет успешной как никогда.

Рекомендую Twofish/Blowfish, вместо SHA, он для таких целей подходит лучше некуда.

gh0stwizard ★★★★★
()
Ответ на: комментарий от anonymous

Это не то, они параллельно создали два сертификата с одинаковым MD5-хэшем - известная алгоритмическая слабость MD5. У паролей же хэш фиксированный.

faustus
()
Ответ на: комментарий от faustus

> Это не то, они параллельно создали два сертификата с одинаковым MD5-хэшем

Это и назвается коллизия. Только и я о том же - коллизии непосредственно не имеют никакого отношения к нахождению пароля по хэшу.

anonymous
()
Ответ на: комментарий от faustus

>Пример нахождения коллизии для существующего хэша MD5 в студию.

в гугеле забанили?

AVL2 ★★★★★
()
Ответ на: комментарий от Werehuman

Сессии похапе из /tmp стянуть

Попробуй

-rw------- 1 apache apache 13599 Фев  5 13:25 /tmp/sess_9da955ffdf2abc32500e27c2f09aface26fc18c6

xorik ★★★★★
()
Ответ на: комментарий от anonymous

> Только и я о том же - коллизии непосредственно не имеют никакого отношения к нахождению пароля по хэшу.

А школота в треде - считает, что имеют. Следующий коммент - именно от школоты.

faustus
()
Ответ на: комментарий от anonymous

> Это и назвается коллизия. Только и я о том же - коллизии непосредственно не имеют никакого отношения к нахождению пароля по хэшу.

Кстати, это неточно. Коллизия вообще - любое совпадение такого рода. Если найдут способ быстро искать коллизию по хэшу, тогда отношение к паролям будет самое непосредственное. Но это будет уже полный взлом алгоритма.

faustus
()

Ув. специалисты по криптографии, правильно ли я понял, что самым безопасным будет хранить пару хешей(напр md5 и sha1) для защиты от коллизий и соль(10-20 символов)

xorik ★★★★★
()
Ответ на: комментарий от xorik

Существующие методы нахождения коллизий не имеют отношения к хэшам паролей. Установки по дефолту сойдут, главное - сильные пароли (ну или вообще без них).

faustus
()
Ответ на: комментарий от faustus

>Установки по дефолту сойдут
По какому дефолту? :)
Я имею ввиду в своих велосипедах (сайтах), как лучше хранить пароли? Раньше использовал тупо md5(pass)

xorik ★★★★★
()
Ответ на: комментарий от anonymous

Как что... подменюуешь хеш рута своим хешом с своего shadow и логенися по ссш к серваку с своим паролям )

Tok ★★
()
Ответ на: комментарий от Tok

Если ты можешь перезаписать shadow, значит ты рут. Зачем такой гемор, если проще passwd root?

anonymous
()
Ответ на: комментарий от xorik

> По какому дефолту? :)

Ну вот я сейчас заглянул в shadow своего Gentoo древней сборки, там MD5 и 8 символов salt. Сойдет.

faustus
()
Ответ на: комментарий от faustus

И какой толк? Или у всех 4000 пользователей сильные пароли? Сломают одного, потом локальный эксплойт...

anonymous
()
Ответ на: комментарий от anonymous

В такой, ситуации, которую описывал я, сделать, в принципе, ничего нельзя, если не прибегать к разного вида hardware tokens.

faustus
()
Ответ на: комментарий от faustus

интересно, а из чрута оно вылезет? или нет?

никто не тестил?

desruptor
()

Вот за это я и люблю лор

Устроили эпичный срач о том, как ломать украденный shadow, хотя в новости русским по синему сказано:

не получится утащить /etc/shadow.

nnz ★★★★
() автор топика
Ответ на: комментарий от xorik

>Ув. специалисты по криптографии, правильно ли я понял, что самым безопасным будет хранить пару хешей(напр md5 и sha1) для защиты от коллизий и соль(10-20 символов)

Юзай соль + хороший алгоритм хеширования из серии SHA-2, и будет тебе щастье, добрый молодец.

nnz ★★★★
() автор топика
Ответ на: комментарий от xorik

> Ув. специалисты по криптографии, правильно ли я понял, что самым безопасным будет хранить пару хешей(напр md5 и sha1) для защиты от коллизий и соль(10-20 символов)

не правильно. если будешь хранить оба хеша, то достаточно уязвимости в любом из них. правильно хранить сха-2 с солью.

val-amart ★★★★★
()
Ответ на: комментарий от gh0stwizard

> Рекомендую Twofish/Blowfish, вместо SHA, он для таких целей подходит лучше некуда.

очень спорное утверждение

давайте, как правильно заметил nnz, закончим этот оффтопик

val-amart ★★★★★
()
Ответ на: Вот за это я и люблю лор от nnz

>Устроили эпичный срач о том, как ломать украденный shadow, хотя в новости русским по синему сказано:

не получится утащить /etc/shadow.


Это спорно, т.к. через /tmp можно залить сплоит на повышение прав. А дальше... Не так давно на хабре чел рассказывал как провели атаку на его сервер, конкретно, на апач + куча хитрых техник с использованием руткита. Так что все реально.

gh0stwizard ★★★★★
()
Ответ на: комментарий от val-amart

>очень спорное утверждение

давайте, как правильно заметил nnz, закончим этот оффтопик


Выбор есть у каждого, выбор каждый делает сам. Не вопрос.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

>Это спорно, т.к. через /tmp можно залить сплоит на повышение прав. А дальше... Не так давно на хабре чел рассказывал как провели атаку на его сервер, конкретно, на апач + куча хитрых техник с использованием руткита. Так что все реально.

Ага. Только при uid=0,gid=0 shadow ломать обычно необязательно — проще перехватчики поставить, если пароли так уж нужны.

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

nnz ★★★★
() автор топика
Ответ на: комментарий от AS

>Как говорят, это не бага, это фича. Ну или, если бага, то только в smb.conf:

«This isn't a bug, this is a feature!» — в народе считается, что это любимая фраза нынче удалившегося от дел Билли Гейца.

nnz ★★★★
() автор топика

А в чем баг то? Это не баг, а фича, сам делал так на домашнем сервере, очень удобно: кинул в расшаренную папку самбы симлинк на нужный каталог, и все файлы доступны. И в чем дыра, не совсем понятно. Что может сделать обычный юзер? tmp почитать?

anonymous
()
Ответ на: комментарий от nnz

>Ага. Только при uid=0,gid=0 shadow ломать обычно необязательно — проще перехватчики поставить, если пароли так уж нужны.

Предлагаю закончить бесмысленный спор о том нужно ли ломать пассы или не нужно, когда ты запихнул в систему руткит. На войне всем методы хороши.

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


Вот именно, либо мы допускаем, что дырка в сабже весьма опасна, либо со стопроцентной уверенностью говорим, что на моем сервере это не прокатит (можно промолчать, можно рассказать почему).

gh0stwizard ★★★★★
()
Ответ на: комментарий от anonymous

>А в чем баг то? Это не баг, а фича, сам делал так на домашнем сервере, очень удобно: кинул в расшаренную папку самбы симлинк на нужный каталог, и все файлы доступны. И в чем дыра, не совсем понятно. Что может сделать обычный юзер? tmp почитать?

Если бы самба не имела кучи настроек для ограничения доступа, то не было бы вопросов. А так, настроил шару, думаешь, что все вокруг закрыто, а оно обычным симлинком открывается...

AVL2 ★★★★★
()

это на самом деле фича. просто кто-то не хочет читать маны. ;) см. параметр: root directory = /path/to/samba/root, с которым самба штатно делает chroot() , со всеми вытекающими.

Lucky ★★
()

хм...

Странно в деф конфах каких систем это работает? или во всех дистр. *nix деф конф одинаковый ??? Баг. рули про тестаю... отпишу. :)

Aazzz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.