Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone»

в 20:31, , рубрики: hackthebox, pentest, инфобез, информационная безопасность

Привет! В этой статье хочу вам рассказать про свой опыт прохождения лаборатории Friendzone на портале hackthebox. Для тех, кто не слышал, что такое hackthebox — это портал, на котором вы можете проверить свои умения пентеста на практике, имеются CTF таски и собственно лабораторные машины, о прохождении одной из которых и пойдет речь в этой статье.

Скажу сразу, что в правилах сервиса написано: «Dont share how you hacked each machine with other members. This includes the invite code generation and all challenges». Но так как эта машина уже не активна и хранится в разделе «Retired Machines», доступ к машинам в этом разделе и writeup'ам имеют только VIP-участники, то данная статья ничего не нарушает и вполне законна. И так начнем!

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 1

Сбор информации

Начнем разведку с запуска сканирования портов с помощью nmap.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 2

Из приведенного выше видно, что порты 21 (ftp), 22(ssh), 53(domain), 80(http), 139(netbios-ssn), 443(https) открыты. Давайте же рассмотрим их.

Enumerate 139/tcp (netbios-ssn)

Воспользуемся утилитой enum4linux для перечисления расшаренных ресурсов на хосте. Из вывода утилиты видно, что разрешено входить на ресурсы /general и /Development

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 3

Теперь нам необходимо проверить эти ресурсы.

С помощью smbclient //10.10.10.123/general находим файл creds.txt, содержащий некие учетные данные, сохраним его.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 4

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 5

DNS enumeration

Воспользуемся утилитой dig, которая дает возможность проверить записи на указанном DNS сервере для домена/поддомена. Имя домена friendzone.red взято из CommonName ssl-сертификата (вывод nmap для 443/tcp).

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 6

Заходим на 10.10.10.123

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 7

Замечаем почтовый ящик info@friendportal.red и снова воспользуемся dig.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 8

Добавляем полученные записи в /etc/hosts

Теперь у нас есть список адресов, которые необходимо просмотреть для следующих зацепок. Опущу часть повествования, где страницы оказались кроличьими норами. Рассмотрим только полезные находки.

Заходим на administartor1.friendzone.red и вводим учетные данные, найденные на //10.10.10.123/general/creds.txt

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 9

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 10

Посещаем /dashboard.php

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 11

Просят ввести некие параметры для получения картинок. В итоге нам доступны 2 изображения.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 12

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 13

Методом проб и ошибок понимаем, что страница уязвима к LFI (Local File Inclusion). И что мы можем загрузить шелл через smbclient и обратиться к нему с помощью данной уязвимости. Пробуем!

Загружаем шелл в Developments.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 14

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 15

Возвращаемся на страницу и обращаемся к загруженному шеллу.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 16

Перед этим, конечно, же запустив netcat на прослушивание порта 1234.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 17

Получаем оболочку пользователя www-data.

Пробежавшись по вулнбоксу находим файл mysql_data.conf, который содержит учетные данные от пользователя friend.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 18

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 19

Попробуем получить терминал и залогиниться под пользователем friend.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 20

Заходим в домашнюю директорию /home/friend и забираем пользовательский флаг.

Захват root.txt

Загрузим на вулнбокс pspy64, чтобы отследить запущенные процессы.

Заголовок спойлера

pspy — это инструмент, предназначенный для отслеживания процессов без необходимости получения прав root. Он позволяет вам видеть команды, выполняемые другими пользователями, задания cron и т.д. по мере их выполнения.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 21

Запускаем pspy64, перед этим выставив «исполнение» файлу chmod +x.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 22

Замечаем, что reporter.py запускается от пользователя, у которого UID=0 (т.е. root). Посмотрим содержимое файла reporter.py

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 23

Практически все строки закомментированы и не несут смысла, кроме первой, где импортируется модуль os. Library hijacking?

У данного модуля os.py было разрешение 777, поэтому мы могли спокойно внести изменения от пользователя Friend.

Добавив в модуль os.py строку system(«cp /root/root.txt /home/Friend/root.txt») и подождав какое-то время, чтобы скрипт запустился.

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 24

Мы получили корневой флаг. Победа!

Прохождение лабораторной машины для пентеста «Hackthebox — Friendzone» - 25

Автор: yrbrv

Источник


* - обязательные к заполнению поля