[ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Проблемы с установкой или работой phpBB 3.3.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17217
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 584 раза
Поблагодарили: 1779 раз

[ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение rxu »

Как уже известно из новостей о выходе phpBB 3.3.17, все версии до указанной (вплоть до 3.1.0) подвержены уязвимости, связанной с возможностью простого обхода авторизации и входа с использованием только имени аккаунта (без пароля) любого пользователя. Включая администратора или модератора. Злоумышленники смогут произвести любые действия от имени такого пользователя, на которые у этого пользователя есть соответствующие права, за исключением входа в админраздел.
Уязвимость найдена с помощью ИИ.

Чтобы предотвратить данный сценарий до того, как появится возможность обновить конференцию, необходимо:
  1. Отключить аутентификацию OAuth в админразделе (Главная страница админраздела - Средства связи - Аутентификация).
  2. Отредактировать файл \config\default\container\services_auth.yml, удалив блоки

    Код: Выделить всё

        auth.provider.apache:
            class: phpbb\auth\provider\apache
            arguments:
                - '@config'
                - '@dbal.conn'
                - '@language'
                - '@request'
                - '@user'
                - '%core.root_path%'
                - '%core.php_ext%'
            tags:
                - { name: auth.provider }
    
        auth.provider.ldap:
            class: phpbb\auth\provider\ldap
            arguments:
                - '@config'
                - '@dbal.conn'
                - '@language'
                - '@user'
            tags:
                - { name: auth.provider }
    
  3. Удалить с сервера следующие файлы:
    • /phpbb/auth/provider/apache.php
    • /phpbb/auth/provider/ldap.php
  4. Очистить кэш конференции.
Изображение
Shredder
Former team member
Сообщения: 2259
Стаж: 17 лет 5 месяцев
Благодарил (а): 162 раза
Поблагодарили: 149 раз

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Shredder »

Так и знал, что этот ИИ чё-нибудь такое там обнаружит.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3345
Стаж: 17 лет 2 месяца
Благодарил (а): 17 раз
Поблагодарили: 563 раза

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Nekstati »

Можно исправить без отключения функций и удаления файлов - так же, как оно исправлено в последней версии:

Код: Выделить всё

// открыть файл
includes\ucp\ucp_login_link.php
// найти строку
		$auth_provider = $provider_collection->get_provider($request->variable('auth_provider', ''));
// заменить на
		$auth_provider = $provider_collection->get_provider();

// открыть файл
phpbb\auth\provider\base.php
// найти функцию
	public function login_link_has_necessary_data(array $login_link_data)
	{
		return;
	}
// заменить на
	public function login_link_has_necessary_data(array $login_link_data)
	{
		return 'LOGIN_LINK_MISSING_DATA';
	}
// или найти (в более старых версиях phpBB)
	public function login_link_has_necessary_data($login_link_data)
	{
		return;
	}
// заменить на
	public function login_link_has_necessary_data($login_link_data)
	{
		return 'LOGIN_LINK_MISSING_DATA';
	}
Аватара пользователя
southklad
phpBB 3.1.0 RC4
Сообщения: 3450
Стаж: 14 лет 5 месяцев
Благодарил (а): 706 раз
Поблагодарили: 173 раза

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение southklad »

Одного из изменений от rxu, или Nekstati, достаточно, чтобы временно закрыть дыру? Сейчас обновляю один форум, а за ним второй.
Изображение
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13077
Стаж: 14 лет 10 месяцев
Благодарил (а): 164 раза
Поблагодарили: 2382 раза

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Татьяна5 »

southklad, любого достаточно
Вариант от rxu временно ломает часть oauth, от Nekstati - сохраняет всё в рабочем виде
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3345
Стаж: 17 лет 2 месяца
Благодарил (а): 17 раз
Поблагодарили: 563 раза

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Nekstati »

Для тех, кому интересно, как работает этот эксплойт. Всё-таки первая настоящая дыра в phpBB за много лет!
  

Код: Выделить всё

curll -i -s -c cookies.txt -b cookies.txt -u "admin:anything" -d "logiin=anything&logiin_usrname=admin&logiin_pssword=anything" "http://website.com/ucp.php?mode=login_lnk&auth_provider=apache&login_link_anything=anything"
  
Эксплойт выдаёт нам ID админа и его сессионный токен. Слово "anything" можно заменить на что угодно, а "admin" должно быть действительным юзернеймом админа, модератора или любого пользователя. Юзернейм - это всё, что нам нужно знать. Далее мы можем войти на форум под этим пользователем. Правда, в администраторский раздел попасть не получится - phpBB запросит пароль.

В эксплойте два ключевых параметра: login_link_anything и auth_provider. Остальные параметры отвечают за активацию нужного режима и действуют так же, как при штатном входе.

Сначала параметр login_link_anything=anything создаёт видимость, что мы передали какие-то данные, и позволяет обойти проверку на пустые данные в самом начале обработки запроса.
https://github.com/phpbb/phpbb/blob/555 ... nk.php#L56

Далее эти данные должен проверить метод phpbb\auth\provider\base.php\login_link_has_necessary_data(). Он на самом деле ничего не проверяет и всегда говорит "ОК". Это было исправлено в phpBB 3.3.17 - метод теперь по умолчанию возвращает ошибку. Впрочем, это исправление ещё не закрывает уязвимость, но хотя бы устраняет видимость проверки.
https://github.com/phpbb/phpbb/blob/555 ... nk.php#L68
https://github.com/phpbb/phpbb/blob/555 ... se.php#L90

Далее параметр auth_provider=apache активирует модуль авторизации Apache phpbb\auth\provider\apache.php, даже если он не включён и не настроен. Это основная ошибка, исправленная в phpBB 3.3.17.
https://github.com/phpbb/phpbb/blob/555 ... nk.php#L62

И далее модуль phpbb\auth\provider\apache.php авторизует нас под выбранным юзернеймом (-u "admin:anything") без проверки пароля и выдаёт нам HTTP-заголовки Set-Cookie с искомым сессионным токеном. Он так и должен делать, ведь он считает, что пароль уже запрошен и проверен самим сервером. Но сервер ничего не проверял, т.к. мы не настраивали на нём Apache-аутентификацию.
Аватара пользователя
Михаил Молчанов
phpBB 1.4.4
Сообщения: 167
Стаж: 1 год 10 месяцев
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 7 раз

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Михаил Молчанов »

Я давно когда только создавал форум. Один юзер хотел зарегистрироваться под именем админ.
Создал и раскручиваю свой форум! :D

Изображение
Vlad__
phpBB 2.0.7
Сообщения: 571
Стаж: 9 лет 6 месяцев
Благодарил (а): 243 раза
Поблагодарили: 53 раза

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Vlad__ »

Nekstati писал(а): Сегодня 15:24 // или найти (в более старых версиях)
// заменить на
Только тоже без array, т.к.

Код: Выделить всё

PHP Fatal error:  Declaration of phpbb\auth\provider\base::login_link_has_necessary_data(array $login_link_data) must be compatible with phpbb\auth\provider\provider_interface::login_link_has_necessary_data($login_link_data) in /var/www/site/phpbb/auth/provider/base.php on line 19
Или же array добавить и в provider_interface.php

Это касается старых версий.
Последний раз редактировалось Vlad__ 13.06.2026 19:38, всего редактировалось 2 раза.
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3345
Стаж: 17 лет 2 месяца
Благодарил (а): 17 раз
Поблагодарили: 563 раза

Re: [ВАЖНО] Как избежать взлома на версиях phpBB до 3.3.17

Сообщение Nekstati »

Vlad__, поправила, спасибо.

Вернуться в «Поддержка phpBB 3.3.x»