Drupal RCE
З модулем PHP Filter
У старіших версіях Drupal (до версії 8) було можливим увійти як адміністратор і увімкнути модуль PHP filter
, який "Дозволяє оцінювати вбудований PHP код/фрагменти." Але з версії 8 цей модуль не встановлюється за замовчуванням.
Вам потрібно, щоб плагін php був встановлений (перевірте, зайшовши в /modules/php, і якщо він повертає 403, тоді існує, якщо не знайдено, тоді плагін php не встановлений)
Перейдіть до Modules -> (Перевірте) PHP Filter -> Зберегти конфігурацію
Потім натисніть на Додати контент -> Виберіть Основна сторінка або Стаття -> Напишіть php shellcode в тілі -> Виберіть PHP code в Формат тексту -> Виберіть Попередній перегляд
Нарешті, просто зайдіть на новостворений вузол:
Встановлення модуля PHP Filter
У поточних версіях більше неможливо встановлювати плагіни, маючи доступ лише до вебу після стандартної установки.
З версії 8 і далі, модуль PHP Filter не встановлюється за замовчуванням. Щоб скористатися цією функціональністю, нам потрібно встановити модуль самостійно.
Завантажте найновішу версію модуля з веб-сайту Drupal.
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
Після завантаження перейдіть до
Administration
>Reports
>Available updates
.Натисніть
Browse
, виберіть файл з каталогу, куди ми його завантажили, а потім натиснітьInstall
.Після встановлення модуля ми можемо натиснути на
Content
і створити нову базову сторінку, подібно до того, як ми робили в прикладі Drupal 7. Знову ж таки, не забудьте вибратиPHP code
з випадаючого спискуText format
.
Модуль з бекдором
У поточних версіях більше неможливо встановлювати плагіни, маючи доступ лише до вебу після стандартної установки.
Модуль з бекдором можна створити, додавши shell до існуючого модуля. Модулі можна знайти на веб-сайті drupal.org. Давайте виберемо модуль, наприклад, CAPTCHA. Прокрутіть вниз і скопіюйте посилання на tar.gz архів.
Завантажте архів і розпакуйте його вміст.
Створіть PHP web shell з вмістом:
Далі нам потрібно створити файл
.htaccess
, щоб отримати доступ до папки. Це необхідно, оскільки Drupal забороняє прямий доступ до папки/modules
.
Конфігурація вище застосовуватиме правила для папки /, коли ми запитуємо файл у /modules. Скопіюйте обидва ці файли до папки captcha та створіть архів.
Припустимо, що у нас є адміністративний доступ до веб-сайту, натисніть на
Управління
і потімРозширити
на бічній панелі. Далі натисніть на кнопку+ Встановити новий модуль
, і ми перейдемо на сторінку встановлення, наприклад,http://drupal-site.local/admin/modules/install
. Перейдіть до архіву з бекдором Captcha і натиснітьВстановити
.Після успішної установки перейдіть до
/modules/captcha/shell.php
, щоб виконати команди.
Бекдоринг Drupal з синхронізацією конфігурації
Пост поділився Coiffeur0x90
Частина 1 (активація Медіа та Медійної бібліотеки)
У меню Розширити (/admin/modules) ви можете активувати те, що, здається, є плагінами, вже встановленими. За замовчуванням плагіни Медіа та Медійна бібліотека не активовані, тож давайте їх активуємо.
Перед активацією:
Після активації:
Частина 2 (використання функції Синхронізація конфігурації)
Ми скористаємося функцією Синхронізація конфігурації, щоб вивантажити (експортувати) та завантажити (імпортувати) записи конфігурації Drupal:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Патч system.file.yml
Почнемо з патчування першого запису allow_insecure_uploads
з:
Файл: system.file.yml
До:
Файл: system.file.yml
Патч field.field.media.document.field_media_document.yml
Тоді, патч другий запис file_extensions
з:
Файл: field.field.media.document.field_media_document.yml
До:
Файл: field.field.media.document.field_media_document.yml
Я не використовую це в цьому блозі, але зазначено, що можливо визначити запис
file_directory
довільним чином і що він вразливий до атаки обходу шляху (тому ми можемо піднятися вгору в дереві файлової системи Drupal).
Частина 3 (використання функції Додати документ)
Останній крок є найпростішим і поділений на два підкроки. Перший - завантажити файл у форматі .htaccess, щоб використати директиви Apache і дозволити інтерпретацію .txt файлів PHP-движком. Другий - завантажити .txt файл, що містить наш payload.
Файл: .htaccess
Чому цей трюк класний?
Тому що, як тільки Webshell (який ми назвемо LICENSE.txt) буде завантажено на веб-сервер, ми зможемо передавати наші команди через $_COOKIE
, і в журналах веб-сервера це з'явиться як законний GET запит до текстового файлу.
Чому ми називаємо наш Webshell LICENSE.txt?
Просто тому, що якщо ми візьмемо наступний файл, наприклад core/LICENSE.txt (який вже присутній у ядрі Drupal), ми маємо файл з 339 рядків і розміром 17.6 КБ, що ідеально підходить для додавання невеликого фрагмента PHP коду посередині (оскільки файл достатньо великий).
Файл: Виправлений LICENSE.txt
Частина 3.1 (завантажити файл .htaccess)
Спочатку ми використовуємо функцію Add Document (/media/add/document) для завантаження нашого файлу, що містить директиви Apache (.htaccess).
Частина 3.2 (завантажити файл LICENSE.txt)
Потім ми знову використовуємо функцію Add Document (/media/add/document) для завантаження Webshell, прихованого в ліцензійному файлі.
Частина 4 (взаємодія з Webshell)
Остання частина полягає у взаємодії з Webshell.
Як показано на наступному скріншоті, якщо cookie, очікуваний нашим Webshell, не визначено, ми отримуємо наступний результат при зверненні до файлу через веб-браузер.
Коли атакуючий встановлює cookie, він може взаємодіяти з Webshell і виконувати будь-які команди, які хоче.
І, як ви можете бачити в журналах, виглядає так, ніби запитувався лише txt файл.
Дякуємо, що знайшли час прочитати цю статтю, сподіваюся, вона допоможе вам отримати кілька оболонок.
Last updated