Штурм хостинга Master-lame-master Xakep, номер #068, стр. 068-046-4 Я уже сказал, что в названии файла не должно быть бэкслэшей. Поэтому все команды с символами «/» я решил набить в отдельный sh-скрипт. Этот файл получил название /tmp/exec и выглядел следующим образом: #!/bin/sh chown root:root /tmp/test chmod +s /tmp/test Настало время подумать над названием файла. Каким-то образом мне надо было заставить уязвимый демон запустить /tmp/exec, который установит суид-бит на бэкдор. Обратиться к программе вполне реально. Зная, что clamd работает в корневом каталоге, я выполнил следующую команду: mv trojan.exe '; cd tmp; export PATH=`pwd`; exec' Думаю, тут все понятно. Если такая конструкция попадает в system(), демон переходит в каталог /tmp. Затем обнулится переменная окружения PATH и примет значение текущего каталога (благодаря интерполяции значения, возвращенного pwd). И финальным штрихом будет запуск exec как бинарника, найденного в /tmp. Осталось лишь модифицировать /tmp/exec на предмет абсолютных путей к chmod и chown (в противном случае программы не обнаружатся системой) и ждать сканирования. Поверженный сервер Я знал, что сканирование файловой системы начнется в полночь. Да, директория /etc/cron.daily была недоступна для чтения, но в свое время я игрался с clamd, поэтому понимал смысл дефолтовых крон-сценариев. В данный момент на хостинге часики спешили на два часа. Можно было сделать вывод, что скан произойдет через 40 минут, - было время, чтобы выпить бутылку пива и спокойно посмотреть футбол. Ведь все файлы созданы как надо, механизм отлажен... Стоп! Вот я авдот, совсем забыл поставить +x на /tmp/exec :). Сделав это, я удалился с шелла. Спустя 45 минут я посмотрел в /tmp и обнаружил... суидный /tmp/test! Все сработало! Clamd действительно уязвим, а механизм атаки выполнился, как и планировалось. В процессе удаления подставных файлов и логов от clamd я вспомнил о том, что файлик /var/spool/mail/root необходимо пофиксить, дабы админ не прочитал кривое сообщение от сервиса. После удаления почтовая база восстановилась командой touch. Как будто ничего и не пропало. На хостинговом сервере я продержался неделю. Но это была хорошая неделя. За семь дней я постиг секреты слежения за админом, узнал о переписках клиентов, а также отснифал пароли на некоторые приватные ресурсы ;). Но это уже совсем другая история... Что помогло мне при взломе? 1. Я знал матчасть. Увидев старую версию clamd, я быстро и красиво эксплуатировал систему. 2. Иногда полезно помогать товарищам. В процессе настройки какого-нибудь экзотического скрипта можно придумать новые способы удаленного взлома. 3. Я не забываю чистить все логи после своего пребывания, а также заботиться о том, чтобы кривое письмо не попало в почтовый ящик админа. Пять способов скомпрометировать систему Предлагаю пять способов для скептиков, которые не знают, что из-за человеческого фактора любую систему можно порутать: 1. Ищи бажные сервисы. Часто они мелькают в ps ax, иногда зарыты в xinetd. Иногда вообще не запущены. Это основной источник локальных привилегий. |