Subdreamer CMS Admin Bypass

Discussion in 'Веб-уязвимости' started by Евгений Минаев, 6 Jul 2008.

  1. Евгений Минаев

    Евгений Минаев Elder - Старейшина

    Joined:
    12 Nov 2007
    Messages:
    55
    Likes Received:
    169
    Reputations:
    159
    Определение, является ли зашедший юзер админом происходит в файле 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.

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

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

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

     
    #1 Евгений Минаев, 6 Jul 2008
    Last edited: 6 Jul 2008
    5 people like this.
  2. Kakoytoxaker

    Kakoytoxaker Elder - Старейшина

    Joined:
    18 Feb 2008
    Messages:
    1,038
    Likes Received:
    1,139
    Reputations:
    350
    Ты бы версию написал что-ли :)
    Пробовал на Subdreamer v2.5.3.2 Pro на локалхосте не вышло!

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

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

    Скорее всего поправили багу, или я что-то не понял.
    Пойду смотреть код
     
    1 person likes this.
  3. Евгений Минаев

    Евгений Минаев Elder - Старейшина

    Joined:
    12 Nov 2007
    Messages:
    55
    Likes Received:
    169
    Reputations:
    159
    Если бы ты читал внимательней, то наверное понял меня лучше. О userid в куках я не говорил. Если ты об этом, то это просто способ определения глобальной переменной
    Также, если ты обратишь внимание на код, то никаких админских сессий нет.

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

    Видео демонстрация http://underwater.itdefence.ru/subdreamer.rar
     
    #3 Евгений Минаев, 6 Jul 2008
    Last edited: 6 Jul 2008
    1 person likes this.
  4. Kakoytoxaker

    Kakoytoxaker Elder - Старейшина

    Joined:
    18 Feb 2008
    Messages:
    1,038
    Likes Received:
    1,139
    Reputations:
    350
    Я читал внимательно,понял тебя и не спорю с тобой.

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

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

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