4.4 Відновлення паролів у CMS

The Host Banner

Втрата доступу до адміністративної панелі — одна з найпоширеніших проблем під час керування сайтом. Це може статися через забутий пароль, помилку користувача або навіть зловмисні дії. У цій статті ми розглянемо всі можливі способи відновлення пароля в популярних CMS.

Вимоги

Зверніть увагу: для відновлення доступу за допомогою пошти у вашій CMS має бути коректно налаштовано поштову службу для надсилання листів.

WordPress

Змінити пароль для WordPress можливо трьома способами: за допомогою вбудованих механізмів відновлення доступу, phpMyAdmin та файлу активної теми functions.php.

Відновлення через відправлення email листа

Перейдіть за адресою https://<YOUR_DOMAIN>/wp-login.php?action=lostpassword і введіть ваш email або логін. На вказану пошту прийде лист з інструкціями для відновлення пароля.

wp-forget-password

Відновлення через phpMyAdmin

  1. Увійдіть до phpMyAdmin, виберіть базу даних сайту і відкрийте таблицю wp_users;

wp-set-password-phpMyAdmin

  1. Натисніть «Змінити» навпроти користувача admin (ім’я може бути іншим);

wp-change-password-in-db

  1. У полі user_pass виберіть функцію MD5 і введіть новий надійний пароль;

wp-set-new-password

  1. У нижній частині сторінки натисніть кнопку “Вперед”, щоб застосувати новий пароль.

confirm

Також можна змінити пароль за допомогою SQL-запиту. У phpMyAdmin перейдіть до таблиці вашої бази даних і відкрийте вкладку “SQL”:

wp-open-sql

Вставте запит:

UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE user_login = 'ADMIN_USER';

Зверніть увагу: замініть PASSWORD і ADMIN_USER на бажаний пароль та ім’я користувача адміністратора.

Відновлення за допомогою файлу functions.php

Відкрийте файловий менеджер і перейдіть до директорії теми вашого сайту ~/www/YOUR.DOMAIN/wp-content/themes/YOUR_THEME/, відкрийте файл functions.php і вставте на початок після <?php наступний рядок:

wp-change-password-via-functionPHP

wp_set_password('PASSWORD', ID);

Увійдіть в адміністративну панель сайту з новим паролем.

Зверніть увагу: замініть PASSWORD на бажаний пароль, а ID — на ID користувача. Після входу обов’язково видаліть доданий код.

Joomla

Joomla — одна з найпопулярніших систем керування контентом, тому ситуація із втратою адміністративного пароля трапляється доволі часто. На щастя, відновити доступ можна кількома способами: від стандартної функції «Забули пароль?» на сторінці входу до ручного редагування запису користувача у базі даних. Нижче ми розглянемо найбільш надійні методи, починаючи з відновлення через phpMyAdmin.

Відновлення через базу даних

  1. Увійдіть до phpMyAdmin;

  2. Виберіть базу даних сайту і відкрийте таблицю #__users;

joomla-phpMyAdmin

  1. Для користувача admin у полі password вставте хеш-пароль d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199 — це значення встановить пароль secret;

joomla-set-hash-password

  1. Перейдіть за адресою YOUR.DOMAIN/administrator/ та авторизуйтеся з новим паролем;

  2. Після входу перейдіть у налаштування облікового запису адміністратора та змініть пароль на більш надійний:

joomla-admin-edit-account

joomla-admin-set-password-ua

OpenCart

OpenCart — популярна платформа електронної комерції з відкритим вихідним кодом. Втрата доступу до адміністративної панелі може призвести до простою магазину та втрати замовлень, тому вкрай важливо якнайшвидше відновити контроль над обліковим записом адміністратора. Один із найпростіших і найнадійніших способів — скористатися вбудованою функцією скидання пароля, яка надсилає одноразове посилання на зареєстровану електронну адресу. Нижче ми детально розглянемо, як це зробити.

Відновлення за допомогою email листа

Перейдіть на сторінку входу YOUR.DOMAIN/admin, натисніть «Забули пароль?» і введіть свою електронну адресу. Перевірте поштову скриньку.

Зверніть увагу: для цього має бути правильно налаштована пошта в CMS. В іншому випадку лист відновлення не надійде.

Відновлення через базу даних

  1. Увійдіть до phpMyAdmin;

  2. Виберіть базу даних сайту й натисніть вкладку SQL:

opencart-choose-db-ua

  1. Введіть запит, замінивши PASSWORD на ваш новий пароль:
UPDATE `oc_user` SET `password` = md5('PASSWORD') WHERE `username` = 'admin'

opencart-sql

Натисніть кнопку для виконання:

confirm

PrestaShop

PrestaShop — популярна CMS для електронної комерції з відкритим вихідним кодом. Втрата доступу до бек-офісу може паралізувати магазин і призвести до втрати замовлень, тому критично швидко відновити контроль над обліковим записом адміністратора. Найпростіший спосіб — скористатися вбудованою функцією скидання пароля, але у вас завжди є резервні методи через phpMyAdmin або аварійний скрипт/CLI.

Відновлення через email-лист

  1. Перейдіть на сторінку входу бек-офісу https://YOUR.DOMAIN/admin123/
  2. Натисніть I forgot my password
  3. Введіть e-mail, прив’язаний до облікового запису адміністратора
  4. Перевірте поштову скриньку й перейдіть за одноразовим посиланням для встановлення нового пароля

Зверніть увагу: потрібно замінити YOUR.DOMAIN, admin123 на фактичні дані вашого сайту.

prestashop-forgot-password

Увага: функція працює лише за правильно налаштованого SMTP чи іншого поштового сервісу сайту.

Відновлення через phpMyAdmin

Для версій PrestaShop ≤ 1.6.x (старий криптоалгоритм — MD5)

  1. Знайдіть cookie-key, для цього відкрийте файл config/settings.inc.php та скопіюйте значення константи _COOKIE_KEY_;

  2. Обчисліть хеш нового пароля виконавши команду:

echo -n '<COOKIE_KEY><NEW_PASSWORD>' | md5sum

Зверніть увагу: замініть <COOKIE_KEY> та <NEW_PASSWORD> на cookie-key із минулого кроку та бажаний пароль.

  1. Перейдіть у phpMyAdmin та відкрийте таблицю ps_employee, оберіть запис Вашого користувача та натисніть Змінити;

prestashop-phpmyadmin

  1. Замініть значення поля passwd на MD5-хеш із кроку 2;
  2. Збережіть новий пароль та перейдіть до адміністративної сторінки Вашого сайту.

Підказка: можете одразу виконати наступний sql-запит:

UPDATE ps_employee
SET    passwd = MD5('<COOKIE_KEY><NEW_PASSWORD>')
WHERE  email  = 'admin@example.com';

Для версій PrestaShop ≥ 1.7.x (новий криптоалгоритм — bcrypt)

  1. Знайдіть cookie-key — відкрийте файл app/config/parameters.php і скопіюйте значення параметра cookie_key;

  2. Згенеруйте bcrypt-хеш нового пароля, виконавши команду:

    php -r "echo password_hash(<NEW_PASSWORD>, <COOKIE_KEY>);"
    

    Зверніть увагу: замініть <COOKIE_KEY> та <NEW_PASSWORD> на cookie-key із минулого кроку та бажаний пароль.

  3. Перейдіть у phpMyAdmin та відкрийте таблицю ps_employee. Знайдіть рядок вашого користувача й натисніть Змінити;

  4. Замініть значення поля passwd на bcrypt-хеш із кроку 2;

  5. Збережіть зміни й увійдіть до адміністративної панелі з новим паролем.

Підказка: можна одразу виконати такий SQL-запит:

UPDATE ps_employee
SET    passwd = '$2y$10$…<bcrypt_hash>…'
WHERE  email  = 'admin@example.com';

Замініть '$2y$10$…<bcrypt_hash>…' на фактичний хеш, а admin@example.com — на e-mail вашого облікового запису.

Відновлення через CLI або аварійний скрипт

PrestaShop ≥ 1.7.xSymfony Console

  1. Підключіться до сервера по SSH.

  2. У каталозі магазину виконайте консольну команду, яка створить нового адміністратора:

    php bin/console app:add-admin \
      --email=admin@example.com \
      --firstname=Admin \
      --lastname=User \
      --password='StrongP@ssw0rd' \
      --profile=1
    

Що робить команда:

  • створює користувача з e-mail admin@example.com;
  • задає ім’я/прізвище (можна змінити);
  • встановлює пароль StrongP@ssw0rd (замініть на власний);
  • призначає профіль 1 («SuperAdmin»).
  1. Авторизуйтесь у адміністративній панелі під новим обліковим записом.

PrestaShop ≤ 1.6.xаварійний скрипт (Emergency Admin)

  1. Завантажте файл emergency_admin.php із офіційної теми спільноти.

  2. Завантажте цей файл у корінь вашого сайту через FTP/SSH.

  3. Відкрийте у браузері https://YOUR.DOMAIN/emergency_admin.php і заповніть форму (e-mail, пароль для нового адміна).

  4. Після повідомлення «Admin account created» негайно видаліть emergency_admin.php із сервера:

    rm /path/to/prestashop/emergency_admin.php
    

Файл залишається відкритою вразливістю, доки не буде видалений. Перевірте, що він відсутній у корені сайту після успішного входу.

Рекомендації безпеки

  • Після входу негайно змініть пароль на довгий, унікальний та ввімкніть 2FA (якщо модуль доступний).
  • Переконайтеся, що пошта сайту відправляє листи без помилок — це прискорить відновлення в майбутньому.
  • Обмежте доступ до каталогу /admin* за IP або через basic-auth.
  • Регулярно робіть резервні копії бази даних і перевіряйте логи на підозрілу активність.
Поширені помилки
Проблема Рішення
Лист не надходить на email Перевірте SMTP, спам-фільтр, скористайтеся phpMyAdmin
Хеш не працює (Joomla/OC) Використовуйте правильний алгоритм (salt + md5/sha1)
Не видно таблиць у базі Переконайтеся, що вибрано правильну базу
Забуто email і логін Знайдіть через SELECT * FROM users у БД

Офіційна документація