Перейти до змісту

Перевірка безпеки WordPress без входу в адмінку

Подивіться, що ваш сайт на WordPress показує будь-кому в інтернеті: версію ядра, плагіни, які вантажать сторінки, XML-RPC, відкритий журнал помилок і сторінки авторів, що видають логіни. Нічого не треба встановлювати, пароль адміністратора не потрібен.

Як ми впізнаємо сайт на WordPress

WordPress лишає в публічних сторінках помітні сліди: шляхи з wp-content/ і wp-includes/, посилання на /wp-json/, мета-тег generator, класи блоків у HTML і cookies WordPress. Коли таких ознак достатньо, до загальних перевірок, які отримує кожен сайт, додаються перевірки WordPress з цієї сторінки.

Якщо сайт добре ховає ці сліди, наприклад за окремим фронтендом, ми можемо не впізнати WordPress, і перевірки з цієї сторінки не запустяться. Загальні перевірки при цьому працюють як завжди: заголовки, сертифікат, пошта, відкриті файли й версії ПЗ, які видно ззовні.

Що дивиться перевірка безпеки WordPress

Перевірка Що запитуємо Чому це важливо
Версія ядра Тег generator на головній і /readme.html Старе ядро може мати відомі вразливості; відкритий readme часто показує версію
Плагіни Шляхи плагінів і номери ?ver= на головній; readme.txt пʼяти поширених плагінів Застарілі плагіни - поширений шлях атаки; за версією ми шукаємо відомі проблеми
XML-RPC /xmlrpc.php Часта ціль для підбору паролів; вимкніть, якщо не користуєтеся
Журнал помилок /wp-content/debug.log Якщо файл завантажується, будь-хто бачить шляхи до файлів і подробиці помилок
Сторінки авторів /?author=1 Можуть видати логін, а з ним підбирати пароль легше

Пʼять файлів readme, які ми пробуємо, належать плагінам Slider Revolution, Elementor, WooCommerce, Contact Form 7 і Wordfence. Відкритий wp-login.php - це нормально, його ми не позначаємо.

Версії та відомі проблеми

Для ядра WordPress показуємо, чи визначена версія ще актуальна. Для ядра і кількох популярних плагінів (WooCommerce, Elementor, Yoast SEO, Contact Form 7, WP Super Cache і Jetpack) додатково шукаємо публічні повідомлення про вразливості за версією. Інші плагіни звіт просто перелічує, з версією, якщо її видно.

Версія з номера ?ver= чи файлу readme - це підказка, а не точне знання. Тому збіг звіт називає «потенційним», а не «вразливістю».

І всі перевірки, які отримує кожен сайт

Сайт на WordPress проходить і повну зовнішню перевірку: заголовки безпеки, сертифікат TLS, поштові записи, застаріле ПЗ на кшталт PHP, а також пошук файлів, яким не місце в інтернеті: резервних копій, файлів .env, теки .git чи інструментів для бази даних на зразок phpMyAdmin і Adminer.

Що робити з результатами

  • Відкритий debug.log: видаліть його, закрийте до нього доступ і вимкніть WP_DEBUG на робочому сайті. Документація WordPress не радить користуватися інструментами налагодження на живих сайтах.
  • Старе ядро, плагіни чи теми: оновіть їх, а плагіни, якими не користуєтеся, видаліть.
  • xmlrpc.php: якщо він не потрібен жодному застосунку чи сервісу, вимкніть його. Якщо потрібен, обмежте частоту запитів на сервері чи в CDN, разом із wp-login.php.
  • Сторінки авторів видають логін: переконайтеся, що жоден акаунт не має очевидного імені на кшталт admin, і використовуйте надійні унікальні паролі.
  • Версія в тегу generator чи в readme.html: прибрати її - охайно, але це не захист. Документація WordPress називає безпеку через приховування загалом ненадійною основною стратегією.

Чого ця перевірка не робить

  • Не входить у ваш акаунт, нічого не встановлює і не читає адмінку. Плагіни, що не лишають слідів на головній, неактивні плагіни й версії тем лишаються невидимими.
  • Не підбирає паролів, не викликає методів XML-RPC і не запускає експлойтів. Лише запитує адреси, перелічені вище.
  • Не має власної бази вразливостей WordPress. Повідомлення беремо з публічних джерел, і вони охоплюють ядро та короткий перелік плагінів.
  • Збіг за версією - привід перевірити, а не підтверджена вразливість; прихована версія не доводить, що сайт оновлений.
  • Не шукає шкідливого коду і не перевіряє чорних списків.

Запитання

Чи треба встановлювати плагін або давати доступ до адмінки?

Ні. Перевірка працює ззовні, як браузер відвідувача, і потребує лише адреси сайту.

Відкритий wp-login.php - це проблема?

Ні, він є на кожному сайті WordPress. Важливо, як він захищений: надійні паролі, жодних очевидних імен акаунтів і обмеження частоти запитів до wp-login.php та xmlrpc.php.

Ми приховали версію WordPress. Тепер ми в безпеці?

Прихована версія трохи ускладнює сканування, але нічого не змінює в коді, який працює. Відомі проблеми закривають оновлення ядра, плагінів і тем.

Чим це відрізняється від плагіна безпеки всередині WordPress?

Плагін в адмінці бачить усі встановлені плагіни й файли. Ми бачимо лише те, що показує публічний сайт, а це саме те, що першим бачить і зловмисник. Ці два погляди доповнюють один одного.

Джерела

  1. WordPress: посилення захисту (англійською) developer.wordpress.org
  2. WordPress: атаки підбором паролів (англійською) developer.wordpress.org
  3. WordPress: налагодження (англійською) developer.wordpress.org

Перевірте свій сайт на WordPress

Введіть адресу сайту. Якщо ми впізнаємо WordPress, звіт покаже знахідки WordPress поруч із загальними результатами. Безкоштовно, без реєстрації, лише читання.

Перевіряйте лише свої сайти або ті, на які маєте дозвіл. Як працює наш сканер