""RK and I both considered just completely dropping the vulnerable codepaths; environments where zlib would have to fall back to these codepaths honestly just don't deserve breathing rights.""
Радует, что "" ... it works as it should on Linux==2.4.18/glibc>=2.2.5 ...""
The patch went through two revisions to get to this level of completeness; it works as it should on Linux==2.4.18/glibc>=2.2.5 but has not been tested on other platforms.
kernel 2.4.18 glibc 2.2.5 zlib 1.1.3 не работает. ;) а причина проста - OWL патч на ядро -> неисполняемый стэк. как бы недоброжелатели не ругали ASPLinux.... приятно когда прям "из коробки" вот так
Что-то не понятно каков результат работы эксплоита Ну запустился шелл, ну и что? Все равно этот шелл с правами моими, а не рута... Объясните бестолковому...
у всех такое все новое.
а может он вообще только на 2.4.* работает :-)
хотя на 2.4.17 + glibc-2.2.3 не заработал.
а код я видел в asm, все правильно, но не работает.
"Что-то не понятно каков результат работы эксплоита Ну запустился шелл, ну и что? Все равно этот шелл с правами моими, а не рута... Объясните бестолковому..."
Ну вот как раз тебя в результате и взломали. Кому рут-то нужен? То есть, иногда и нужен бывает, сеть там загадить и вообще, но иногда достаточно вполне конкретного пользователя поиметь. Можно наконец, и подождать, когда рут напорется.
>а ты попробуй в sh выполнить rm -rf ~/. Результат будет, гарантирую! Ну,а если я напишу на С прграммулину, которая будет удалять данные того юзера из-под которого запущена? #include <stdio.h> #include <errno.h> int main (int argc, char** argv) { if (argc>1) if (remove(argv[1])==0) { fprintf(stdout,"File '%s' removed successfully!\n",argv[1]); return 0; } else { fprintf(stderr,"Error %d. Cannot delete file '%s'!\n",errno,argv[1]); return 1; } else { fprintf(stderr,"Not enought parameters\n"); return 1; } }
touch test_file.txt chmod 400 test_file.txt -r-------- ./test_rm test_file.txt File 'test_file.txt' removed successfully! Для пущей важности создайте юзера, туда положите прогу и запустите из-под юзера и увидите что будет...
Ну и нафиг мне шелл запускать или какие-то баги в zlib искать??
а вот от простого текстового файла, который ты решил просмотреть в своем любимом Emacs, ты ведь такой подлянки не ожидаешь. Честно говоря у меня на домашней машине только flash от стороннего производителя :-). А так все программы из дистрибутива. Это какая-никакая гарантия того, что они ничего у меня не портят намеренно... Т.е. чтобы что-либо у меня стереть мне нужно подсунуть именно exploit такого сорта. Или "правильный" mp3-шник. Иначе - никак. Поверьте - мне все равно, будут только мои файлы стерты или вся система целиком - workstation он и есть workstation. :-)
Теоретически удаленный юзер может получить шелл через сетевой
сервис, который использует zlib. Например, через apache+mod_gzip. Только вот сделать это на практике где-то
на грани невозможного.
Ядро 2.4.20, все остальное - с дистрибутива MAndrake 9.0 Не взломалась? Или что не так? Кстати, а на других операционках - Солярисе, например, эта штука будет работать?
Ядро 2.4.20, все остальное - с дистрибутива MAndrake 9.0 Не взломалась? Или что не так? Кстати, а на других
операционках - Солярисе, например, эта штука будет работать?
Ну, насколько я понимаю, типа в результате ошибочной операции запустили shell :-))
А кто мешал его просто так запустить? Все равно тот setuid(0) setgid(0) не сработали. Под взломом следует понимать что-то типа повышение привилегий или возможность выполнять произвольный код там где раньше низзя было.
Если есть возможность запузырить такое дело через сеть и получить доступ туда, куда до сих пор доступа не было - это взлом.
получение шелла из проги которая для этого не предназначена это уже 100% взлом. тем кто этого не понимает представьте что на проге висел setuid. в крайнем случае без всяких suid и вашего согласия можно потереть ваши файлы.
>получение шелла из проги которая для этого не предназначена А эксплоитный код, который шелл запустил(используя уязвимость), как в эту прогу попал?
Таким образом вот тот код на Сях, который я там выше написал или код, который просто стартонет шелл может попасть туда таким же образом и уязвимость тут будет вовсе ни при чем. И очень даже распрекраснейшим образом выполнит функцию remove(ююю) с привилегиями setuid, если таковы имеются у проги. Зачем для этого уязвимость?
Вот если б я, простой смертный юзер, написав прогу, которая исп-ет уязвимость, смогу получить доступ к чужим данным(типа /etc/shadow) - вот это уже хуже.
грубое объяснение, для тупых:
ты используешь какую-нибудь прогу использующую zlib,
например архиватор, тебе по почте приходит "архив", ты его
открываешь, прога у тебя валится в корку и исполняет некий код
(например rm -rf /),
НЕУЖЕЛИ ЭТО ТАК СЛОЖНО ПОНЯТЬ ???
помните летом была найдена уязвимость в ghostview (во всех разновиднастях: gv,kghostview,ggv ......), ещё в bagtraq кто-то послал
псевдо pdf'ник, который открываешь в 'gv', 'gv' падает в корку и исполняет код, который
в /tmp создаёт (или удаляет, не помню уже) какие-то файлы,
так вот, вместо создания файлов там могло стоять 'rm -rf /'
Все проще - вот например где-то так. Целимся в некоторого конеретного юзера имеющего sudo. Задача - поймать его пароль. Из этого - получить рута.
Сперва делаем прожку которая внешне ведет себя как sudo, и из под себя ее вызывает чтобы делать настоящую работу. А то подозрительно будет - пароль спросила и ничего не сделала. Потом прячем ее куда-нить куда есть права на запись, изменяем пути чтобы путь к ней просматривался раньше каталога в котором настоящий sudo лежит. Это например как-раз-то и можно организовать используюя эту свежую дыру в zlib. Если все было сделано достаточно аккуратно - при первом же вызове ловится пароль и после этого машинка полностью под контролем. Если юзер не параноик - то скорее всего его пароль может подойти и в другие точки. Типа - пробили его workstation и с тем же паролем потом зашли на сервер и там без проблем получили рута через sudo.
Многие ли каждый раз проверяют вручную или специализированными инструментами неизменность своих переменных окружения, путей, всей файловой системы в конце концов ?
А таких вариантов просто море. Главное - наличие дыры и немного фантазии - хорошо проработать план атаки.
А говорите что не опасно ...
WBR, Burzumie
>например архиватор, тебе по почте приходит "архив", ты его >открываешь, прога у тебя валится в корку и исполняет некий код Вот это я еще могу понять. Есть возможность из-вне внедрить и выполнить код.
a sudo - не sudo - это уже вторично. Нужно, как минимум, сделать так, что эти пути сможно было подменить, т.е. получить управление в нужный момент и с нужными правами. А сделать это можно только подсунув юзеру что-то чтоб он выполнил это из-под себя.
Это не эксплойт, и ничего он не сломает. Это демонстрация дырки в конкретной библиотеке. Показано, что при типичном использовании этой библиотеки (в других программах - хоть браузер, хоть фтп-сервер) специально подобранные данные могут вызвать buffer overflow.
Поэтому рассуждения выше вызывают только смех. "И что мне делать с этим шеллом?". Ничего, раз не понял, откуда он взялся. Смех. Ха :)
> anonymous (*) (2003-02-28 00:45:57.362)
>Это не эксплойт, и ничего он не сломает. Это демонстрация дырки в конкретной библиотеке. Показано, что при типичном
>использовании этой библиотеки (в других программах - хоть браузер, хоть фтп-сервер) специально подобранные данные
>могут вызвать buffer overflow.
Значит, переполнение буфера можно вызвать? А этим переполнением можно воспользоваться,
чтобы получить права root? Или это просто ошибка, которая кидает программу в core?
Вот когда по Вам пройдутся шипастыми ботинками в виде какого-то вреда (получение root'а - это еще цветочки) и Вы даже не сможете понять откуда это произошло и что это такое вообще было, думаю, что Ваше мнение о $subj'е несколько изменится.
Мне довелось раз устранять последствия взлома с получением рута. Там было попроще и кряцкеру не пришлось долго фантазировать - bind-8.2.0 на какой-то очень старенькой RH запущеный под рутом и самое обычное переполнение буфера в нем. Был пойман в процессе сборки rootkit'а (это вообще чудом - просто повезло), тут же выяснен откуда, ему большой бан и "телега" его провайдеру. И потом больше суток на выяснение что же он еще успел натворить (про tripwire для той машинки просто забыли, поэтому пришлось в руки md5, компакт с дистром и очень много терпения).
Никому не пожелаю проходить через такое - весьма мрачное занятие.
WBR, Burzumie
Саныч, что-то не пойму я тебя. То вроде бы нормальный мужик - здравые вещи говоришь, то вдруг несешь такую ересь, что читать стыдно. sudo позволяет выполнять действия от рута (и не только от рута), без знания пароля рута. Разницу между "пароль рута" и "права рута" видно хорошо? sudo умеет еще много чего, в том числе задавать некоторые ограничения на то, что, кому, с чьими правами можно делать.
2Саныч:
Я имел в виду - пароли и там и там одинаковые и на обоих есть sudo. Ну очень частая ситуация. Зная в одном месте - автоматически имеем доступ в остальные.
Burzumie
Вариант работы на
комп: SunBlade 100
архитектура: UltraSparc IIe
система: Aurora Linux 1.0 (на основе RedHat 7.3)
ядро: 2.4.20 (самосборка, Stack Overflow отключен)
glibc: glibc64-2.2.5-42
glibc-2.2.5-42
результат работы:
[alan@admin alan]$ ./zlib
[>] exploiting...
[>] xret = 0xeffff950
Bus error
[alan@admin alan]$
шелл какой был, такой и остался, ничего нового :-))
ты придурок или только притворяешься?
char shell[]=
"\x90\x90\x90\x90\x90\x90\x90\x90"
"\x31\xc0\x31\xdb\xb0\x17\xcd\x80"
"\xb0\x2e\xcd\x80\xeb\x15\x5b\x31"
"\xc0\x88\x43\x07\x89\x5b\x08\x89"
"\x43\x0c\x8d\x4b\x08\x31\xd2\xb0"
"\x0b\xcd\x80\xe8\xe6\xff\xff\xff"
"/bin/sh";
видишь этот код? ты думаешь он сможет исполнится на любой архитектуре?
2anonymous (*) (2003-02-28 21:54:48.061)
>ты придурок или только притворяешься?
А че ты обзываешься? Я что, не понимаю, что бинарный код работает только на определенной архитектуре? А ты вот, например или шуток не понимаешь, или смайлика не заметил, хотя из там аж 2 штуки :-))
ДрУги, я не понимаю, в чем замес? :-) Большинство проблем (большинство, но не все) решаются с помощью OWL или grsec, и никакие buffer/stack overflow не страшны. Если сервер мордой в интернет смотрит, то наложение таких патчей - первое, что надо сделать, IMHO.
P.S. Кстати, кто еще смог поставить Linux на SunBlade 100 и миксер нормально прикрутить, а то у этой Blяdи :-) dma отключать надо (ide=nodma), иначе IDE не работает, блин :-), и звук на максимальной громкости, стекла вылетают :-).
P.P.S. В форумах и доках по Linux&SPARC рекомендуют отключить встроенный динамик (физически), и усе :-).
P.P.P.S. На "боевых" Oracle серверах этот (да и другие) эксплоиты не работают, segfault, как обычно :-) (дистр VA 6.2.4, ядро 2.2.18-pre21+OWL, i386, конечно :-)).
2anonymous (*) (2003-03-03 04:24:14.684)
>Написал кривую софтину, типа zlib, отрубили
правую руку... и т.д. ;)
Ага, а он левой рукой (или ногой печатать будет) :-), или протез сделает, в общем процесс бесконечный :-)