під пресом

під пресом

індексування сайту

Якщо в файлах, що зберігаються в папці uploads, є відомості конфіденційного характеру, додаємо до цього списку рядок: Disallow: / wp-content / uploads /. З іншого боку, в файлі robots.txt не рекомендується розміщувати посилання на директорії, які були створені спеціально для зберігання чутливої ​​інформації. Інакше цим самим ти полегшиш зловмисникові завдання, так як це перше місце, куди зазвичай все заглядають в пошуках «цікавенького».

Визначення версії WordPress

Ще один важливий крок - ідентифікація версії CMS. Інакше як підібрати підходящий сплоіт? Існує три швидких способу для визначення використовуваної на сайті версії WordPress:

під пресом

Мал. 1. Версія WordPress в файлі readme.html


Мал. 2. підглядати версію WordPress в файлі ru_RU.po

Один з варіантів захисту в даному випадку - обмежити доступ до файлів readme.html і ru_RU.po за допомогою .htaccess.

Автоматизація процесу тестування

Дослідженням безпеки WordPress зайнялися не вчора, тому існує достатня кількість інструментів, що дозволяють автоматизувати рутинні завдання.

- підбір пароля за словниками

- модуль для визначення версії: auxiliary / scanner / http / wordpress_scanner;
- модуль для визначення імені користувача auxiliary / scanner / http / wordpress_login_enum.

- перерахування встановлених плагінів: wpscan -url www.exmple.com -enumerate p;
- перерахування встановлених тем: wpscan -url www.exmple.com -enumerate t;
- перерахування встановленого timthumbs: wpscan -url www.example.com -enumerate tt;
- Вкажіть користувача: wpscan -url www.example.com -enumerate u;
- підбір пароля за словником для користувача admin: wpscan -url www.example.com -wordlist wordlist.txt -username admin;
- підбір пароля з використанням зв'язки ім'я користувача / пароль з числом потоків, рівним 50: wpscan -url www.example.com -wordlist wordlist.txt -threads 50.

Визначення встановлених компонентів

Далі, HTTP-заголовки, такі як X-Powered-By, можуть вказувати на наявність плагіна (наприклад, на плагін W3 Total Cache).
Так як інформація про плагіни не завжди відображається у вихідному коді HTML-сторінки, то виявити встановлені компоненти можна за допомогою утиліти WPScan (див. Врізку). Тільки не забувай, що перебір шляхів плагінів зафіксується в логах веб-сервера.
Отримавши дані про встановлені компонентах, вже можна приступати до пошуку вразливостей своїми силами або знайти загальнодоступні експлойти на ресурсах типу rapid7 або exploit-db.

Визначення імені користувачів

Брутфорс wp-login

під пресом

Мал. 3. Помилки при аутентифікації користувача

Security-плагіни для WordPress

заливаємо Shell

підключаємо .htaccess

Для заборони доступу до чутливої ​​інформації краще скористатися файлом .htaccess - це файл конфігурації, який використовується в Apache Web Server. Розглянемо можливості цього файлу з точки зору безпеки. З його допомогою можна: заборонити доступ до тек і файлів, заблокувати різні SQL-ін'єкції і шкідливі скрипти. Для цього стандартний файл .htaccess для CMS WordPress 4.1 потрібно трохи розширити. Щоб закрити список файлів і папок, додаємо:

Протидіяти скриптів, які намагаються встановити глобальні змінні або змінити змінну _REQUEST через URL:

Для протидії SQL-ін'єкцій блокуємо запити до URL, що містять певні ключові слова:

Щоб зіпсувати життя поширеним хакерських утиліт, відфільтровує певні user-agent'и:

захищаємо файли

Непогано було б також обмежити і доступ до особливо важливих файлів, які зберігають конфігурацію або просто можуть видати зловмисникові якусь інформацію. Можна виділити наступних кандидатів:

- wp-config.php, містить ім'я БД, ім'я користувача, пароль і префікс таблиць;
- .htaccess;
- readme.html і ru_RU.po, які містять версію WordPress;
- install.php.

Робиться це в такий спосіб:

Причому файл .htaccess, що містить ці рядки, повинен знаходитися в тій же директорії, що і захищається файл. Потім забороняємо перерахування користувачів (пам'ятаєш, трохи вище ми говорили про те, як легко отримати список користувачів?):

Набір правил 5G Blacklist і 6G Blacklist beta від Perishable Press, який дозволяє боротися з поширеними шкідливими URL-запитами для WordPress.

додаткові заходи

До того, що було сказано вище, можна додати такі рекомендації. По-перше, використовувати тільки актуальні версії WordPress і його компонентів - це дозволить усунути відомі уразливості. По-друге, видалити невикористовувані плагіни і теми, які також можуть бути проексплуатувати. По-третє, завантажувати теми і плагіни WordPress з достовірних джерел, наприклад з сайтів розробників і офіційного сайту WordPress. Як і домашній ПК, потрібно періодично перевіряти свій веб-ресурс веб-антивірусом, наприклад AI-Bolit. Якщо у тебе є доступ до веб-сервера, настрій права доступу до файлів і каталогів. Як правило, WordPress встановлює всі необхідні права на стадії установки, але в разі потреби chmod можна виставити вручну. Для каталогів - chmod 755, для файлів - chmod 644. Переконайся, що права 777 привласнені тільки тим об'єктам, які цього потребують (іноді це необхідно для нормальної роботи деяких плагінів). Якщо WordPress перестав нормально функціонувати, поекспериментуй з правами доступу: спочатку спробуй 755, потім 766 і, нарешті, 777. Для всіх htaccess-файлів вистав chmod 444 (тільки читання). Якщо сайт перестане працювати, спробуй поекспериментувати зі значеннями 400, 440, 444, 600, 640, 644.

Перемісти файл wp-config.php. Даний файл містить інформацію про налаштування MySQL, префікс таблиць, секретні ключі та інше. Тому його необхідно перенести для того, щоб файл не був доступний з інтернету. Якщо сайт не розташовується в папці public_html, то перенеси файл wp-config.php в папку рівнем вище, і WordPress автоматично знайде його в цій кореневої директорії (може бути застосовано, якщо на хостингу є тільки один сайт на цій CMS).

Щоб ускладнити заливку шелла, відключи можливість редагування теми через консоль WordPress. Для цього встав наступний рядок в файл wp-config.php: define ( 'DISALLOW_FILE_EDIT', true) ;.

Ще одне слабке місце - файл install.php (що в папці wp-admin). Тому його краще видалити, заблокувати або змінити. Виконай один з варіантів:

  1. Просто видали цей файл - після установки в ньому немає більше необхідності.
  2. Заборони доступ до файлу за допомогою .htaccess.
  3. Перейменують оригінальний файл install.php (наприклад, install.php.old) і створи новий файл install.php наступного змісту:

Крім повідомлення відвідувачів сайту, даний скрипт виконує наступні дії:

- відправляє клієнту і пошуковим системам код стану 503 ( «Сервіс тимчасово недоступний»);
- вказує проміжок часу, через який клієнти і пошукові системи можуть повернутися на сайт (настроюється параметр);
- повідомляє електронною поштою про проблему з БД для вжиття відповідних заходів.

Справа в тому, що в ранніх версіях WordPress (<= 2.7.1) при сбоях MySQL (например, при DDoS-атаке) CMS дает возможность переустановиться. Кроме того, это может произойти и при сбое/повреждении одной из таблиц WordPress. В частности, атака возможна, когда повреждена таблица wp_options (в WordPress 2.6.2) или wp_users (в WordPress 2.0.3 и 2.0.11). То есть в разных версиях WP разные таблицы главные при проверке в инсталляторе — это может быть либо таблица wp_options, либо wp_users.
Ну і нарешті, відключи реєстрацію нових користувачів, якщо в цьому немає необхідності (рис. 4). Якщо все ж на сайті передбачається реєстрації, подбай про те, щоб нові користувачі після проходження реєстрації отримували мінімальні привілеї.


Мал. 4. Відключення реєстрації нових користувачів

Корисні посилання

висновок

WordPress - досить великий і складний продукт, зі своїми плюсами і мінусами. На жаль, в дефолтной конфігурації його безпеку знаходиться під великим питанням, тому що навіть звичайний скріпткідіс при наявності прямих рук і інтернетів зможе пробити захист. Тому настійно рекомендую перевірити свій ресурс таким же чином, як ми робили це в статті. І якщо виявиш недоліки - пофиксить їх, щоб звести шанси зловмисника на компрометацію ресурсу до мінімуму.

під пресом

Схожі статті