Не удается получить доступ к WP Admin, появляется сообщение: «Извините, вам запрещено доступ к этой странице».

Вопрос или проблема

Внезапно мы не смогли попасть в админ-панель сайта. Когда я вхожу на /wp-login.php, меня перенаправляет на главную страницу или /wp-admin (в зависимости от того, посещал ли я wp-admin в незалогиненном состоянии или нет)

Версия WordPress: 5.6.2

Когда происходит перенаправление на /wp-admin, я вижу:

“Извините, у вас нет доступа к этой странице.”

Моей первой догадкой было то, что кто-то (возможно, другой пользователь с правами администратора) изменил роли. Это было не так, я удостоверился, посмотрев на таблицы базы данных, и пользователи имели wp_capabilities, соответствующие правам администратора.

Затем я попробовал множество других способов, и ни один не сработал:

  1. Создал нового пользователя с помощью wp_create_user, добавил права администратора, вошел в этот аккаунт через окно для приватного просмотра. То же самое.

  2. Перешел на git-репозиторий WordPress, чтобы найти, где появляется “Извините, у вас нет доступа к этой странице.”, это было во многих местах, поэтому я добавил случайную строку текста в некоторые файлы, чтобы точно узнать, откуда она, это происходило из файла wp-admin/includes/menu.php в последних строках:

    if ( ! user_can_access_admin_page() ) {

  3. Я подумал, что, возможно, user_can_access_admin_page() возвращает неверную информацию по какой-то причине, поэтому использовал шаблон страницы для вывода некоторых данных следующим образом

if ( current_user_can('administrator') ) {
    echo "Да, администратор";
}

if ( user_can_access_admin_page() ) {
    echo "Может получить доступ к админу";
} else {
    echo "Не может получить доступ к админу";
}

Оба вернули true, однако проверка в menu.php не сработала. Не уверен почему.

  1. Заменил папки wp-admin и wp-includes на свежие копии, загруженные из WordPress org.

  2. Переименовал папки темы и плагинов, чтобы исключить проблему, возникающую от плагина или темы. Не в этом дело, все осталось так же.

  3. Проверил журнал ошибок Apache2, а также включил журнал отладки для WP, чтобы найти любые связанные ошибки, ничего не найдено. Ничего особенного, только обычные замечания PHP, которые я уже видел раньше.

  4. В один момент я заметил, что сертификат SSL истек месяц назад (хотя проблема началась вчера), поэтому просто чтобы быть уверенным, я обновил его, но все осталось так же.

Любая идея, что может быть не так, могла бы очень помочь!

Мне удалось это решить.

Причина была в том, что: Данные о ролях пользователей, которые установлены по умолчанию в установке WordPress, полностью отсутствовали в таблице базы данных wp_options в строке wp_user_roles.

В моем случае это было так

a:3:{s:14:"backwpup_admin";a:2:{s:4:"name";s:14:"BackWPup Admin";s:12:"capabilities";a:12:{s:4:"read";b:1;s:8:"backwpup";b:1;s:13:"backwpup_jobs";b:1;s:18:"backwpup_jobs_edit";b:1;s:19:"backwpup_jobs_start";b:1;s:16:"backwpup_backups";b:1;s:25:"backwpup_backups_download";b:1;s:23:"backwpup_backups_delete";b:1;s:13:"backwpup_logs";b:1;s:20:"backwpup_logs_delete";b:1;s:17:"backwpup_settings";b:1;s:16:"backwpup_restore";b:1;}}s:14:"backwpup_check";a:2:{s:4:"name";s:21:"BackWPup jobs checker";s:12:"capabilities";a:12:{s:4:"read";b:1;s:8:"backwpup";b:1;s:13:"backwpup_jobs";b:1;s:18:"backwpup_jobs_edit";b:0;s:19:"backwpup_jobs_start";b:0;s:16:"backwpup_backups";b:1;s:25:"backwpup_backups_download";b:0;s:23:"backwpup_backups_delete";b:0;s:13:"backwpup_logs";b:1;s:20:"backwpup_logs_delete";b:0;s:17:"backwpup_settings";b:0;s:16:"backwpup_restore";b:0;}}s:15:"backwpup_helper";a:2:{s:4:"name";s:23:"BackWPup jobs functions";s:12:"capabilities";a:12:{s:4:"read";b:1;s:8:"backwpup";b:1;s:13:"backwpup_jobs";b:1;s:18:"backwpup_jobs_edit";b:0;s:19:"backwpup_jobs_start";b:1;s:16:"backwpup_backups";b:1;s:25:"backwpup_backups_download";b:1;s:23:"backwpup_backups_delete";b:1;s:13:"backwpup_logs";b:1;s:20:"backwpup_logs_delete";b:1;s:17:"backwpup_settings";b:0;s:16:"backwpup_restore";b:0;}}}

В то время как должно было быть Administrator хотя бы где-то. И эти отсутствующие данные в базе данных заставили систему WordPress вести себя странно (фактически работая именно так, как ожидалось в случае отсутствия данных)

Я знал, как это должно выглядеть, но чтобы проверить это, я сделал следующее: взял wp_user_roles с другого сайта WP, который я управляю, вставил его в поле таблицы и сохранил, бац! Сайт открылся.

Теперь почему это произошло внезапно?

Ну, в моем случае похоже, что произошло какое-то нарушение, атака, потому что теперь, когда я в панели управления, первым делом я посмотрел на страницу пользователей, и там куча странных учетных записей пользователей.

Так что теперь у меня есть еще одна задача — найти причину и очистить этот беспорядок, но всем, у кого возникают трудности с определением проблем с доступом к странице админки WP и видят сообщение об ошибке, и ничего не помогает, например, отключение плагинов и т. д., обязательно проверьте фактические поля базы данных, соответствуют ли они. Я смог определить это, просто используя print_r объекта user и заметив, что не было roles, затем я использовал методы для добавления роли Administrator, и она просто не добавлялась, а потом я понял, что сама роль Administrator отсутствует.

Ответ или решение

Если вы столкнулись с проблемой невозможности доступа к панели администратора WordPress и сообщение гласит «Извините, у вас нет разрешения на доступ к этой странице», это может быть связано с несколькими причинами. Давайте детально разберем возможные причины и пути их устранения, используя методологичный подход и основываясь на представленной проблеме и решении.

Фон проблемы

Неожиданно невозможно попасть в административную панель на сайте WordPress. После авторизации через /wp-login.php происходит перенаправление на главную страницу или /wp-admin, в зависимости от того, посещали ли вы /wp-admin в незарегистрированном состоянии или нет. При этом появляется сообщение: «Извините, у вас нет разрешения на доступ к этой странице».

Версия WordPress: 5.6.2.

Шаги по устранению

  1. Проверка ролей и прав доступа пользователей: Первая мысль — возможно, кто-то изменил роли пользователей. Однако в базе данных роли пользователей подтверждены как администраторские.

  2. Создание нового пользователя: Попробуйте создать нового пользователя с правами администратора через wp_create_user, но даже в учетной записи нового пользователя проблема сохраняется.

  3. Диагностика использования функций: Выясните, возвращает ли user_can_access_admin_page() правильные данные. Создайте шаблон страницы, чтобы вывести информацию с помощью следующих функций:

    if ( current_user_can('administrator') ) {
        echo "Да, администратор";
    }
    
    if ( user_can_access_admin_page() ) {
        echo "Может получить доступ к администратору";
    } else {
        echo "Не может получить доступ к администратору";
    }

    Несмотря на то, что обе функции возвращают true, проблема не решается.

  4. Замена папок wp-admin и wp-includes: Замените эти директории на свежезагруженные с официального сайта WordPress.

  5. Проверка на вмешательства со стороны тем и плагинов: Переименуйте папки с темами и плагинами, чтобы исключить причину, связанную с ними. Проблема сохраняется.

  6. Анализ журналов ошибок и отладка: Проверьте журналы ошибок Apache и включите отладку в WordPress для поиска ошибок. Здесь все в порядке, только обычные PHP-уведомления.

  7. SSL-сертификат: Обратите внимание на SSL-сертификат. Хотя он устарел, обновление проблемы не решило.

Причина и решение

Проблема заключалась в отсутствии данных о пользовательских ролях в таблице wp_options в базе данных. Запись wp_user_roles была повреждена или удалена:

a:3:{s:14:"backwpup_admin";a:2:{s:4:"name";s:14:"BackWPup Admin"; ...}}

Необходимо было восстановить отсутствие роли Administrator. В остальных случаях система WordPress просто вела себя правильно для отсутствующего состояния данных. Это было решено путем копирования данных wp_user_roles с другого сайта и вставки их обратно в текущую базу данных.

Вывод и дальнейшие шаги

После восстановления доступа к панели администратора необходимо выяснить причину уязвимости, так как присутствуют подозрительные учетные записи пользователей, что указывает на возможную кибератаку. Следует прийти к плану действий по безопасности, включая очистку злоумышленников и внедрение дополнительных мер защиты.

Этот комплексный подход поможет вам диагностировать и устранить проблему с доступом к админу WordPress, обеспечивая профессиональное решение. В качестве дополнительной безопасности, рассмотрите возможность проведения аудита безопасности и обновления всех компонент системы, включая ядро WordPress, темы и плагины.

Оцените материал
Добавить комментарий

Капча загружается...