ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

29.08.2010, 07:49
|
|
Познающий
Регистрация: 12.06.2008
Сообщений: 32
Провел на форуме: 324402
Репутация:
22
|
|
Собственно не так давно появилась тема с указанием уязвимости, но я не как не могу раскрутить саму уязвимость, помогите кто может?
Сообщение от 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"));
|
|
|

04.09.2010, 02:17
|
|
Познающий
Регистрация: 21.07.2007
Сообщений: 68
Провел на форуме: 947074
Репутация:
257
|
|
Она уже существует довольно таки давно ..
/showpost.php?p=2066226&postcount=55
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|