Критична вразливість у плагіні wpDiscuz

19 червня команда Threat Intelligence виявила вразливість у плагіні wpDiscuz . Це плагін WordPress, що встановлено на понад 80 000 сайтів. Цей недолік дав можливість неавторизованим зловмисникам завантажувати довільні файли, включаючи файли PHP, та отримати доступ до ураженого сайту.

19 липня 2020 року було випущено швидке виправлення, а 23 липня 2020 року – повне оновлення.

Це вважається критичною проблемою безпеки, яка може призвести до віддаленого виконання коду на сервері вразливого сайту. Якщо ви користуєтесь будь-якою версією від 7.0.0 до 7.0.4 цього плагіна, ми рекомендуємо негайно оновити до версії 7.0.5 чи вище.

wpDiscuz – плагін, призначений для додавання розширеного функціоналу коментарів на сайти WordPress. Це дозволяє користувачам обговорювати різні теми та легко додавати коментарі за допомогою візуального текстового редактора. Під час останнього апдейту плагіна версії 7.xx розробники додали можливість завантажувати зображення у коментарі. На жаль, для реалізації цієї функції не було використано достатню кількість засобів захисту, що створювало критичну вразливість.

Через використання функції визначення типу файлу mime, перевірку типу файлів можна було легко обійти, що дозволяє неавторизованим користувачам можливість завантажувати будь-який тип файлів, включаючи файли PHP.

Отримання типу mime

Функція ‘ getMimeType‘ використовувала три різні методи для визначення типу mime файлу. Перша використана перевірка mime_content_type, яка визначає тип файлу на основі вмісту файлу. Якщо ця функція PHP була недоступною, то буде використовуватись finfo_file, що також визначає тип mime файлу на основі вмісту файлу. Нарешті, якщо ця функція була недоступна, то використовується wp_check_filetype, що є специфічною функцією для WordPress, яка визначає тип mime файлу на основі імені файлу та перевіряє на співпадіння з списком дозволених типів файлів.

Більшість файлів починаються з декількох так званих “магічних байтів”, які можна використовувати для визначення їх типу Mime. На жаль, через те, як PHP обробляє файли, можна легко підробляти їх, що ті виглядати як дозволені файли зображень, просто додаючи магічні байти, характерні для зображення. Наприклад, користувач може вставити магічні байти для .png-файлу 89 50 4E 47 0D 0A 1A 0A, на початку файлу PHP і обдурити перші дві функції.

Можливості експлуатації

Це дало можливість зловмисникам створити будь-який тип файлу та додати функції ідентифікації зображень до файлів, щоб пройти перевірку вмісту файлу. Файл PHP, який намагається обійти цю перевірку, може виглядати приблизно так у запиті:

------WebKitFormBoundaryXPeRFAXCS9qPc2sB
Content-Disposition: form-data; name="wmu_files[0]"; filename="myphpfile.php"
Content-Type: application/php

‰PNG

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

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

Спосіб залишатися захищеним.

Ось досить дієвий спосіб не тільки для цієї, а й для інших подібних вразливостей, через які можна завантажити файли у вашу папку із зображеннями – створіть в папці /catalog/images/ файл .htaccess з наступним вмістом:

<Files *.php>
deny from all
</Files>

<IfModule mod_php5.c>
php_flag engine 0
</IfModule>

<IfModule mod_php7.c>
php_flag engine 0
</IfModule>

AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI

Якщо цей файл додано – зловмисники не зможуть виконувати файли PHP, завантажені в каталог uploads, що забезпечить додатковий рівень безпеки та допоможе у запобіганні атакам на кшталт цієї.

Висновок

У сьогоднішньому дописі ми детально розповіли про вразливість у wpDiscuz, яка надавала неавторизованим користувачам можливість завантажувати довільні файли, включаючи файли PHP, та виконувати ці файли на сервері. Ця проблема була повністю виправлена ​​у версії 7.0.5. Ми рекомендуємо користувачам негайно оновити до останньої доступної версії.

Нагадуємо також про НЕЙМОВІРНУ акційну пропозицію на послуги хостингу, яка скоро завершиться. Ви отримаєте 50% знижку при замовленні послуг на перший платіж, незалежно від обраного періоду, безкоштовний SSL-сертифікат та інші переваги. Детально за цим посиланням

Акція на хостинг, -50%