Цей блог описує мій досвід вирішення машини "Cap" на Hack The Box. Вона категоризована як перша машина в треку Intro to Red Team. Виклик полягає в експлуатації вразливості IDOR та використанні можливостей Python для ескалації привілеїв. Нижче я крок за кроком розповім про те, як я отримав root доступ до цієї машини.
Крок 1: Початкове сканування та збір інформації
Я почав з виконання сканування за допомогою nmap
, щоб визначити відкриті порти та сервіси на цільовій машині. Ось команду, яку я використав:
export IP=10.10.10.245
sudo nmap -sC -sV -oN initial-scan $IP
Сканування показало наступні відкриті порти:
- 21/TCP (FTP), що працює на vsftpd 3.0.3
- 22/TCP (SSH), що працює на OpenSSH 8.2p1 на Ubuntu
- 80/TCP (HTTP), який обслуговує веб-додаток, що працює на Gunicorn
Ось скріншот результатів сканування nmap
для довідки:
Початкове сканування з відкритими портами
Крок 2: Аналіз веб-додатку
Далі я перейшов до веб-додатку, що працює на порту 80. Під час дослідження я помітив, що я взаємодію як користувач "Nathan". Переглядаючи сторінки, я знайшов параметр у URI (data
). Експериментуючи з його значенням, я виявив, що зменшення значення цього параметра дає доступ до додаткових даних. Наприклад, встановивши його на 0
, я зміг завантажити файл .pcap
.
Ось скріншот маніпуляції з параметром в дії:
Експлуатація вразливості IDOR шляхом зміни параметра URI
Крок 3: Аналіз файлу PCAP
Завантажений файл PCAP містив мережеві журнали трафіку. Використовуючи Wireshark, я проаналізував файл і визначив кілька використовуваних протоколів, зокрема FTP. Оскільки FTP передає дані у відкритому вигляді, я зміг отримати облікові дані Nathan (USER: nathan
і PASS: Buck3tH4TF0RM3!
), відслідковуючи TCP потік.
Ось скріншот аналізу Wireshark з витягнутими обліковими даними:
Облікові дані FTP, знайдені при аналізі файлу PCAP
З цими обліковими даними я успішно увійшов до машини через SSH.
Крок 4: Успішний вхід через SSH
Використовуючи облікові дані, витягнуті з файлу PCAP, я успішно увійшов до машини через SSH. Після входу я перерахував вміст домашнього каталогу Nathan, щоб зібрати більше інформації та визначити потенційно цікаві файли.
Ось скріншот успішного входу та перерахунку каталогу:
Увійшов до сервера, використовуючи витягнуті облікові дані
Крок 5: Ескалація привілеїв та фінальний флаг
Після отримання доступу до SSH як Nathan, я перевірив можливості користувача для визначення шляхів ескалації привілеїв. Використовуючи наступну команду:
getcap -r / 2>/dev/null
Я виявив, що Python 3.8 має підвищені можливості (cap_setuid
і cap_net_bind_service
). Це дозволило мені запустити Python з правами root.
Ось скріншот перевірки можливостей:
Перевірка підвищених можливостей Python за допомогою getcap
Перевіряючи домашній каталог Nathan, я знайшов кілька Python скриптів, які здавалися корисними, серед них getfiles.py
та getrootfiles.py
. Ось скріншот перерахунку каталогу:
Знайшов Python скрипти в домашньому каталозі Nathan
Скрипт getfiles.py
дозволив мені переключитися на користувача root і перерахувати файли в каталозі /root
.
Нижче наведено вміст скрипту та його виконання:
Огляд вмісту скрипту getfiles.py
Ескалація привілеїв за допомогою getfiles.py
Щоб отримати фінальний флаг, я використав скрипт getrootfiles.py
, який був розроблений для читання конкретних файлів як користувач root. Нижче наведено вміст скрипту та процес виконання:
Огляд вмісту скрипту getrootfiles.py
Зрештою, я отримав флаг root.txt
:
1de477fe588163f708e3eacf4edd932d
Нижче наведено скріншот отримання фінального флагу:
Отримання флагу за допомогою getrootfiles.py
Висновок
Машина "Cap" надала чудову можливість попрактикуватися в експлуатації вразливості IDOR та ескалації привілеїв за допомогою можливостей Linux. Від початкової енумерації до використання Python скриптів для доступу root, цей виклик продемонстрував важливість систематичного аналізу та експлуатації вразливостей.
Перекладено з: HTB Cap CTF: IDOR Exploitation and Privilege Escalation with Python Capabilities