Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Уязвимости Защиты (http://forum.mynuke.ru/forumdisplay.php?f=15)
-   -   Небольшая уязвимость user level phpBB 2.0.13 (http://forum.mynuke.ru/showthread.php?t=40)

Soniks 09.03.2005 16:27

Небольшая уязвимость user level phpBB 2.0.13
 
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:

Найденый баг в:
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


Очередной баг исправлен :pirate:

fimich 13.06.2008 22:16

не найду такой код, если я обновил форум до 2.0.23
нужно мне делать это?


Часовой пояс GMT +4, время: 18:01.

Copyright © 2005 by Soniks