Университетский хак Александр Любимов aka Sashiks Хакер, номер #079, стр. 079-050-3 Итак, теперь долгожданный терминал на институтской машине у меня был. На компе крутился Linux с ядром ветки 2.4, к тому же тачка была мультипроцессорной, поэтому был шанс поднять свои привилегии локально с помощью существующих public exploit’ов. Но вот незадача: как же транспортировать эксплойты, если нет рабочего загрузчика wget`а? Более того, на машине не было также и стандартного nix’ового ftp-клиента: его просто-напросто удалили! Но выход находится всегда. Можно попробовать записать код эксплойта в файл так: cat>exploit.c<<//EOF. Потом вставить код и в конце дописать //EOF. Сохранив таким образом несколько паблик-отмычек, я уже хотел было компилировать их, но в ответ на “gcc” интерпретатор руганулся, что «command not found», и это разочаровало меня :(. Какая-то безвыходная ситуация получается. Сервер защищен файрволом, нет возможности закачивать файлы, отсутствует рабочий компилятор. Что же делать? [смертельный upload] Необходимо было придумать способ беспрепятственно закачивать файлы на сервер. Я подумал, что можно написать на Perl программу, которая будет выкачивать целевой файл по http. Полазив немного по инету, я нашел нужное, а именно — инфу по модулям HTTP и LWP. Я написал небольшой скриптик, с помощью которого можно загружать файлы на компьютер с отсутствующими утилитами для закачки (тe же wget, fetch, curl). Скрипт можешь найти на диске или скачать отсюда: http://unixforge.org/~sshx/x/wget.tar.gz. Я думаю, ты без труда разберешься, как он работает, если же возникнут вопросы, смело пиши на мыло. Сценарий принимает в качестве аргумента http-ссылку, в которой находится нужный документ, либо, если запущен с параметром « –f », парсит указанный текстовый файл, где хранятся ссылки, и выкачивает по ним файлы. Скрипт я сохранил на сервере, но запустить его не вышло — Can't locate LWP/UserAgent.pm. Это же бред какой-то :(. Крыша тихонько скрывалась за горизонтом, помахивая шифером. Немного поразмыслив и почесав репу, я вспомнил об ftp. О протоколе ftp: функции работы с ftp-протоколом реализованы практически во всех языках программирования. Я выбрал php. На часах было уже четыре утра: немного поздновато, чтобы что-то выдумывать, тем более что изобретать очередной велосипед на ночь глядя совершенно не хотелось. Поэтому я открыл мануал по PHP, нашел пример работы с ftp-функциями, скопировал его, добавил несколько строк своего кода и получил рабочий сценарий (http://unixforge.org/~sshx/x/ftp.php.txt). Вуаля! Корявый ftp-uploader был готов. Пару слов о нем. Чтобы загрузить нужный файл, достаточно поменять значение переменной $remote_file на нужное (я подразумеваю, что все необходимые файлы лежат на одном ftp-сервере). Запустив php-скрипт несколько раз, я слил в /tmp уже собранные эксплойты. С помощью отмычек под mremap() и do_brk() я хотел получить рут-шелл. Скрестив пальцы, я пробовал запускать их по очереди, надеясь, что у меня установится uid=0. Но, как на зло, ничего не выходило :(. Эксплойты, собранные на сторонней машине, ни в какую не хотели ломать ядро, ничего не получалось. |