Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру 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. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.