HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 29.08.2010, 07:49
RedX
Познающий
Регистрация: 12.06.2008
Сообщений: 32
Провел на форуме:
324402

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

Собственно не так давно появилась тема с указанием уязвимости, но я не как не могу раскрутить саму уязвимость, помогите кто может?

Цитата:
Сообщение от None  
Собственно, набрел случайно на данный кусочек кода. Очень удобное место для проведения +union+select запроса.
Адрес уязвимости: /engine/forget.php
Проверена на: 8.0, 8.0+
Уязвимый участок кода:
Код:
Code:
elseif (isset($_POST["submit_lost"]) && isset($_POST["step2"]))
{
    $lost_l2answer = $_POST["lost_l2answer"];
    $lost_l2login = $_POST["step2"];
    list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
    if ($lost_l2answer != $lost_l2answer_db)
    {
        $error_lost = "Обнаружены следующие ошибки:
Ответ на секретный вопрос не верный!";
    }
    else
    {
        $lost_l2answer = false;
        $tmp_pass = "user" . _code_generate(6);
        $tmp_pass_encode = pass_encode($tmp_pass);
        $ldb->query($ldb->_parse_query($qList[$l2db_ls]["setPassword"], array("pass" => $tmp_pass_encode, "login" => $lost_l2login)));
        if ($ldb->affectedrows() == 1)
        {
            if ($config["site"]["forget"]["method"] == 1 && $_l2email != "null@null" && $_l2email != "")
            {
                $_host = $_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : @getenv('HTTP_HOST');
                $mail_subject = "Восстановление пароля";
                $mail_message = На ваш E-Mail адрес, указанный при регистрации, было отправлено уведомление с новым паролем.";
                }
                else
                {
                    $error_lost = "Обнаружены следующие ошибки:
Письмо не было отправлено! Попробуйте позже или обратитесь к Администрации.";
                }
            }
            else
            {
                $error_lost = "Уважаемый посетитель! Согласно Вашему запросу для Вас был сгенерирован новый пароль. Для входа на сайт используйте следующие данные:
Логин: {$lost_l2login}
Пароль: {$tmp_pass}
После авторизации на сайте вы сможете изменить данный пароль на любой другой.";

            }
        }
        else
        {
            $error_lost = "Ошибка базы данных! Попробуйте позже.";
        }
    }
}
Уязвимая переменная(не фильтруется) :
Цитата:
Сообщение от None  
$lost_l2login = $_POST["step2"];
Используется в SQL-запросе:
Цитата:
Сообщение от None  
list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
" if author else f"
Цитата:
Собственно, набрел случайно на данный кусочек кода. Очень удобное место для проведения +union+select запроса.
Адрес уязвимости: /engine/forget.php
Проверена на: 8.0, 8.0+
Уязвимый участок кода:
Код:
Code:
elseif (isset($_POST["submit_lost"]) && isset($_POST["step2"]))
{
    $lost_l2answer = $_POST["lost_l2answer"];
    $lost_l2login = $_POST["step2"];
    list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
    if ($lost_l2answer != $lost_l2answer_db)
    {
        $error_lost = "Обнаружены следующие ошибки:
Ответ на секретный вопрос не верный!";
    }
    else
    {
        $lost_l2answer = false;
        $tmp_pass = "user" . _code_generate(6);
        $tmp_pass_encode = pass_encode($tmp_pass);
        $ldb->query($ldb->_parse_query($qList[$l2db_ls]["setPassword"], array("pass" => $tmp_pass_encode, "login" => $lost_l2login)));
        if ($ldb->affectedrows() == 1)
        {
            if ($config["site"]["forget"]["method"] == 1 && $_l2email != "null@null" && $_l2email != "")
            {
                $_host = $_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : @getenv('HTTP_HOST');
                $mail_subject = "Восстановление пароля";
                $mail_message = На ваш E-Mail адрес, указанный при регистрации, было отправлено уведомление с новым паролем.";
                }
                else
                {
                    $error_lost = "Обнаружены следующие ошибки:
Письмо не было отправлено! Попробуйте позже или обратитесь к Администрации.";
                }
            }
            else
            {
                $error_lost = "Уважаемый посетитель! Согласно Вашему запросу для Вас был сгенерирован новый пароль. Для входа на сайт используйте следующие данные:
Логин: {$lost_l2login}
Пароль: {$tmp_pass}
После авторизации на сайте вы сможете изменить данный пароль на любой другой.";

            }
        }
        else
        {
            $error_lost = "Ошибка базы данных! Попробуйте позже.";
        }
    }
}
Уязвимая переменная(не фильтруется) :
Цитата:
Сообщение от None  
$lost_l2login = $_POST["step2"];
Используется в SQL-запросе:
Цитата:
Сообщение от None  
list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
 
Ответить с цитированием

  #2  
Старый 04.09.2010, 02:17
v1d0qz
Познающий
Регистрация: 21.07.2007
Сообщений: 68
Провел на форуме:
947074

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

Она уже существует довольно таки давно ..

/showpost.php?p=2066226&postcount=55
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ