В поисках эксплоитов

Дмитрий Докучаев aka Forb

Xakep, номер #052, стр. 052-060-3


Через несколько минут все результаты find'а упадут тебе в /tmp/locate_perl.log. Остается только его пропарсить и перейти к стягиванию сплоитов.

4. Inaccessible Find

Предположим, что в целях безопасности админ снял атрибуты с find. Все. Такое бывает, и я не раз с этим сталкивался. Но это не означает, что ты не можешь юзать команду find. Если ты перенесешь бинарник с похожей платформы на сервер хостинга, то, возможно, он у тебя заработает не хуже прежнего. Теперь поправь в скрипте переменную $find, чтобы она ссылалась на принесенный извне бинарник, и смело запускай утилиту поиска.

5. Inaccessible /home

Допустим, тебе попался хостинг, в котором закрыт весь каталог /home. То есть взять список пользователей становится невозможным. Но если посмотреть с другой стороны, то пользователи всегда будут прописаны в конфиге апачи, который, как правило, доступен для чтения и находится в /etc/httpd/conf/httpd.conf (на самом деле он может лежать где угодно, а этот путь указан для предустановленного apache - прим. ред.). Из него нам интересны только опции DocumentRoot, значениями которой будут каталоги с файлами, видными из web'а. Задача опять аналогична предыдущей, но придется чуть-чуть поменять процедуру init() в скрипте:

sub init {

my (@files);

open(CONF,"/etc/httpd/conf/httpd.conf") || die "cant access to conf\n"; ## Открываем конфиг апачи для чтения, либо завершаем скрипт

while(<CONF>) { ## Читаем его построчно

if ($_=~/DocumentRoot/) { ## Если встречается DocumentRoot

(undef,$file)=split ' '; ## Выдираем из опции значение

$file=~s/^\/home//g; ## Удаляем из него /home

push(@files,$file); ## И помещаем в @files как элемент массива

}

}

close(CONF); ## Закрываем конф

return @files; ## И возвращаем @files

}

Таким образом, меняя лишь способ добычи @files, мы оставили прежним главный модуль скрипта и выполнили поиск, что говорит о решении поставленной задачи.

6. Истина где-то... в логах

Оригинальный способ поиска - просмотр логов доступа web-сервера. Как это ни парадоксально, но они также доступны для чтения, и в них можно найти на редкость интересные обращения, совпадающие с шаблоном. Пропарси httpd.conf и отыщи там общий лог apache. Если такой есть, то, копаясь в нем простым grep'ом, можно отыскать интересные запросы и по ним определить местонахождение эксплоитов:

$ grep hack access_log >> /tmp/logs.log

Если же логи пишутся по каждому виртуалхосту и находятся, например, в /home/user/public_html/logs/access_log, то, сменив шаблон поиска на access_log и заюзав locate.pl, ты можешь обработать каждый лог по следующему шаблону:

$ grep 7350 `cat /tmp/locate.log` >> /tmp/logs.log

7. Search in strange dirs

Возможно, кто-то уже порутал хостинг до тебя. Взломщики иногда забывают затирать за собой ценные сплоиты и оставляют их в первозданном виде. Обычно они лежат в левых папках. Чтобы найти такие, посмотри директорию /tmp с флагом -la, может быть там будет папочка, похожая на "...". Почти наверняка в ней будут лежать эксплоиты. Также прочеши /dev и /lib на предмет схожих директорий:

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

Hosted by uCoz