Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Компьютер для продвинутых пользоватлей Выпус по безопасности. Ошибка в PunBB.


Компьютер для продвинутых пользователей
Содержание:
PunBB
ПО: PunBB
Версия: 1.2.10

О программе:
Коротко, PunBB быстрый и малый по размеру форум написанный на PHP. Выпушенная по лицензии GNU. Это первая попытка сделать быструю, маленькую и малографическую альтернативу других проектов как phpBB, IPB и vBulletine. PunBB имеет меньше функций и особенностей в отличие от других, но обладает быстрыми и маленькими по размеру страничками.
Описание:
1) Отказ обслуживания.
Когда происходит запрос, скрипт не проверяет IP ранее зарегистрированного пользователя.
Этот баг позволяет сделать некоторые выводы:
- Отсутствие свободного места в базе данных.
- Ошибки синтаксического анализа.
- Некорректное выполнение администратором удаления пользователей.
- Отказ в обслуживании.
Вот кусок кода:
$now = time();

$intial_group_id = ($pun_config['o_regs_verify'] == '0') ?
$pun_config['o_default_user_group'] : PUN_UNVERIFIED;
$password_hash = pun_hash($password1);

// Add the user
$db->query('INSERT INTO '.$db->prefix.'users (username, group_id, password,
email, email_setting, save_pass, timezone, language, style, registered,
registration_ip, last_visit) VALUES(\''.$db->escape($username).'\',
'.$intial_group_id.', \''.$password_hash.'\', \''.$email1.'\', '.$email_setting.',
'.$save_pass.', '.$timezone.' , \''.$db->escape($language).'\', \'
'.$pun_config['o_default_style'].'\', '.$now.', \''.get_remote_address().'\',
'.$now.')') or error('Unable to create user', __FILE__, __LINE__, $db->error());

$new_uid = $db->insert_id();

// If we previously found out that the e-mail was banned
if ($banned_email && $pun_config['o_mailing_list'] != '')
{
$mail_subject = 'Alert - Banned e-mail detected';
$mail_message = 'User \''.$username.'\' registered with banned
e-mail address: '.$email1."\n\n".'User profile: '.$pun_config
['o_base_url'].'/profile.php?id='.$new_uid."\n\n".'-- '."\n".
'Forum Mailer'."\n".'(Do not reply to this message)';

pun_mail($pun_config['o_mailing_list'], $mail_subject, $mail_message);
}
До этого кода не встречается запрос на проверку базы данных на флуд.
2) Возможен подбор логина методом перебора.
Возможно, вы думаете, что эта ошибка не серьезна, но, к сожалению, на сегодняшний день используют метод перебора для подбора пароля.
Когда пользователь регистрируется, форум сообщает, что пароль должен быть меньше 4 байт. Если немного подумать, взлом 4-ех байтового пароля (возможно алфавитно-цифрового, потому как я уверен, что 90% паролей являются таковыми) требует некоторого времени для соединения и отправки запросов к серверу, но это время нам дается. Хотя сервер может заблокировать частые запросы, но все-таки такая ошибка возможна практически везде.
Потому как предыдущая ошибка скрипта не проверяет IP возможно отправить множество запросов с одного компьютера.
Кусок кода:
if (isset($_POST['form_sent']) && $action == 'in')
{
$form_username = trim($_POST['req_username']);
$form_password = trim($_POST['req_password']);

$username_sql = ($db_type == 'mysql' || $db_type == 'mysqli') ? 'username=\'
'.$db->escape($form_username).'\'' : 'LOWER(username)=LOWER(\''.
$db->escape($form_username).'\')';

$result = $db->query('SELECT id, group_id, password, save_pass FROM '.
$db->prefix.'users WHERE '.$username_sql) or error('Unable to fetch user
info', __FILE__, __LINE__, $db->error());
list($user_id, $group_id, $db_password_hash, $save_pass) =
$db->fetch_row($result);

$authorized = false;

if (!empty($db_password_hash))
{
$sha1_in_db = (strlen($db_password_hash) == 40) ? true : false;
$sha1_available = (function_exists('sha1') || function_exists('mhash'))
? true : false;

$form_password_hash = pun_hash($form_password);
// This could result in either an SHA-1 or an MD5 hash
(depends on $sha1_available)

if ($sha1_in_db && $sha1_available && $db_password_hash
== $form_password_hash)
$authorized = true;
else if (!$sha1_in_db && $db_password_hash == md5($form_password))
{

PunBB
Рассылка создана и ведется при поддержке Информационной сети Пермского края.
Меня можно найти: ICQ - 273214003

В избранное