HackTheBox. Прохождение Traverxec. RCE в веб-сервере nostromo, техника GTFOBins

в 17:43, , рубрики: ctf, HTB, pentest, ralf_rt, информационная безопасность
image

Продолжаю публикацию решений отправленных на дорешивание машин с площадки 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

image

Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.

nmap -A traverxec.htb -p22,80

image

Таким образом мы имеем SSH и веб-сервер Nostromo.

Давайте проверим веб-сервер Nostromo на известные эксплоиты для версии 1.9.6. Для этих целей можно использовать searchsploit, данная программа предоставляет возможность удобной работы с эксплоитами, которые есть в базе exploit-db.

image

Как можно понять из результата, второй эксплоит нам не подходит, а у первого имеется пометка Metasploit, которая говорит о том, что данный модуль реализован для контекста Metasploit Framework.

Entry Point

Загружаем msfconsole и выполним поиск эксплоита.

image

Теперь мы знаем полное имя эксплоита и можем его использовать. После загрузки эксплоита просмотрим информацию о нем. Так мы узнаем базовые опции для его использования и описание самого эксплоита.

image

image

Отлично! Данный эксплоит подходит для нашей версии nostromo. Задаем базовые опции и проверяем работу эксплоита.

image

Для удобства работы получим meterpreter оболочку. Для этого отправим сессию работать в фоне — Ctrl+Z и подтверждаем. И если посмотрим работающие сессии, то увидим ту, которую только что свернули.

image

Для получения оболочки meterpreter в работающей сессии можно использовать модуль пост эксплуатации post/multi/manage/shell_to_meterpreter. Быстро использовать этот модуль можно следующим образом.

image

Нам сообщают, что оболочка meterpreter открыта во второй сессии. Поэтому запускаем вторую сессию.

image

USER

И первым делом нужно осмотреться на хосте. Для этого загружаем на машину скрипт перечисления для Linux.

image

Далее вызываем шелл, даем право на исполнение и запускаем скрипт.

image

Анализируя вывод, находим хеш пароля из .htpasswd.

image

Далее крутиться вокруг — трата времени… Поняв это и не зная куда идти далее, было принято решение посмотреть конфигурации веб-сервера. Благо директория указана в пути к данному файлу.

image

Далее просмотрим файл nhttp.conf.

image

Дело в том, что корневая директория в nostromo указывается в файле конфигурации как homedirs_public. То есть это директория public_www. Данная директория расположена в домашней (homedirs — /home) директории пользователя (serveradmin — david@traverxec.htb). Обобщая вышесказанное, файл index.html расположен в директории /home/david/public_www. Чтобы пользователи смогли обращаться к данной странице — директория должна иметь права на чтение для всех.

image

Догадки подтверждаются. К тому же мы видим какую-то директорию, давайте глянем что там.

image

Там находим бэкап SSH файлов. Скачаем их.

image

Разархивируем файлы.

image

И у нас есть приватный ключ пользователя, но при попытке подключиться, у нас спрашивают пароль. Это значит, что ключ зашифрован.

image

Но мы можем пробрутить его. Сначала приведем к нужному формату.

image

Сохраним хеш в файл и пробрутим по словарю rockyou.txt с помощью JohnTheRipper.

image

Так мы находим пароль шифрования ключа. С помощью него и ключа подключаемся по SSH.

image

ROOT

Смотрим, что у нас есть в директории пользователя.

image

В директории bin находим интересные файл. Разберемся, что за скрипт.

image

Данный скрипт выводить строки после чего из-под sudo выполняет команду, вывод которой передает в cat, что очень интересно. Выполним данную команду и увидим довольно массивный вывод.

image

Перенаправление в cat сразу натолкнула меня на мысль об использовании GTFOBins техники. Суть в том, что из разных системных утилит мы можем получать возможность чтения, записи файлов, выполнения команд и т.д. Пример того, как это делать для разных программ можно смотреть здесь.

Дело в том, что если мы сожмем окно терминала, и выполним команду без перевода вывода в cat, то вывод автоматически будет направлен в less, откуда мы можем получить шелл используя !/bin/sh. Так как команда выполняется под sudo, мы получим шелл с максимальными привилегиями.

image

image

image

image

Так мы получаем пользователя root в системе.

Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.

Автор: Ральф Фаилов

Источник


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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js