Что касается ProFTPD, то эта служба еще дырявее. Существует эксплоит для предпоследнего релиза 1.2.9rc2, что говорит о некомпетентности программистов. Самая популярная ошибка в демонах FTPD – переполнение при передаче длинного параметра какой-либо команде. Но последний эксплоит ориентирован на срыв буфера во время закачивания ASCII-файла. Я протестировал работу этого чудного эксплоита (www.security.nnov.ru/files/10.04.proftpd_xforce.c) на версии 1.2.9 и легко получил удаленного root'а. Одна проблема – в публичном эксплоите содержится всего две мишени (таргета :)). Хочешь большего? Тогда качай файл www.security.nnov.ru/files/proft_put_down.c. Он снабжен брутфорсом, поэтому является универсальным для всех конфигураций.
Если админ меняет баннер от ProFTPD, это не говорит о том, что хакер не обнаружит баг. Демон выдает себя с потрохами фразой «Anonymous Login ok» при передаче анонимного логина. Для справки: все остальные FTPD вместо слова «Anonymous» пишут «Guest». Когда-то я раскусил службу именно по этой отличительной особенности. Чего и тебе желаю :).
Следующий сервис, который я опишу, – это sshd. Он висит на 22-м порту и служит для удаленного подключения к серверу. Служба снабжена защитным алгоритмом шифрования, поэтому хакер никогда не отловит пароль, передающийся демону. Что касается стойкости ко взлому, то в наше время sshd практически неуязвим. Пару лет назад хакеры написали эксплоит x2 (www.security.nnov.ru/files/x2.tgz), который уже давно находится в публичных источниках. Он позволяет взять удаленного root’а. Это удавалось, если версия SSH совпадала с релизом, забитым в target. Эксплоит содержал аж 46 целей, правда, на практике удавалось получить root’а лишь в 5-6 из них. Что удивительно, даже сейчас можно встретить уязвимые версии демона (с 1.5-1.2.27 по 1.2.33) в различных локальных сетях. Стоит лишь получить доступ к маршрутизатору и просканить баннеры всех сервисов локальной сети. Кто знает, может тебе и повезет…
Сейчас мы займемся взломом telnetd. Несмотря на то что это старый сервис, он используется на многих unix-like-машинах. Почему же админы его не сносят? Все просто – они оставляют демон в качестве резерва, фильтруя его от внешнего мира. В этом случае ты не законнектишься на сервис, однако сможешь без проблем получить локального root’а, если атакуешь сервер другим способом. Впрочем, бывают и исключения. К примеру, в Солярке телнет – вообще сервис по умолчанию, поэтому 23-й порт на таких серверах светится всегда. От тебя требуется воспользоваться услугами одного из двух эксплоитов. Первый называется 7350logout (http://examples.oreilly.de/english_examples/networksa/tools/7350logout), он переполняет буфер в telnetd, засоряя его некорректными данными. Зловредный бинарник способен взломать службу в Солярках 5.6-5.8 за несколько секунд. Второй эксплоит с именем holygrail (http://examples.oreilly.de/english_examples/networksa/tools/holygrail.c) ломает Соляры 5.5-5.7 удаленно и 5.8 локально. Заюзать эти сплоиты несложно. Достаточно лишь передать им параметры хоста и версии операционки. Кстати, версия Солярки всегда указана в баннере telnetd, что в несколько раз облегчает твою работу.
Бажный демон telnet’а встречается в других системах. Например, во FreeBSD. Для определенных версий FreeBSD существует специальный эксплоит, переполняющий буфер в сервисе. Итог – удаленный root на уязвимой системе. Сейчас такой демон в глобале не встретить, раритетные системы существуют разве что в локальной сети какой-нибудь фирмы.
Служба постепенно замещается защищенным SSHD, поэтому судьба telnetd предрешена. Думаю, через пару лет ты вообще забудешь, что когда-то существовал подобный демон. А пока – атакуй сервера, админы которых не позаботились о безопасности.
Обратимся к самой популярной глобальной службе – WWW. Думаю, не стоит говорить, что наиболее часто используемый демон в unix-like-операционках называется Apache. Несмотря на его относительную стабильность баги в Apache существуют. Точнее, не в самом сервере, а в его многочисленных модулях. Начнем с самого популярного – mod_php. Баг довольно старый, но грех о нем не вспомнить. К тому же, бажные версии модулей можно встретить в сети до сих пор. Итак, ошибка в компоненте заключается в обработке внешних параметров. Если хакер пересылал хитрый запрос любому скрипту, модуль мог открыть shell с командным интерпретатором. Так и происходило, правда, перед этим эксплоит долго перебирал запросы. Еще один баг затаился в протоколе OpenSSL. Хакеры быстро реализовали эксплоит для mod_ssl, который позволял брать права WWW-сервера. После длительного ажиотажа многие админы обновили библиотеки SSL, в результате чего уязвимость потеряла свою остроту. Раритетный эксплоит называется OpenFuck, вторую его версию ты можешь скачать по адресу http://packetstormsecurity.org/0304-exploits/OpenFuckV2.c.
Хочешь баг посвежее? Держи! Брешь актуальна для связки Apache 2.x с mod_perl. Модуль, позволяющий добиться акселерации при запуске CGI-сценариев, содержит утечку важных файловых дескрипторов. Сейчас я наглядно объясню, к чему это может привести. Для эксплуатирования жертвы хакеру придется добиться локальных привилегий. Это нужно для того, чтобы иметь доступ к WWW-каталогу и заливке скрипта (думаю, подойдут права nobody в web-shell’е). Взломщик пишет сценарий, который рождает подпроцесс, а затем останавливает httpd. Затем потомок становится демоном, имитирующим работу Web-сервера. На все запросы клиентов он отвечает, что админа поимели :). Подобное описание всех шагов хакера можно найти на странице www.securitylab.ru/42355.html.
Давай теперь поговорим о других библиотеках. Не так давно стал уязвим компонент mod_gzip (www.security.nnov.ru/files/85mod_gzip.c), который служит для сжатия контента перед передачей. Уязвимость была обнаружена в конце лета прошлого года. Через банальное переполнение буфера злоумышленник может порождать процессы под правами nobody. Для этого хакеру требовалось послать определенные данные, включающие параметр Accept-Encoding. Неважно, на какой системе крутится Apache – баг таится как в FreeBSD, так и в RedHat, Mandrake, SuSE. Все потому, что эксплоит снабжен брутфорсом, который каждый раз перебирает адрес возврата. В случае его успешного определения злоумышленник получит интерактивный shell. При этом версия модуля не должна быть выше 1.3.26. Поразительно, но даже сейчас баг актуален. За примерами далеко ходить не надо, просто взгляни на скриншот.
Бывает, что и в самом Apache встречаются баги. Даже при отсутствии дополнительных библиотек. Это показала критическая уязвимость в OpenBSD/NetBSD, позволяющая брать shell через дырявый httpd (www.security.nnov.ru/files/apache-nosejob.c). Правда, сейчас найти уязвимый сервер практически невозможно.
Я перечислил основные службы, большинство из которых установлены практически на каждом сервере. Однако существуют и другие уязвимые сервисы, пусть и не такие важные. Тебе придется их поискать в различных сетях, а после этого нещадно взломать :).
1. IRC. Демоны ircd расположены на многих машинах, а их стойкость к атакам оставляет желать лучшего. Например, недавно был обнаружен баг в популярном hybrid-ircd, который позволяет удаленно убить сервис. Эксплоит публичный (http://addict3d.org/index.php?page=viewarticle&type=security&ID=1416), но перед тем как его скомпилировать, тебе придется исправить ошибки в исходном коде. Этакая защита от скрипткидисов. Рассказывать о том, как править исходник, я не буду – додумаешься сам. Подскажу лишь, что тебе придется перенести объявления переменных из середины процедуры в ее начало. После того как ты скомпилишь эксплоит, натрави его на какую-нибудь жертву (сервер, где установлен гибрид) и жди результата. Долго ждать не придется: непропатченный демон быстро уйдет в core dump.