Любой пользователь может получить пароли других, воспользовавшись функцией напоминания пароля (lost password).
Алгоритм следующий.
1. Находим email какого-либо из существующих пользователей на доске.
2. Регистрим пользователя с таким-же e-mail
3. Меняем e-mail на нужный нам
4. Пользуемся кнопочкой выслать пароль
5. Получаем пароль не только свежесозданного пользователя, но и того чей mail использовалься вначале.
Можно выстраивать целые цепочки из майлов.
А теперь причина:
Файл ubb_lib_misc.cgi
sub find_lost {
??????????????..
# get list of registered emails
my @email_list = &OpenFileAsArray("$vars_config{MembersPath}/emailfile.cgi");
#lowercase the input
my $lc_email = lc($in{email});
Что-же мы тут видим (интересующий кусок выделен комментариями), файлик открывается, просматривается на наличие заменяемого e-mail'a, при обнаружении меняется, потом записывается. Только не учитывается, что кто-то мог ввести чужой mail и замена будет проходить не только у пользователя, запросившего смену адреса, а всех таких адресов.
Данная уязвимость обнаружена во всей ветке UBB 6.0.x, ветка 6.1.x не тестировалась ввиду отсутствия данной версии.