Сьогодні ми розглянемо вразливість RCE у Tomcat. Видалене виконання коду використовується для виявлення форми вразливості, яку можна використовувати, коли введення користувача вводиться у файл або рядок, а весь пакет запускається в синтаксичному аналізаторі мови програмування. Атака з віддаленим виконанням коду може призвести до повномасштабної атаки, яка може загрожувати всі веб-додаток і веб-сервер. RCE також може призвести до підвищення привілеїв, повороту мережі та встановлення сталості. Саме тому RCE завжди має КРИТИЧНУ серйозність. Також слід зазначити, що всі мови програмування мають різні функції оцінки коду. Оцінка коду також може відбуватися, якщо ви дозволяєте вхідним даним користувача отримувати доступ до функцій, які оцінюють код тією ж мовою програмування. Цей тип заходи може бути реалізований навмисно, щоб отримати доступ до математичних функцій мови програмування, або випадково, тому що кероване користувачем введення спроектоване розробником так, щоб він знаходився всередині будь-якої з цих функцій.
Tomcat – це контейнер сервлетів із відкритим вихідним кодом. Він написаний мовою Java та реалізує такі специфікації, як JavaServer Pages (JSP) та JavaServer Faces (JSF). Це один із найпопулярніших веб-серверів, особливо часто він використовується в корпоративному середовищі. Його ставлять як самостійне рішення або як контейнер сервлетів у різних серверах додатків. LXD — це системний контейнер нового покоління та менеджер віртуальних машин. Він пропонує єдину взаємодію з повноцінними системами Linux, які працюють усередині контейнерів або віртуальних машин. LXD базується на образах і дає зображення для великої кількості дистрибутивів Linux. Він забезпечує гнучкість та масштабованість для різних випадків використання, з підтримкою різних систем зберігання даних та типів мереж, а також можливістю інсталяції на будь-якому апаратному забезпеченні від окремого ноутбука або хмарного екземпляра до повної серверної стійки.
1. Насамперед скануємо відкриті порти. Я це роблю за допомогою наступного скрипта, який приймає один аргумент — адресу хоста, що сканується: Скрипт та результат сканування відображені на Скріншоті 1 та Скріншоті 2.
2. Судячи з результатів сканування вибір невеликий, почнемо з 80 порту, де нас зустрічає наступний сайт (Скріншот 3)
Оглядаючи та аналізуючи сайт, відзначаємо для себе цікавий спосіб показу новин (з натяком на LFI). (Скріншот 4)
3. А також додаємо ще один запис /etc/hosts.
4. Давайте перевіримо наявність LFI, та для цього використовуемо LFISuite (посилання на програму https://github.com/D35m0nd142/LFISuite).
5. Програми на вашому телефоні можуть також використовувати з’єднання Bluetooth для збирання даних та відстеження вашого розташування. Bluetooth показує ваше розташування та завдяки шифрування Bluetooth можна легко вас зламати. Bluetooth може використовуватися для відстеження вашого розташування. Для цього знадобляться лише дві речі: пристрій, який постійно використовує Bluetooth та унікальний ідентифікатор пристрою. І ми знаходимо LFI. Оскільки більше ми не отримуємо, перейдемо на порт 8080. Там нас зустрічає сторінка, з якої ми дізнаємося, що використовується Tomcat.
6. Звертаємо увагу на цікавий файл. Переходячи за іншим посиланням, зустрічається віконце HTTP аутентифікації. Давайте прочитаємо цей файл /usr/share/tomcat9/etc/tomcat-users.xml.
7. І є облікові дані, з якими ми можемо авторизуватись. Звідси ми можемо отримати RCE модуля tomcat_mgr_deploy.
8. Та отримуємо помилку шляху файлу.
1. Трохи побродивши, натикаємось на довідку, в якій вказано директорію text.
2. І ми отримуємо сесію meterpreter. Щоб швиденько провести розвідку, закинемо на хост скрипт LinPEAS і виконаємо.
1. Завантажуємо його та пробуємо відкрити. Але в нас запитують пароль.
2. І знаходимо можливий пароль. У самому архіві нічого цікавого немає, але це пароль від користувача, створеного в системі.
1. Підключимося SSH за допомогою приватного ключа .
2. Нам повідомляють, що попередньо його потрібно було ініціалізувати, але це можна зробити і пізніше.
3. Давайте створимо контейнер, вказавши образ та ім’я.