EXECUTIVE SUMMARY
Тест на проникнення було проведено з метою виявлення та експлуатації вразливостей на наданій CTF машині та захоплення флагів. Метою було отримати доступ до root через будь-які доступні методи та отримати флаг після експлуатації.
INTRODUCTION
CTF зосереджується на проведенні вправи з тестування на проникнення в кібербезпеці у середовищі “Machine to Boot2Root” Capture The Flag (CTF). Цей тип CTF включає машину або віртуальне середовище, яке спеціально налаштоване з різними вразливостями для того, щоб учасники могли їх виявляти та експлуатувати. Метою є застосування різних методологій та технік для ідентифікації та експлуатації вразливостей, отримання root доступу та “завантаження” машини.
OBJECTIVES
Конкретні цілі проєкту можуть включати:
- Проведення розвідки та збору інформації про CTF машину.
- Застосування технік зламу паролів для отримання доступу до облікових записів користувачів.
- Виявлення та експлуатація вразливостей для підвищення привілеїв для отримання root доступу до машини.
- Документування всього процесу, включаючи використані методології, виявлені вразливості та рекомендовані заходи.
METHODOLOGY
Протягом проєкту ми використовували різні інструменти, фреймворки та техніки, зокрема:
- Nmap — інструмент для сканування
- Wpscan — сканер вразливостей WordPress
- PHP-reverse-shell — Github
- NetCat — мережевий інструмент
ACTIVITIES (POC)
Reconnaissance and Scanning Phase
Щоб розпочати своє завдання, спершу потрібно було знайти відкриті порти на IP адресі хоста. Для цього я використав Nmap для сканування IP разом з визначенням версії
nmap 10.10.163.188 -sV
первинне сканування за допомогою nmap
З результатів сканування я дізнався, що сервер coldbox має працюючий apache сервер на порту 80 з версією 2.4.18, яка не має відомих серйозних вразливостей. Тому я вирішив дослідити сайт далі і відкрив його в браузері.
сайт Coldd Box
Під час подальшого дослідження я виявив, що на сайті є сторінка для входу в WordPress, доступ до якої можна отримати прямо з головної сторінки.
сторінка входу в WordPress
Спробував різні стандартні імена користувачів, як root, admin і т. д., але жодне не підходило. Тому я вирішив скористатись сканером для WordPress — wpscan, щоб отримати імена користувачів зі сторінки входу.
wpscan --url 10.10.163.188 --enumerate u --random-user-agent
перерахунок імен користувачів за допомогою wpscan
Завдяки модулю перерахунку імен користувачів в wpscan, мені вдалося знайти кілька імен користувачів, таких як hugo, philip, c0ldd, і я вирішив зосередитися на користувачеві c0ldd, оскільки це був автор сайту, що вказано на головній сторінці. Для цього я використовував wpscan, щоб провести брутфорс паролю користувача c0ldd.
wpscan --url 10.10.163.188 -U c0ldd -P /usr/share/wordlists/rockyou.txt
брутфорс пароля
Після запуску брутфорсера я знайшов пароль користувача c0ldd — 9876543210, для чого я використовував список паролів rockyou. Після того, як отримав пароль, я спробував увійти за допомогою цих даних на сторінці wp-login і успішно увійшов.
панель управління WordPress
Я досліджував панель управління і виявив, що є php файли, які завантажуються на сервері, коли завантажується головна сторінка, і також я зміг редагувати цей файл header.php, який знаходиться в розділі редактора в темах.
Щоб отримати зворотній шелл на мою систему з сервера, я шукав скрипти для зворотного шеллу і знайшов один на GitHub, який містив поля для IP і порту, і змінив їх на своє IP та порт 1234.
і я успішно оновив файл header.php.
оновлення файлу header.php
Для того щоб отримати зворотне з'єднання на мою систему, мені потрібно було слухати на порту 1234, а також сайт повинен був бути перезавантажений, щоб файл header.php був виконаний. Після перезавантаження сайту я зміг отримати зворотне з'єднання на екрані моєї хост-машини.
Для прослуховування порту я використовував інструмент Netcat.
nc -lnvp 1234
отримання зворотного з'єднання
Шелл відкрився як користувач www-data, який є користувачем, що керує файлами веб-додатку, тому я одразу перейшов до директорії /var/www/html/
, де знаходились усі конфігураційні файли для сайту на WordPress.
перегляд вмісту директорії сайту
Серед файлів, що були відображені, wp-config.php містив конфігурації бази даних, такі як використовувана база даних, ім'я користувача, а також пароль користувача. Ім'я користувача виявилося c0lld, а пароль для c0ldd — cybersecurity.
аналіз вмісту файлу wp-config
Тепер мені потрібно було переключитися на користувача c0lld, але перед цим потрібно було отримати стабільний шелл для нормальної взаємодії з ним. Для цього я використав Python модуль tty, щоб отримати стабільний шелл. Після цього я зміг переключитися на користувача c0ldd, і файл user.txt у його домашній директорії містив флаг користувача.
python3 -c 'import pty;pty.spawn("/bin/sh")'
доступ до облікового запису користувача c0ldd
Тепер мені потрібно було отримати привілеї суперкористувача, щоб потрапити в директорію root. Для підвищення привілеїв я повинен був дізнатися, які саме привілеї має користувач c0ldd як sudo користувач. Для цього я виконав команду sudo -l
і з'ясував, що команди vim, ftp і chmod можна виконувати як sudo користувач. Тому я шукав код для підвищення привілеїв для програми vim на сайті GTFOBins і знайшов наступний код.
sudo vim -c ':!/bin/sh'
Запустивши цей код, я отримав доступ до root, як показано нижче, і після цього я перейшов до директорії root та отримав флаг root.
підвищення привілеїв та флаг root
RESULTS & FINDINGS
Застосувавши описані методи, ми змогли знайти флаги як для root, так і для звичайних користувачів.
флаг користувача: RmVsaWNpZGFkZXMsIHByaW1lciBuaXZlbCBjb25zZWd1aWRvIQ==
флаг root: wqFGZWxpY2lkYWRlcywgbcOhcXVpbmEgY29tcGxldGFkYSE=
Ключові висновки:
- Сторінка входу в WordPress була доступна публічно, що є небажаним.
- Для входу використовувався слабкий пароль.
CONCLUSION
Capture The Flag (CTF) забезпечив захоплюючий та складний досвід для мене. Протягом CTF було випробувано різноманітні навички безпеки, зокрема аналіз веб-додатків, оцінка вразливостей, розробка експлойтів і підвищення привілеїв.
Перекладено з: C0ldd-Box WriteUp — REPORT