|
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, если Вы, конечно, не запретите браузеру изменять куки.
Найденый баг в:
PHP код:
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
добавьте:
PHP код:
$userdata['user_level'] = USER;
после каждого:
PHP код:
$user_id = $userdata['user_id'] = ANONYMOUS;
Выглядить будет так:
PHP код:
$user_id = $userdata['user_id'] = ANONYMOUS; $userdata['user_level'] = USER;
Очередной баг исправлен
|
|