ЖУРНАЛ ХАКЕР

Урок для глупого хостера

Xakep, номер #030, стр. 030-050-3


....

open(FILE, $thread_file);

while(<FILE>) {

....

}

close(FILE)

....

Содержимое входного параметра theme помещалось в переменную $thread_file и без всяких проверок передавалось процедуре open(), которая, к тому же, использовалась без предупреждающего условия. Т. е. написано было безграмотно до безобразия %). И теперь, подставляя команды в параметр theme, оканчивая строку символом "|", я передавал их на выполнение, и никаких срывов в работе скрипта не возникало. Итак, через эту же дыру был вытащен конфиг vhosts со списком всех доменов, снабженный инфой о том, в каких они папках на сервере расположены.

Продолжая выполнять команды, я выяснил, что сервак стоит на FreeBSD 3.2 STABLE, что там порядка 80 клиентов, что у web-сервера права того юзера, чей домен, и что lynx'a нету. Последнее изрядно угнетало - закачивать свое файло было нечем. Пришлось писать его упрощенный аналог... За этим занятием пиво окончательно закончилось. В итоге получился маленький скрипт, который умел брать урл из параметра down и выкачивать его в текущую директорию сервера, binary и ascii режимы переключались через параметр mode. Закачать его на сервак не представлялось возможным, поэтому весь код выстроился в одну строку. Далее, через баг в борде, замешанный на команду echo, я сунул эту строку в файл lynx.pl. Поставив на него атрибуты выполнения chmod 755 lynx.pl, я принялся за активную работу - закачал свой достаточно емкий, но удобный интерфейс для выполнения команд и пару бэкдоров.

Теперь в риал-тайм был виден результат выполнения отданных команд, и не приходилось каждый раз ковырять мылбокс в поисках письма с сервака. Во время лазания по по системе пришла мысль: нужен полноценный шелл для перспективы юзания локальных экслойтов. (Пришлось пойти еще за пивом, т. к. без пива совсем не работалось :))). Далее был откомпилен закачанный ранее бэкдор. Использовался ovas0n.c, который можно встретить во многих архивах, в том числе - на нашем сайте (nitrogear.org). До полноценного использования пришлось подправить код под объективную реальность FreeBSD и свою специфическую ориентацию в системе =). Ясно, что админ может засечь и убить процесс, поэтому предварительно проверил наличие пользователей в системе - на команду who никто не откликнулся, это было на руку. При запуске бэкдор открыл мне запароленный шелл, с правами текущего пользователя на далеком порту.

FreeBSD - отличная штука, превратившаяся в руках хостерских умельцев в сито. И виной тому - вовсе не горе-перл-кодеры, наваявшие дырявую борду (за всеми не уследишь), и не сама система, а то, что администраторы вовсе не акцентировали конфиг на security. Если бы не их лень, я, к примеру, просто не смог бы их пробекдорить открытием нужного мне порта. Это получается, что любой юзвер хостера, может замутить WarezFTP на 6666 порту, со складом в /var/tmp/warezzz, до следующего рестарта?

Назад на стр. 030-050-2  Содержание  Вперед на стр. 030-050-4