4. Hack The Box. Проходження Tabby. RCE у Tomcat, і підвищуємо привілеї через LXD (level easy)

15 травня 2023 1 хвилина Автор: Lady Liberty

Знайомство з RCE

Сьогодні ми розглянемо вразливість RCE у Tomcat. Видалене виконання коду використовується для виявлення форми вразливості, яку можна використовувати, коли введення користувача вводиться у файл або рядок, а весь пакет запускається в синтаксичному аналізаторі мови програмування. Атака з віддаленим виконанням коду може призвести до повномасштабної атаки, яка може загрожувати всі веб-додаток і веб-сервер. RCE також може призвести до підвищення привілеїв, повороту мережі та встановлення сталості. Саме тому RCE завжди має КРИТИЧНУ серйозність. Також слід зазначити, що всі мови програмування мають різні функції оцінки коду. Оцінка коду також може відбуватися, якщо ви дозволяєте вхідним даним користувача отримувати доступ до функцій, які оцінюють код тією ж мовою програмування. Цей тип заходи може бути реалізований навмисно, щоб отримати доступ до математичних функцій мови програмування, або випадково, тому що кероване користувачем введення спроектоване розробником так, щоб він знаходився всередині будь-якої з цих функцій.

Tomcat – це контейнер сервлетів із відкритим вихідним кодом. Він написаний мовою Java та реалізує такі специфікації, як JavaServer Pages (JSP) та JavaServer Faces (JSF). Це один із найпопулярніших веб-серверів, особливо часто він використовується в корпоративному середовищі. Його ставлять як самостійне рішення або як контейнер сервлетів у різних серверах додатків. LXD — це системний контейнер нового покоління та менеджер віртуальних машин. Він пропонує єдину взаємодію з повноцінними системами Linux, які працюють усередині контейнерів або віртуальних машин. LXD базується на образах і дає зображення для великої кількості дистрибутивів Linux. Він забезпечує гнучкість та масштабованість для різних випадків використання, з підтримкою різних систем зберігання даних та типів мереж, а також можливістю інсталяції на будь-якому апаратному забезпеченні від окремого ноутбука або хмарного екземпляра до повної серверної стійки.

Recon

1. Насамперед скануємо відкриті порти. Я це роблю за допомогою наступного скрипта, який приймає один аргумент — адресу хоста, що сканується: Скрипт та результат сканування відображені на Скріншоті 1 та Скріншоті 2.


Скріншот 1. Приклак команди.

Скріншот 2. Приклад результату сканування.

 

2. Судячи з результатів сканування вибір невеликий, почнемо з 80 порту, де нас зустрічає наступний сайт (Скріншот 3)


Скріншот 3. Сайт розташований на 80 порті.

 

Оглядаючи та аналізуючи сайт, відзначаємо для себе цікавий спосіб показу новин (з натяком на LFI). (Скріншот 4)


Скріншот 4. Нетиповий показ новин.

 

3. А також додаємо ще один запис /etc/hosts.


Скріншот 5. Текст запису.

 

4. Давайте перевіримо наявність LFI, та для цього використовуемо LFISuite (посилання на програму https://github.com/D35m0nd142/LFISuite).


Скріншот 6. Перевірка LFI.

5. Програми на вашому телефоні можуть також використовувати з’єднання Bluetooth для збирання даних та відстеження вашого розташування. Bluetooth показує ваше розташування та завдяки шифрування Bluetooth можна легко вас зламати. Bluetooth може використовуватися для відстеження вашого розташування. Для цього знадобляться лише дві речі: пристрій, який постійно використовує Bluetooth та унікальний ідентифікатор пристрою. І ми знаходимо LFI. Оскільки більше ми не отримуємо, перейдемо на порт 8080. Там нас зустрічає сторінка, з якої ми дізнаємося, що використовується Tomcat.


Скріншот 7. Результат LFI.

 

6. Звертаємо увагу на цікавий файл. Переходячи за іншим посиланням, зустрічається віконце HTTP аутентифікації. Давайте прочитаємо цей файл /usr/share/tomcat9/etc/tomcat-users.xml.


Скріншот 8. Вміст цікавого файлу.

7. І є облікові дані, з якими ми можемо авторизуватись. Звідси ми можемо отримати RCE модуля tomcat_mgr_deploy.


Скріншот 9. RCE модуля tomcat_mgr_deploy.

8. Та отримуємо помилку шляху файлу.


Скріншот 10. RCE модуля tomcat_mgr_deploy.

Entry Point

1. Трохи побродивши, натикаємось на довідку, в якій вказано директорію text.


Скріншот 1. Помилка.

 


Скріншот 2. Директорія.

Скріншот 3. Налаштуванняексплоіта.

2. І ми отримуємо сесію meterpreter. Щоб швиденько провести розвідку, закинемо на хост скрипт LinPEAS і виконаємо.


Скріншот 4.Отримання сесії meterpreter.

Скріншот 5. Аналіз висновку.

USER

1. Завантажуємо його та пробуємо відкрити. Але в нас запитують пароль.

2. І знаходимо можливий пароль. У самому архіві нічого цікавого немає, але це пароль від користувача, створеного в системі.


Скріншот 1. Завантаження.

 

Скріншот 2.Спроба перебору пароля.

Скріншот 3. Паоль від користувача.

Скріншот 4. Створення SSH ключу.

ROOT

1. Підключимося SSH за допомогою приватного ключа .


Скріншот 1. Бачимо, що користувач складається в групі lxd

 


Скріншот 2. Спроба виконати команди, від імені root.

2. Нам повідомляють, що попередньо його потрібно було ініціалізувати, але це можна зробити і пізніше.


Скріншот 3. Перевірка на наявність, що образ завантажений.

Скріншот 4. Ініціалізація.

3. Давайте створимо контейнер, вказавши образ та ім’я.


Скріншот 5. Запуск і встановлення конфігурації.

Скрішот 6. Отримання root прав.
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.