Полностью автоматизированное (не диалоговое) создание современных стойких самоподписанных CA и сертификатов для доменов с поддержкой субдоменов (заметки на память).
В сети появился рабочий remote root exploit для штатного ftpd и для proftpd (ссылку не дам, кому надо - найдет в листах). Проверено, работает.
Для взлома требуется знать логин-пароль юзера, которого ftpd засовывает в chroot и которому разрешено создавать в этом корне файлы /etc/nsswitch.conf и /lib/nss_compat.so.1 - exploit заливает туда код, который, который, будучи запущенным от рута, через ptrace подключается к inetd/syslogd/cron вне chroot, и внедряет в них код, который открывает TCP-коннект от рута обратно к машине атакующего на заранее указанный порт, который там должен слушать nc -l или аналог и даёт root shell уже вне chroot.
Подгружает /lib/nss_compat.so.1 сама libc, баг в ней.
Против взлома кроме фильтрации доступа к порту 21 файрволлом или через /etc/hosts.allow, ещё помогает либо полностью запретить юзеру запись в свой домашний каталог (можно оставить право на запись в существующие подкаталоги), либо запретить создавать /etc/nsswitch.conf и /lib/nss_compat.so.1 в домашнем каталоге юзера: touch etc lib && chflags uchg etc.
Для штатного ftpd и ftp-пользователей, не имеющих другого доступа на запись к своему домашнему каталогу (через samba/http/whatever) есть и другое временное решение, не требующее что-либо менять в домашних каталогах пользователей: патч на ftpd, позволяющий администратору задавать гибкие ограничения в зависимости от логина пользователя и IP-сети, из которой он подключился: http://www.grosbein.net/freebsd/patches/ftpd-restr-0.2.tbz
README с инструкциями по прикладыванию и по новым возможностям внутри. После приложения патча, для защиты от данной дырки:
- В /etc/login.conf поменять для класса default строчку:
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
на строчку::setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES,NOMKD=/etc=0.0.0.0/0;/lib=0.0.0.0/0:\ - Перегенерировать
/etc/login.dbкомандойcap_mkdb /etc/login.conf.