Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Ламаємо і захищаємо Wordpress своїми руками

  1. Зміст статті WordPress - це зручна блог-платформа для публікації статей та управління ними, на якій...
  2. Security-плагіни для WordPress
  3. WWW
  4. Корисні посилання

Зміст статті

Наша взаимовыгодная связь https://banwar.org/

WordPress - це зручна блог-платформа для публікації статей та управління ними, на якій базується величезна кількість різних сайтів. Через свою поширеності ця CMS вже давно є ласим шматком для зловмисників. На жаль, базові настройки не забезпечують достатнього рівня захисту, залишаючи багато дефолтні дірки незакритими. У цій статті ми пройдемо типовим шляхом «типового» злому сайту на WordPress, а також покажемо як усунути виявлені вразливості.

На сьогоднішній день WordPress серед систем управління контентом найпопулярніші. Його частка становить 60,4% від загального числа сайтів, які використовують CMS-движки. З них, згідно зі статистикою, 67,3% сайтів базується на останній версії даного програмного забезпечення. Тим часом за дванадцять років існування веб-движка в ньому було виявлено 242 уразливості різного роду (без урахування вразливостей, знайдених в сторонніх плагінах і темах). А статистика сторонніх додатків виглядає ще сумніше. Так, компанія Revisium провела аналіз 2350 русифікованих шаблонів для WordPress, взятих з різних джерел. В результаті вони з'ясували, що більше половини (54%) виявилися зараженими веб-Шелл, бекдор, blackhat seo ( «спам») посиланнями, а також містили скрипти з критичними уразливими. Тому влаштовуйся зручніше, зараз ми будемо розбиратися, як провести аудит сайту на WordPress і усунути знайдені недоліки. Використовувати будемо версію 4.1 (русифіковану).

Першим етапом будь-якого тесту зазвичай буває збір інформації про мету. І тут дуже часто допомагає неправильне налаштування індексування сайту, яка дозволяє неавторизованих користувачам переглядати вміст окремих розділів сайту і, наприклад, отримати інформацію про встановлені плагинах і темах, а також доступ до конфіденційних даних або резервних копій баз даних. Щоб перевірити, які директорії видно зовні, найпростіше скористатися Гуглом. Досить виконати запит Google Dorks типу site: example.com intitle: "index of" inurl: / wp-content /. В операторі inurl: можна вказати наступні директорії:

/ Wp-content / / wp-content / languages ​​/ plugins / wp-content / languages ​​/ themes / wp-content / plugins / / wp-content / themes / / wp-content / uploads /

Якщо зможеш переглянути / wp-content / plugins /, наступний крок по збору інформації про встановлені плагинах і їх версіях значно спрощується. Природно, заборонити індексування можна за допомогою файлу robots.txt. Так як за замовчуванням він не включений в інсталяційний пакет WordPress, його необхідно створити самому і закинути в кореневу директорію сайту. Мінлива по створенню і роботі з файлом robots.txt досить багато, тому залишу цю тему для самопідготовки. Наведу лише один з можливих варіантів:

User-Agent: * Disallow: / cgi-bin Disallow: /wp-login.php Disallow: / wp-admin / Disallow: / wp-includes / Disallow: / wp-content / Disallow: / wp-content / plugins / Disallow : / wp-content / themes / Disallow: /? author = * Allow: /

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

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

  1. Знайти в вихідному коді сторінки. Вона вказана в метатеге generator:

    або ж в тегах <link>:

  2. Знайти в файлі readme.html (рис. 1), який входить до складу інсталяційного пакета і знаходиться в корені сайту. Файл може мати й інші назви типу readme-ja.html.
  3. Знайти в файлі ru_RU.po (рис. 2), який входить до складу інсталяційного пакета і розташований за адресою / wp-content / languages ​​/: "Project-Id-Version: WordPress 4.1.1 \ n"

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

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

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

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

Nmap:

  • визначення версії і теми за допомогою скрипта http-wordpress-info nmap -sV --script http-wordpress-info
  • підбір пароля за словниками nmap -p80 --script http-wordpress-brute --script-args 'userdb = users.txt, passdb = passwords.txt' example.com

Metasploit:

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

WPScan:

  • перерахування встановлених плагінів: 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.

Тепер давай зберемо інформацію про встановлені плагинах і темах незалежно від того, активовані вони чи ні. Перш за все таку інформацію можна вивудити з вихідного коду HTML-сторінки, наприклад по JavaScript-посиланнях, з коментарів і ресурсів типу CSS, які завантажуються на сторінку. Це найпростіший спосіб отримання інформації про встановлені компонентах. Наприклад, рядки нижче вказують на використовувану тему twentyeleven:

<Script src = "http://example.com/wp-content/themes/twentyeleven/js/html5.js" type = "text / javascript"> </ script>

Далі, HTTP-заголовки, такі як X-Powered-By, можуть вказувати на наявність плагіна (наприклад, на плагін W3 Total Cache).

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

За замовчуванням в WordPress кожному користувачеві привласнюється унікальний ідентифікатор, представлений у вигляді числа: example.com/?author=1. Перебираючи числа, ти і визначиш імена користувачів сайту. Обліковий запис адміністратора admin, яка створюється в процесі установки WordPress, йде під номером 1, тому в якості захисного заходу рекомендується її видалити.

Обліковий запис адміністратора admin, яка створюється в процесі установки WordPress, йде під номером 1, тому в якості захисного заходу рекомендується її видалити

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

Знаючи ім'я користувача, можна спробувати підібрати пароль до панелі адміністрування. Форма авторизації WordPress на сторінці wp-login.php дуже інформативна (рис. 3), особливо для зловмисника: при введенні неправильних даних з'являються підказки про невірне ім'я користувача або пароль для конкретного користувача. Розробникам відомо про цю особливість, але її вирішили залишити, так як подібні повідомлення зручні для користувачів, які могли забути свій логін і / або пароль. Проблему підбору пароля можна вирішити, використовуючи стійкий пароль, що складається з дванадцяти і більше символів і включає букви верхнього і нижнього регістра, числа і спецсимволи. Або ж, наприклад, за допомогою плагіна Login LockDown.

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

  • Login LockDown - обмежує кількість невдалих спроб авторизації;
  • Revisium WordPress Theme Checker - шукає типові шкідливі фрагменти в темах WordPress;
  • Sucuri Security - проводить моніторинг і виявлення шкідливого коду;
  • iThemes Security (колишній Better WP Security) - багатофункціональний плагін для захисту WordPress;
  • BackUpWordPress - робить резервне копіювання файлів і БД;
  • Google Captcha (reCAPTCHA) - встановлює капчу при реєстрації, авторизації, відновлення паролів і в формі коментарів.

Після того як ми сбрутіть пароль, ніщо не заважає залити шелл на скомпрометований веб-ресурс. Для цих цілей цілком згодиться фреймворк Weevely , Який дозволяє генерувати шелл в обфусцірованном вигляді, що робить його виявлення досить складним. Щоб не викликати підозри, отриманий код можна вставити в будь-який файл теми (наприклад, в index.php) через редактор теми консолі WordPress. Після чого за допомогою того ж Weevely можна підключитися до машини жертви і викликати різні команди:

python weevely.py http: //test/index.php Pa $$ w0rd [+] weevely 3.1.0 [+] Target: test [+] Session: _weevely / sessions / test / index_0.session [+] Browse the filesystem or execute commands starts the connection [+] to the target. Type: help for more information. weevely & gt; : help

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

Options + FollowSymLinks -Indexes

RewriteCond% {QUERY_STRING} base64_encode [^ (] * \ ([^)] * \) [OR] заблокує посилання, що містять кодування Base64. Позбутися від посилань, що містять тег <script>:

RewriteCond% {QUERY_STRING} (& lt; |% 3C) ([^ s] * s) + cript. * (& Gt; |% 3E) [NC, OR]

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

RewriteCond% {QUERY_STRING} GLOBALS (= | \ [| \% [0-9A-Z] {0,2}) [OR] RewriteCond% {QUERY_STRING} _REQUEST (= | \ [| \% [0-9A-Z ] {0,2})

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

RewriteCond% {query_string} concat. * \ ([NC, OR] RewriteCond% {query_string} union. * Select. * \ ([NC, OR] RewriteCond% {query_string} union. * All. * Select [NC] RewriteRule ^ (. *) $ index.php [F, L]

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

SetEnvIf user-agent «Indy Library» stayout = 1 SetEnvIf user-agent «libwww-perl» stayout = 1 SetEnvIf user-agent «Wget» stayout = 1 deny from env = stayout

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

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

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

Order Allow, Deny Deny from all

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

RewriteCond% {QUERY_STRING} author = \ d RewriteRule ^ /? [L, R = 301]

Так, що ще? Можна дозволити вхід лише з зазначених IP-адрес. Для цього створи файл .htaccess в папці wp-admin до наступних правил:

AuthUserFile / dev / null AuthGroupFile / dev / null AuthName "Access Control" AuthType Basic order deny, allow deny from all allow from 178.178.178.178 # IP домашнього компа allow from 248.248.248.248 # IP робочого компа

Метод не надто гнучкий і застосовується лише в разі, якщо ти працюєш з обмеженим числом фіксованих IP-адрес. В іншому випадку рекомендується встановити пароль на папку wp-admin через хостинг-панель (при наявності такого функціоналу).

WWW

набір правил 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 наступного змісту: <! -? Php header ( "HTTP / 1.1 503 Service Temporarily Unavailable"); ? -> <! -? Php header ( "Status 503 Service Temporarily Unavailable"); ? -> <! -? Php header ( "Retry-After 3600"); // 60 minutes? -> <! -? Php mail ( "[email protected]", "Database Error", "There is a problem with teh database!"); ? ->

    We are currently experiencing database issues. Please check back shortly. Thank you.

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

  • відправляє клієнту і пошуковим системам код стану 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 - досить великий і складний продукт, зі своїми плюсами і мінусами. На жаль, в дефолтной конфігурації його безпеку знаходиться під великим питанням, тому що навіть звичайний скріпткідіс при наявності прямих рук і інтернетів зможе пробити захист. Тому настійно рекомендую перевірити свій ресурс таким же чином, як ми робили це в статті. І якщо виявиш недоліки - пофиксить їх, щоб звести шанси зловмисника на компрометацію ресурсу до мінімуму.

Php Disallow: / wp-admin / Disallow: / wp-includes / Disallow: / wp-content / Disallow: / wp-content / plugins / Disallow : / wp-content / themes / Disallow: /?
Інакше як підібрати підходящий сплоіт?
Com/?
Php header ( "HTTP / 1.1 503 Service Temporarily Unavailable"); ?
Php header ( "Status 503 Service Temporarily Unavailable"); ?
Php header ( "Retry-After 3600"); // 60 minutes?
Php mail ( "[email protected]", "Database Error", "There is a problem with teh database!"); ?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: