4.4 Відновлення паролів у CMS
Втрата доступу до адміністративної панелі — одна з найпоширеніших проблем під час керування сайтом. Це може статися через забутий пароль, помилку користувача або навіть зловмисні дії. У цій статті ми розглянемо всі можливі способи відновлення пароля в популярних CMS.
Вимоги
- Доступ до послуги хостингу, віртуального сервера або виділеного сервера, де розміщено сайт;
- CMS: WordPress, Joomla, OpenCart, PrestaShop;
- Доступ до панелі phpMyAdmin або до адміністративної електронної пошти.
Зверніть увагу: для відновлення доступу за допомогою пошти у вашій CMS має бути коректно налаштовано поштову службу для надсилання листів.
WordPress
Змінити пароль для WordPress можливо трьома способами: за допомогою вбудованих механізмів відновлення доступу, phpMyAdmin та файлу активної теми functions.php.
Відновлення через відправлення email листа
Перейдіть за адресою https://<YOUR_DOMAIN>/wp-login.php?action=lostpassword
і введіть ваш email або логін. На вказану пошту прийде лист з інструкціями для відновлення пароля.
Відновлення через phpMyAdmin
- Увійдіть до phpMyAdmin, виберіть базу даних сайту і відкрийте таблицю
wp_users
;
- Натисніть «Змінити» навпроти користувача
admin
(ім’я може бути іншим);
- У полі
user_pass
виберіть функціюMD5
і введіть новий надійний пароль;
- У нижній частині сторінки натисніть кнопку “Вперед”, щоб застосувати новий пароль.
Також можна змінити пароль за допомогою SQL-запиту. У phpMyAdmin перейдіть до таблиці вашої бази даних і відкрийте вкладку “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_set_password('PASSWORD', ID);
Увійдіть в адміністративну панель сайту з новим паролем.
Зверніть увагу: замініть PASSWORD
на бажаний пароль, а ID
— на ID користувача.
Після входу обов’язково видаліть доданий код.
Joomla
Joomla — одна з найпопулярніших систем керування контентом, тому ситуація із втратою адміністративного пароля трапляється доволі часто. На щастя, відновити доступ можна кількома способами: від стандартної функції «Забули пароль?» на сторінці входу до ручного редагування запису користувача у базі даних. Нижче ми розглянемо найбільш надійні методи, починаючи з відновлення через phpMyAdmin.
Відновлення через базу даних
-
Увійдіть до phpMyAdmin;
-
Виберіть базу даних сайту і відкрийте таблицю
#__users
;
- Для користувача admin у полі
password
вставте хеш-парольd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199
— це значення встановить парольsecret
;
-
Перейдіть за адресою
YOUR.DOMAIN/administrator/
та авторизуйтеся з новим паролем; -
Після входу перейдіть у налаштування облікового запису адміністратора та змініть пароль на більш надійний:
OpenCart
OpenCart — популярна платформа електронної комерції з відкритим вихідним кодом. Втрата доступу до адміністративної панелі може призвести до простою магазину та втрати замовлень, тому вкрай важливо якнайшвидше відновити контроль над обліковим записом адміністратора. Один із найпростіших і найнадійніших способів — скористатися вбудованою функцією скидання пароля, яка надсилає одноразове посилання на зареєстровану електронну адресу. Нижче ми детально розглянемо, як це зробити.
Відновлення за допомогою email листа
Перейдіть на сторінку входу YOUR.DOMAIN/admin
, натисніть «Забули пароль?» і введіть свою електронну адресу. Перевірте поштову скриньку.
Зверніть увагу: для цього має бути правильно налаштована пошта в CMS. В іншому випадку лист відновлення не надійде.
Відновлення через базу даних
-
Увійдіть до phpMyAdmin;
-
Виберіть базу даних сайту й натисніть вкладку SQL:
- Введіть запит, замінивши
PASSWORD
на ваш новий пароль:
UPDATE `oc_user` SET `password` = md5('PASSWORD') WHERE `username` = 'admin'
Натисніть кнопку для виконання:
PrestaShop
PrestaShop — популярна CMS для електронної комерції з відкритим вихідним кодом. Втрата доступу до бек-офісу може паралізувати магазин і призвести до втрати замовлень, тому критично швидко відновити контроль над обліковим записом адміністратора. Найпростіший спосіб — скористатися вбудованою функцією скидання пароля, але у вас завжди є резервні методи через phpMyAdmin або аварійний скрипт/CLI.
Відновлення через email-лист
- Перейдіть на сторінку входу бек-офісу
https://YOUR.DOMAIN/admin123/
- Натисніть I forgot my password
- Введіть e-mail, прив’язаний до облікового запису адміністратора
- Перевірте поштову скриньку й перейдіть за одноразовим посиланням для встановлення нового пароля
Зверніть увагу: потрібно замінити YOUR.DOMAIN
, admin123
на фактичні дані вашого сайту.
Увага: функція працює лише за правильно налаштованого SMTP чи іншого поштового сервісу сайту.
Відновлення через phpMyAdmin
Для версій PrestaShop ≤ 1.6.x (старий криптоалгоритм — MD5)
-
Знайдіть
cookie-key
, для цього відкрийте файлconfig/settings.inc.php
та скопіюйте значення константи_COOKIE_KEY_
; -
Обчисліть хеш нового пароля виконавши команду:
echo -n '<COOKIE_KEY><NEW_PASSWORD>' | md5sum
Зверніть увагу: замініть <COOKIE_KEY>
та <NEW_PASSWORD>
на cookie-key
із минулого кроку та бажаний пароль.
- Перейдіть у phpMyAdmin та відкрийте таблицю
ps_employee
, оберіть запис Вашого користувача та натисніть Змінити;
- Замініть значення поля
passwd
на MD5-хеш із кроку 2; - Збережіть новий пароль та перейдіть до адміністративної сторінки Вашого сайту.
Підказка: можете одразу виконати наступний sql-запит:
UPDATE ps_employee
SET passwd = MD5('<COOKIE_KEY><NEW_PASSWORD>')
WHERE email = 'admin@example.com';
Для версій PrestaShop ≥ 1.7.x (новий криптоалгоритм — bcrypt)
-
Знайдіть
cookie-key
— відкрийте файлapp/config/parameters.php
і скопіюйте значення параметраcookie_key
; -
Згенеруйте bcrypt-хеш нового пароля, виконавши команду:
php -r "echo password_hash(<NEW_PASSWORD>, <COOKIE_KEY>);"
Зверніть увагу: замініть
<COOKIE_KEY>
та<NEW_PASSWORD>
наcookie-key
із минулого кроку та бажаний пароль. -
Перейдіть у phpMyAdmin та відкрийте таблицю
ps_employee
. Знайдіть рядок вашого користувача й натисніть Змінити; -
Замініть значення поля
passwd
на bcrypt-хеш із кроку 2; -
Збережіть зміни й увійдіть до адміністративної панелі з новим паролем.
Підказка: можна одразу виконати такий 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.x — Symfony Console
-
Підключіться до сервера по SSH.
-
У каталозі магазину виконайте консольну команду, яка створить нового адміністратора:
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»).
- Авторизуйтесь у адміністративній панелі під новим обліковим записом.
PrestaShop ≤ 1.6.x — аварійний скрипт (Emergency Admin)
-
Завантажте файл
emergency_admin.php
із офіційної теми спільноти. -
Завантажте цей файл у корінь вашого сайту через FTP/SSH.
-
Відкрийте у браузері
https://YOUR.DOMAIN/emergency_admin.php
і заповніть форму (e-mail, пароль для нового адміна). -
Після повідомлення «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 у БД |
Офіційна документація