Soniks
09.03.2005, 16:27
phpBB 2.0.13 - user level exploit
Подвергши версии: все версии включая phpBB 2.0.13
Файл: sessions.php
Описание: Найден баг в авторизации пользователя на форуме (автологин).
Если авторизация пройдет неудачно, то произойдет присвоение переменной $userdata ['user_id'] как АНОНИМНОМУ пользователю, но $userdata ['user_level'] остается по прежнему пользовательским. Теперь phpBB будет проверять userlevel в различных местах кода и игнорировать user_id.
Так, если Вы поизменяете "_data" cookie, чтобы послать user_id admin, Вы сможете видеть информацию, видимая администратору. Например как, скрытые пользователи в, "кто - в онлайн" или адреса электронной почты пользователей, даже если пользователь запретил это, в профиле. Возможно Вы сможете даже использовать некоторые функции admin, я не проверял это подробно. Манипуляция cookies будет только воздействовать на первую страницу, поскольку session.php тогда перепишет user_id, если Вы, конечно, не запретите браузеру изменять куки. :wink:
Найденый баг в:
if ( $user_id != ANONYMOUS )
{
$auto_login_key = $userdata['user_password'];
if ( $auto_create )
{
if ( isset($sessiondata['autologinid']) && $userdata['user_active'] )
{
// We have to login automagically
if( $sessiondata['autologinid'] === $auto_login_key )
{
// autologinid matches password
$login = 1;
$enable_autologin = 1;
}
else
{
// No match; don't login, set as anonymous user
$login = 0;
$enable_autologin = 0;
$user_id = $userdata['user_id'] = ANONYMOUS;
}
}
else
{
// Autologin is not set. Don't login, set as anonymous user
$login = 0;
$enable_autologin = 0;
$user_id = $userdata['user_id'] = ANONYMOUS;
}
}
else
{
$login = 1;
}
}
else
{
$login = 0;
$enable_autologin = 0;
}
Исправляем баг: В выше указаном коде, в файле includes/sessions.php
добавьте:
$userdata['user_level'] = USER;
после каждого:
$user_id = $userdata['user_id'] = ANONYMOUS;
Выглядить будет так:
$user_id = $userdata['user_id'] = ANONYMOUS;
$userdata['user_level'] = USER;
Очередной баг исправлен :pirate:
Подвергши версии: все версии включая phpBB 2.0.13
Файл: sessions.php
Описание: Найден баг в авторизации пользователя на форуме (автологин).
Если авторизация пройдет неудачно, то произойдет присвоение переменной $userdata ['user_id'] как АНОНИМНОМУ пользователю, но $userdata ['user_level'] остается по прежнему пользовательским. Теперь phpBB будет проверять userlevel в различных местах кода и игнорировать user_id.
Так, если Вы поизменяете "_data" cookie, чтобы послать user_id admin, Вы сможете видеть информацию, видимая администратору. Например как, скрытые пользователи в, "кто - в онлайн" или адреса электронной почты пользователей, даже если пользователь запретил это, в профиле. Возможно Вы сможете даже использовать некоторые функции admin, я не проверял это подробно. Манипуляция cookies будет только воздействовать на первую страницу, поскольку session.php тогда перепишет user_id, если Вы, конечно, не запретите браузеру изменять куки. :wink:
Найденый баг в:
if ( $user_id != ANONYMOUS )
{
$auto_login_key = $userdata['user_password'];
if ( $auto_create )
{
if ( isset($sessiondata['autologinid']) && $userdata['user_active'] )
{
// We have to login automagically
if( $sessiondata['autologinid'] === $auto_login_key )
{
// autologinid matches password
$login = 1;
$enable_autologin = 1;
}
else
{
// No match; don't login, set as anonymous user
$login = 0;
$enable_autologin = 0;
$user_id = $userdata['user_id'] = ANONYMOUS;
}
}
else
{
// Autologin is not set. Don't login, set as anonymous user
$login = 0;
$enable_autologin = 0;
$user_id = $userdata['user_id'] = ANONYMOUS;
}
}
else
{
$login = 1;
}
}
else
{
$login = 0;
$enable_autologin = 0;
}
Исправляем баг: В выше указаном коде, в файле includes/sessions.php
добавьте:
$userdata['user_level'] = USER;
после каждого:
$user_id = $userdata['user_id'] = ANONYMOUS;
Выглядить будет так:
$user_id = $userdata['user_id'] = ANONYMOUS;
$userdata['user_level'] = USER;
Очередной баг исправлен :pirate: