Hack The Box. Прохождение Tabby. RCE в Tomcat, и повышаем привилегии через LXD

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


Продолжаю публикацию решений, отправленных на дорешивание машин с площадки HackTheBox.

В данной статье получим RCE в Tomcat, ломаем zip архив и повышаем привилегии с помощью LXD.

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

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

Recon


Данная машина имеет IP адрес 10.10.10.194, который я добавляю в /etc/hosts.

10.10.10.194 	tabby.htb

Первым делом сканируем открытые порты. Я это делаю с помощью следующего скрипта, принимающего один аргумент — адрес сканируемого хоста:

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1



Выбор небольшой, давайте начнем с 80 порта, где нас встречает следующий сайт.



Осматриваясь на сайте, отмечаем для себя интересные способ показа новостей (с намеком на LFI).



А также добавляем еще одну запись в /etc/hosts.
10.10.10.194    megahosting.htb

Давайте проверим наличие LFI, я для этого использую LFISuite.







И мы находим LFI. Так как большего мы не получаем, перейдем на порт 8080. Там нас встречает страница, из которой мы узнаем, что используется Tomcat.



Обращаем внимание на интересный файл. Переходя по другой ссылке, на встречает окошко HTTP аутентификации. Давайте прочитаем данный файл /usr/share/tomcat9/etc/tomcat-users.xml.



И есть учетные данные, с которыми мы можем авторизоваться. Отсюда мы можем получить RCE с помощью модуля tomcat_mgr_deploy.



Зададим необходимые параметры.



И получаем ошибку пути файла.

Entry Point


Немного побродив, натыкаемся на справку, в которой указана директория text.





Давайте укажем данный путь.



И мы получаем сессию meterpreter. Чтобы быстренько провести разведку, закинем на хост скрипт LinPEAS и выполним.



Внимательно анализируя вывод, находим интересный файл.



USER


Скачиваем его и пробуем открыть. Но у нас спрашивают пароль.





Давайте попробуем его перебрать.
fcrackzip -D -p ../tools/rockyou.txt 16162020_backup.zip



И находим вероятный пароль. В самом архиве ничего интересного нет, но зато это пароль от пользователя, созданного в системе.



Для удобного подключения создадим SSH ключ.



ROOT


Подключимся по SSH с помощью приватного ключа и видим, что пользователь состоит в группе lxd.



LXD — это системный менеджер контейнеров. Он предлагает пользовательский интерфейс, похожий на виртуальные машины, но использующий вместо этого контейнеры Linux.

Ядро LXD — это привилегированный демон, который предоставляет REST API через локальный unix сокет, а также через сеть, если установлена соответствующая конфигурация. Клиенты, такие как инструмент командной строки поставляемый с LXD посылают запросы через этот REST API. Это означает, что независимо от того, обращаетесь ли вы к локальному хосту или к удаленному, все работает одинаково.

Но мы можем через него выполнить команды, то есть от имени root. Для этого нам будет нужно следующее программное обеспечение, скачиваем и собираем исходники.Загрузим полученный образ на удаленный хост. И после подготовительной части импортируем наш lxd-совместимый файл образа.
lxc image import ./alpine-v3.12-x86_64-20200810_0015.tar.gz --alias ralf



Нам сообщают, что предварительно его нужно было инициализировать, но это можено сделать и позже. Убедимся, что образ загружен.
lxc image list



А теперь инициализируем.



Давайте создадим контейнер, указав образ и имя.
lxc init ralf ignite -c security.privileged=true

И зададим конфигурации, где диск будет примонтирован как /mnt/root.
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true

Запускаем и выполняем.
lxc start ignite
lxc exec ignite /bin/sh



И у нас есть root права.

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


Интересные статьи

Интересные статьи

Существуют разные мнения о том, как команды становятся командами. Есть несколько наиболее популярных моделей, которые говорят о невозможности стать командой быстро. Это может быть долгий ...
В конце марта 2020 года компания Starline во второй раз в своей истории провела хакатон. А мы с другом участвовали в этом контесте.В статье постараюсь изложить основ...
Далее последует инструкция по настройке AWS MFA, и последющей установке и настройке AWS CLI. К сожалению, у меня на эту обязательную процедуру ушла половина рабочего дня. Чтобы други...
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье нам придется проэксплуатиро...
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ. В данной статье мы угоним куки администрато...