LINUX.ORG.RU

Уязвимость в sudo


0

0

SuSE Security Team обнаружила ошибку в программе sudo, которая устанавливается с атрибутом setuid-root. Существует возможность выполнять sendmail с правами привилегированного пользователя в недостаточно безопасной среде.

Todd Miller анонсировал 15 января версию 1.6.4p1, с исправлением этой ошибки. Исходные тексты: http://www.sudo.ws/sudo/dist/sudo-1.6...

Пакет для Slackware 7.1: http://www.linux.zp.ua/util/sudo-1.6....

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



Проверено:

> И все-таки, такой chown в природе существует?
Существовал с год назад :)
Мучал NTFS напрямую. Код был заимствован не-то из BSD не-то из Linux.

> posix chown не может дать файл во владение юзер
Стандартный - не может.
Это особенности реализации вызова chown в microsoft-овской posix libc.


> А насколько трудоемко найти plain-text-passwd по зашифрованному паролю NT,
при условии что он короче 8 символов?

Часы. Есть готовые утилиты с год назад были популярны утилиты серии l0phtcrack


> или есть
какие-либо ускоренные алгоритмя для паролей NT, кроме dict-based?

Мож и есть, но мне неизвестны.

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


> "правильный" chown - это chown, не использующий API.
> В смысле win32 API? И все-таки, такой chown в природе существует?
> Вы же сказали, что posix chown не может дать файл во владение юзеру,
> отличному от текущего. То есть он все-таки может?
> А насколько трудоемко найти plain-text-passwd по зашифрованному паролю NT,
> при условии что он короче 8 символов? Можно только перебором, или есть
> какие-либо ускоренные алгоритмя для паролей NT, кроме dict-based?

Ну ты, hvv, и даун!!!
Не хочешь смотреть на NT, а вопросами про неё всех уже заебал.
Бегом ставить NT, MSDN и учиться, учиться и учиться!!!
Как наберёшься чего-нить - приходи, мы тебя с Огром кучно отъебём во все дырки. Чмо ушастое.

А слюникс свой выкини нахуй.

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

to all:

Сложилось у меня ощущение, что люди, к. спорят с ОГРами, никогда под виндовс не работали. Я работал. После того, как я перешел на UNIX, на мастдай плююсь далеко и сильно. Просто попробовать надо. И сравнить. Спорить не с чем.

disassembler
()

   Существовал с год назад :)
   Мучал NTFS напрямую. Код был заимствован не-то из BSD не-то из Linux.
Вау, что, писал прямо на винт, используя знания формата файловой системы?! Оригинально!
Честно говоря, с трудом верится что это хорошо работало - ведь все метаданные
чаще всего сидят в кэше.. Или ее применение всегда требовало ребута потом?
   Ну ты, hvv, и даун!!!
   Не хочешь смотреть на NT, а вопросами про неё всех уже заебал.
   Бегом ставить NT, MSDN и учиться, учиться и учиться!!!
   Как  наберёшься  чего-нить - приходи, мы тебя с Огром кучно отъебём во
   все дырки..
Чтобы понять, что говно дурно на вкус, не обязательно его с[есть в кол-ве
10 тонн. Можно узнать об этом у того, кто его пробует (или по работе должен
есть каждый день по ведру) и кто еще способен различать говно и норм. еду на вкус.
 Мои тебе соболезнования - ты уже различать их не можешь, и возможно ты уже
на него конкретно подсел.

hvv
()

hvv:
Если честно - не знаю. Исходнюков я не видел.
Сейчас пытаюсь найти экземпляр...

AffreuxChien
()

2AffreuxChien: Если ты думаешь, что наличе перловского скрипта способно скрыть факт твоей глупости, то вынужден тебя огорчить. Приведенный фрагмент оставляет запись в журнале как "востановлненный из бэкапа", а твое предлоежние на счет nslsvice вообще показывает твое полное и окончательно не понимание, что есть winlogon а что есть gina...
"поставленная задача - скрытное чтение админом из пользовательского файла - более, чем решаема,"
Ни хрена она не решаема, т.к. запись в журнале будет иметься в наличии, о чем ты по своей тупости просто не догадываешся, потому как достаточно одного раза попробывать, чтоб знать.
2hvv: "Вот видишь - дырки-то есть"
Специально для тебя повторяю - дырок нет. Тем более для таких незнаек как ты...
2AffreuxChien: " GINA/замена оного враппером - делается это как 2 байта переслать, изменение не относится к пользовательским данным :)"
После прочтения этого пассажа, я просто чуть со смеху не помер... gina только передает данные winlogon'у, а не запускеат пользователя...
"Это говоря об "узких" местах защиты - а их есть"
Это называется попытка скорчить умную рожу... Примерно как отличник который вдруг осознал, что урок не выучил и теперь пытается выкрутится общими фразама...
"Если нужен метод без использования "правильного" chown-а"
Я очень Вас прошу больше не упоминать об этой дурости до тех пор пока её не покажете, а пока Вы - безмозглый болтун.
"Получаем пароль пользователя"
И как Вы его получаете?
"Админ может всегда получить список всех шифрованных паролей"
И как он из будет расшифровывать? Только умоляю не надо приводить в пример l0pht эта утилита только на NT4 работала да и то до SP3, где была утилита syskey. На данный момент l0pht может только подобрать пароль прямым перебором, что займет очень много времени, а при правильной политике (юзер меняет пароль скажем каждый месяц вообще практически не применим).
2anonymous (*) (2002-02-04 18:24:45.0): Помолчал бы? А? Ведь сам же не в зуб ногой...

Ogr
()

> Приведенный фрагмент оставляет запись
См. выше. Уж как нибудь буз шибко умных мнений разберёмся.

> gina только передает данные winlogon'у
Я плачу.
GINA передаёт данные КУДА УГОДНО!
С добрым утром!

Советую хоть иногда мельком заглядывать хотя бы в microsoft-овскую документацию.

А то то su в Windows нету, то владельца нельзя поменять, то вдруг GINA оказывается только winlogon-у пароли стала передавать.

AffreuxChien
()

to OGR.

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

disassembler
()

   2hvv: "Вот видишь - дырки-то есть"
   Специально  для тебя повторяю - дырок нет. Тем более для таких незнаек
   как ты...
Сам же сказал, что через на MSDN написано, как в драйвере это обойти.
   пример  l0pht  эта  утилита только на NT4 работала да и то до SP3, где
   была  утилита  syskey.  На  данный момент l0pht может только подобрать
А будет ли утилита syskey работать как надо l0pht на NT c SP свежее чем SP3?

Но с тобой Огр, действительно трудно общаться. В этом треде можно найти
более десятка мест, где ты сам себе противоречишь в принципиальных местах..
На личности еще начал переходить..

hvv
()

hvv:
Утилита syskey предназначалась для опциональной шифровки пользовательских данных (тех самых).
Без неё - вообще труба была.

AffreuxChien
()

2AffreuxChien: "GINA передаёт данные КУДА УГОДНО!"
Мда... Спасибо все свободны, а Вас Роман я отправляю изучать что-нить по поводу gina...
"А то то su в Windows нету"
Это Вы сами придумали? Точно также как и универсальный chown не оставляющий следов? :)
2disassembler: "как я вижу, и днем и ночью на посту"
Это эффект присутствия... Меня как бы нет, но всем кажется что я есть...
2hvv: "На личности еще начал переходить"
А что ты ожидал? Когда один заявляет, что есть такая куртая утиликта, но я её сейчас найти не могу, а вот год назад она была, но вы мне верте она была. Или когда другой заявляет, я этого не знаю и знать не хочу, а значит там ни чего не работает. Ну и что таким людям я должен говорить? Говорить что они такие умные все понимают или правду сказать что они... В общем ты это называешь переход на личности.
"Сам же сказал, что через на MSDN написано, как в драйвере это обойти"
Блин, но ты же мне не веришь! Будь уж последовательным до конца.
"А будет ли утилита syskey работать как надо l0pht на NT c SP свежее чем SP3?"
До SP3 пароли могли быть расшифрованы, после, хранится только хэш.

Ogr
()

> Это Вы сами придумали? Точно также как и универсальный chown не оставляющий следов? :)

Про отсутствие - придумал некий Ogr, а так - она поставляется компанией Microsoft в составе Resource Kit.
Причём утилита su в Microsoft-овской реализации опасна, т.к. может воспринимать пароль из переменной окружения.

Относительно GINA - добро пожаловать к Microsoft-овской документации на предмет правил замены GINA на собственный и документации по оному.

Утилита chown, работающая вне API для backup|restore либо ссылка на неё будет предоставлена, как только это станет возможжным.

AffreuxChien
()

to OGR

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

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

disassembler
()

2AffreuxChien: "Утилита chown, работающая вне API для backup|restore либо ссылка на неё будет предоставлена, как только это станет возможжным."
Я же Вам уже посоветовал что-нить почитать. Почему не прочили? А? Алфавита не знаете? Ну ладно, просто запомните что вы очережной раз сели в лужу. В общем либо давайте утилиту которая не будет использовать SE_RESTORE_NAME (SeRestorePrivilege), либо прото помолчтите, не говоря уж об извенениях.
"Относительно GINA - добро пожаловать к Microsoft-овской документации на предмет правил замены GINA на собственный и документации по оному."
А Вы прочитали документацию по Wlx функциям или нет?
2disassembler: Кто ж тебе даст сервер зашадаунить? :) Сам решил, так потом придется объяснять почему было это сделано (не говоря уж о том, что о таких вещах предупреждают заранее), ну а такая мелочь как прозрачное шифрование файлов зарубит твою идею на корню.

Ogr
()

Это уже не смешно

Чего вы мучаетесь - права, пароли... Зная админский пароль, делаем fopen на \\.\PhysicalDrive0 и скачиваем все с винта на низком уровне. Заливаем на другой такой же винт, вставляем в свой комп, заходим под админом, делаем Take Ownership на все файлы и активно используем все, что получили. Что касается EFS - так присвоим админу еще и роль Recovery Agent'а...

anonymous
()
Ответ на: Это уже не смешно от anonymous

А поставить права доступа на \\.\PhysicalDrive0 не судьба?

anonymous
()

Ага и запись в журнале, что файл был прочитан (это как минимум). И опять таки, при прозрачном шифровании тоже ни чего не выйдет. Но тем не менее вернемся к теме - sudo есть костыль, при котором у пользователя есть все шансы получить локального рута. Не говоря уж об ущербной систме прав 3x3, при этом даже если выкачть патчи для нормальных acl, дальше файловой системы они не идут, но при этом куча программ просто перестанет работать (те которые suid делают).

Ogr
()

Поставить права? Ну напиши мне тогда такую команду, чтоб эти права поставить. Самому узнать интересно, если честно. И еще - я ведь могу это и из-под Local system account сделать.

anonymous
()

Смотри - Audit. Правый клик на файле/свойства -> закладка Security, в XP возможно придется в Folder Options/View снять галочку у Simple File Sharing.

Ogr
()

Ты не в курсе, что УВИДЕТЬ файл \\.\PhysicalDrive0 штатными средствами невозможно??? И вообще, ты хоть в курсе, что этот файл является точкой для _доступа к диску на низком уровне_, т.е. позволяет читать/писать СЕКТОРЫ винта??? А по поводу "установить права на файл": ACL к файлу хранится в ФАЙЛОВОЙ СИСТЕМЕ, а указанный мной файл находится на виртуальной файловой системе, доступной только через редиректор, и для которой понятия ACL не предусмотрено. Эх, ты...

anonymous
()

А ты попробуй для начала что происходит на самом деле.
"Ты не в курсе, что УВИДЕТЬ файл \\.\PhysicalDrive0 штатными средствами невозможно???"
CreateFile штатное средство? Так вот
if( (hDev = CreateFile( TEXT("\\\\.\\PhysicalDrive0"), GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL )) != INVALID_HANDLE_VALUE )
Отрабатывает нормально. Но используя hDev прочитать диск все равно не получится, придется вместo PhysicalDrive0 писать C:, так что запись в журнале все равно останется.

Ogr
()

Ogr, а зачем тогда этот спецфайл существует, если из него нельзя читать?
Что можно делать с таким спец. файлом тогда и зачем вообще он существует?
Может открывать надо на GENERIC_READ, а не на GENERIC_WRITE как в твоем коде?
Или это опять очережное проявление исключительной стройности виндов?


Еще - ответь пожалуйста на вот это:
   "То есть я говорю про то, что показывать BSOD - это лишнее"
   BSOD  показывается  (откатись  назад и прочти) в случае если произошла
   попытка внести изменения в winlogon.
В смысле изменения в образ winlogon.exe на диске? Стремно.. Ведь он все равно
исполняется и не висит от пуска системы до останов AFAIR, и пишущий в
winlogon.exe должен получить error: text file busy или как там под виндами..

hvv
()

2hvv: Ба!!! Да Вы этот тред еще читаете! А я то думал, у Вас совесть проснулась и решили по теме в которой не в зуб ногой ни чего не говорить. Ну ладно, значит я ошибся... "если из него нельзя читать? Что можно делать с таким спец. файлом тогда и зачем вообще он существует?" Советую посмотреть в сторону (читать не предлагаю так как я в курсе что это не для Вас) в IOCTL_DISK_*, в кратце: можно форматировать, узнать разбивку диска, переразбить диск, сделать проверку диска и записать (ни одна из этих операций при здравом размышлении не требует записи со стороны приложение, не путать с драйвером). Про generic_read могу сказать, что ни туда копаете... "В смысле изменения в образ winlogon.exe на диске?" Значит не прочли... BSOD если измененный winlogon загружается память.

Ogr
()

Слышь, Огр - я самолично открывал девайс по fopen("\\.\PhysicalDrive0","r+b") - и он открылся. И я прочел из него MBR, а не оглавление диска C: - т.е. я прошел _мимо_ файловых систем, миновав все их супер-пупер секурити, и вследствие этого аудит на меня _не распространяется_, ибо флажок "делать аудит" определен в рамках _дескриптора файла на файловой системе_ - а рассматриваемый файл в не принадлежит файловой системе NTFS, а даже наоборот - файловая система есть лишь часть этого виртуального файла.

anonymous
()

В общем, Огр, сначала думай, потом делай, а потом уж п*&^%ди!

anonymous
()

anonymous (*) (2002-02-11 22:38:04.0): "я самолично открывал девайс по fopen("\\.\PhysicalDrive0","r+b") - и он открылся"
Хватит гнать, fopen не открывает файл в share mode, а значит вызов закончится не удачей. Ты прежде чем говорить (кстати та строчка должна была быть как минимум fopen("\\\\.\\PhysicalDrive0","r+b"), что лишний раз подчеркивает какой гон ты несешь), поробуй чем бредить.
PS да кстати когда будешь пробывать не забудь речь идет про ntfs

Ogr
()

Я попробывал сделать fopen, действительно диск прочитался, но запись на аудитируемый файл в жернале все же появился...

Ogr
()

   драйвером).  Про  generic_read могу сказать, что ни туда копаете... "В
   смысле  изменения  в образ winlogon.exe на диске?" Значит не прочли...
   BSOD если измененный winlogon загружается память.
Ничего кроме твоих реплик я не читал про это. Могу сказать, что ты очень
хреново об[ясняешь - только раза с 5-ого ты об[яснил это нормально..

Про остальное - ты вообще очень смешно в этом треде выглядишь.. Уже раз
15ый себе противоречишь. Ты бы сам доки почитал, прежде чем здесь так
лажаться..

Ладно, еще вопрос: при дефраментации FS попадет ли в журнал аудита сообщение
когда будут перемещаться фрагменты файла? Если нет - то возможно, что
есть дырочка если при перемещении кластеров исходные кластеры не забиваются
нулями: мы через API перемещаем файл в другие кластеры, а потом поблочно
считываем содержимое тех кластеров, где был этот файл.

hvv
()

В общем, так - ОГР ГОНИТ НЕЩАДНО. Специально проверил: на файловой системе NTFS создаемой тестовый файлик (не пустой, для верности), выставляем на него аудит. Убеждаемся в Local security policy, что аудит активен. Читаем из файла (обычным образом, через открытие файла в notepad'е) - записи аудита появляются. Проверяем програмкой, прямо читающей диск через \\.\PhysicalDrive0 - запись аудита НЕ ПОЯВЛЯЕТСЯ. Это значит, что чтение данных "в обход" файловой системы прямо с винта _работает_, и "Великолепный аудит" это _не отслеживает_ (еще бы он его отследил, файл \\.\PhysicalDrive0 не принадлежит файловой системе :-)) В общем, Огр намеренно солгал насчет регистрации доступа к объекту. Огр, что возразишь? To hw: а зачем считывать _те_ кластеры, где файл был - мы его из его "живого" местоположения получаем, как я уже сказал, без всяких дефрагов :-)

anonymous
()

В смысле, Огр соврал насчет того, что запись аудита о доступе к файлу появилась - ибо запись не появляется :-) В общем, тестирование от Огра в лучших традициях тестирования от Микрософта - сообщаем то, что хотели бы видеть, а не то, что происходит на самом деле. Огр, ты в самом деле надеялся, что у линуксоидов Win2k под рукой не найдется, чтобы проверить твои слова?

anonymous
()

   To hw: а зачем считывать _те_ кластеры, где файл
   был  -  мы  его  из  его  "живого"  местоположения получаем, как я уже
   сказал, без всяких дефрагов :-)
Ну если действительно можно читать винт поблочно и без записей об этом в
журнале аудита, то никакие дефраги точно не нужны.
 Еще я бы тогда попросил проверить - а считывание с "\\.\C" (то есть  с
псевдофайла, соотв. разделу) оставляет запись в журнале аудита? По-идее тогда
тоже не должна.
.. Наверно надо вам обоим привести сюда номера билдов и сервиспаков для
точности..

hvv
()

\\.\PhysicalDrive0 - отлично открывается сам так когда-то делал в win2000. многие известные проги типа DiskEditor именно так и поступают

так что надо сначала думать или проверять а потом...

rush

anonymous
()

Я тестировал это дело на Windows 2000 Professional, Service pack 2, Security Rollup последний. А что касается проверки на предмет \\.\C - то здесь \\.\C:\ - это обращение через файловую систему (с аудитом), а \\.\C: (без последнего слэша) - это обращение к партиции минуя файловую систему (без аудита, проверил). Аналогично \\.\A: - флопёныш на низком уровне, \\.\A:\ - файловая система на флопёныше. В общем, /dev/hda* в чистом виде, за исключением того, что у нас в линуксе на них можно раздать права, а в Win нельзя (по моим предположениям, эти девайсы доступны только администраторам). За правильность утверждений, помеченных как "предположительные" не поручусь но вероятность этого процентов этак 95, а вот за то, что \\.\C:\ выводит список файлов - поручусь, как и за то, что \\.\C: прочитать возможно. К счастью, немного затрудняет жизнь хакерам то, что спецификация NTFS является закрытой. В общем, ЕСЛИ АДМИНИСТРАТОР ЗАХОЧЕТ - НИЧТО НЕ ЗАЩИТИТ. Поэтому sudo - меньшее из всех зол, поскольку, например, если в Win надо дать возможность субъекту дефрагменитровать конкретную ФС, он сможет прочесть без аудита любые данные с нее (и не только с нее, как уже было доказано). sudo же позволит ограничить действия субъекта строгими рамками.

anonymous
()

Итак, сегодня мы вместе доказали, что можем, если захотим, работать единым фронтом супротив общего соперника :-)

no-dashi ★★★★★
()

2hvv (*) (2002-02-12 13:44:05.0): "Могу сказать, что ты очень
хреново об[ясняешь - только раза с 5-ого ты об[яснил это нормально"
Так я же сразу предложил тебе что-нить почитать на тему обсуждения, вот скажем твое не жедание читать, проявляется вот в этой цитате
"при дефраментации FS попадет ли в журнал аудита сообщение когда будут перемещаться фрагменты файла?"
Опяттаки отсылаю к написаному неделю назад, где уже это обсасывалось - да оставляет запись в журнале.
2anonymous (*) (2002-02-12 14:07:07.0): "Проверяем програмкой, прямо читающей диск через \\.\PhysicalDrive0 - запись аудита НЕ ПОЯВЛЯЕТСЯ."
Хватит гнать. Я для проверки просто прочитал весь диск поблочно и запись в журнале появилась.
"sudo же позволит ограничить действия субъекта строгими рамками."
sudo предоставит отличную дыру для получения рута, в этом конретном случае стоящей в заголовке этой темы.
"не поручусь но вероятность этого процентов этак 95,"
Хреново ты систему знаешь прежде чем такие оценки давать... В общем куда тебе засунуть эти 95%? Потому как твои не учтеные 5% это http://sysinternals.com/ntw2k/freeware/winobj.shtml Так что лучше тебе помолчать...

Ogr
()

2no-dashi: "Итак, сегодня мы вместе доказали, что можем, если захотим, работать единым фронтом супротив общего соперника :-)"
Осталось только собратся с силами и прочитать что-нить по теме, пока что в очередной раз было доказано, что анонимусы ни хрена не знают.

Ogr
()

Аудит, стоящий до первой перезагрузки... Признаю, я и не подумал, что комуто придет в голову устанавливать атрибуты после каждой загрузки... В таком разе появляется запись о доступе к PhysicalDrive. Тем не менее, поблочное чтение разделов отображено _не было_. Достаточно?

no-dashi ★★★★★
()

Насчет sudo: одно время можно было прописать в реестре в один из ключей произвольную программу, после чего при падении любой программы вызывалась указанная нами (как дебаггер). И работала с правами LOCAL_SYSTEM. Это было куда хуже.

no-dashi ★★★★★
()

2no-dashi: "Аудит, стоящий до первой перезагрузки"
Меняй потавщика травы, тебе крышу уже рвет...
"одно время можно было прописать в реестре в один из ключей произвольную программу, после чего при падении любой программы вызывалась указанная нами (как дебаггер)."
Ну в те времена когда та ошибка была линукс от пинга падал... А эта конкретная проблема с sudo была обнаружена месяц назад, чуствуешь разницу? В общем иди кури.

Ogr
()

   Так  я  же  сразу предложил тебе что-нить почитать на тему обсуждения,
   вот скажем твое не жедание читать, проявляется вот в этой цитате
Я тебя просил самого *рассказать* про это - у тебя это получилось с 5-го раза.
У тебя что-то с логикой или мозгами очень плохо если не можешь пересказать
2 предложения нормально, чтобы другие программисты поняли. Или ты просто не
понимаешь/не знаешь предметную область.

Вот как оказалось на самом деле с аудитом на файл:
   Аудит,  стоящий до первой перезагрузки... Признаю, я и не подумал, что
   комуто придет в голову устанавливать атрибуты после каждой загрузки...
   В  таком  разе  появляется  запись  о  доступе к PhysicalDrive. Тем не
   менее, поблочное чтение разделов отображено _не было_. Достаточно?
Ogr, ты как всегда просто не знал, что надо читать "\\.\C:".. У меня просто
нет слов - у тебя еще хватает совести чтобы что-то тут блеять и оскорблять
других?
 Мне уже жалко потраченного на тебя времени. Шел-ка бы ты лучше на MSDN.

hvv
()

2hvv: Что через строчку читаете и цитируете :) В общем в отличии от анонимусов и вас, я не боюсь признатся где я был не прав, ну а вы можете так и продолжать упиратся рогом в стену и цитировать откровенную лажу, которая перепроверяется моментально.

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