HackTheBox. Прохождение Traverxec. RCE в веб-сервере nostromo, техника GTFOBins
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.
В данной статье получим RCE в веб-сервере nostromo, получим оболочку meterpreter из под активной сессии metasploit, покопаемся в конфигах nostromo, побрутим пароль шифрования SSH ключа и проэксплуатируем технику GTFOBins для повышения привилегий.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Recon
Данная машина имеет IP адрес 10.10.10.165, который я добавляю в /etc/hosts.
10.10.10.165 traverxec.htb
Первым делом сканируем открытые порты. Так как сканировать все порты nmap«ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 1000 пакетов в секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.165 --rate=1000
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A traverxec.htb -p22,80
Таким образом мы имеем SSH и веб-сервер Nostromo.
Давайте проверим веб-сервер Nostromo на известные эксплоиты для версии 1.9.6. Для этих целей можно использовать searchsploit, данная программа предоставляет возможность удобной работы с эксплоитами, которые есть в базе exploit-db.
Как можно понять из результата, второй эксплоит нам не подходит, а у первого имеется пометка Metasploit, которая говорит о том, что данный модуль реализован для контекста Metasploit Framework.
Entry Point
Загружаем msfconsole и выполним поиск эксплоита.
Теперь мы знаем полное имя эксплоита и можем его использовать. После загрузки эксплоита просмотрим информацию о нем. Так мы узнаем базовые опции для его использования и описание самого эксплоита.
Отлично! Данный эксплоит подходит для нашей версии nostromo. Задаем базовые опции и проверяем работу эксплоита.
Для удобства работы получим meterpreter оболочку. Для этого отправим сессию работать в фоне — Ctrl+Z и подтверждаем. И если посмотрим работающие сессии, то увидим ту, которую только что свернули.
Для получения оболочки meterpreter в работающей сессии можно использовать модуль пост эксплуатации post/multi/manage/shell_to_meterpreter. Быстро использовать этот модуль можно следующим образом.
Нам сообщают, что оболочка meterpreter открыта во второй сессии. Поэтому запускаем вторую сессию.
USER
И первым делом нужно осмотреться на хосте. Для этого загружаем на машину скрипт перечисления для Linux.
Далее вызываем шелл, даем право на исполнение и запускаем скрипт.
Анализируя вывод, находим хеш пароля из .htpasswd.
Далее крутиться вокруг — трата времени… Поняв это и не зная куда идти далее, было принято решение посмотреть конфигурации веб-сервера. Благо директория указана в пути к данному файлу.
Далее просмотрим файл nhttp.conf.
Дело в том, что корневая директория в nostromo указывается в файле конфигурации как homedirs_public. То есть это директория public_www. Данная директория расположена в домашней (homedirs — /home) директории пользователя (serveradmin — david@traverxec.htb). Обобщая вышесказанное, файл index.html расположен в директории /home/david/public_www. Чтобы пользователи смогли обращаться к данной странице — директория должна иметь права на чтение для всех.
Догадки подтверждаются. К тому же мы видим какую-то директорию, давайте глянем что там.
Там находим бэкап SSH файлов. Скачаем их.
Разархивируем файлы.
И у нас есть приватный ключ пользователя, но при попытке подключиться, у нас спрашивают пароль. Это значит, что ключ зашифрован.
Но мы можем пробрутить его. Сначала приведем к нужному формату.
Сохраним хеш в файл и пробрутим по словарю rockyou.txt с помощью JohnTheRipper.
Так мы находим пароль шифрования ключа. С помощью него и ключа подключаемся по SSH.
ROOT
Смотрим, что у нас есть в директории пользователя.
В директории bin находим интересные файл. Разберемся, что за скрипт.
Данный скрипт выводить строки после чего из-под sudo выполняет команду, вывод которой передает в cat, что очень интересно. Выполним данную команду и увидим довольно массивный вывод.
Перенаправление в cat сразу натолкнула меня на мысль об использовании GTFOBins техники. Суть в том, что из разных системных утилит мы можем получать возможность чтения, записи файлов, выполнения команд и т.д. Пример того, как это делать для разных программ можно смотреть здесь.
Дело в том, что если мы сожмем окно терминала, и выполним команду без перевода вывода в cat, то вывод автоматически будет направлен в less, откуда мы можем получить шелл используя !/bin/sh. Так как команда выполняется под sudo, мы получим шелл с максимальными привилегиями.
Так мы получаем пользователя root в системе.
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.