HTB Cerberus. Захватываем контроллер домена Windows через баг SAML SSO

Содержание статьи

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • Локальное повышение привилегий (хост 1)
  • Продвижение
  • Локальное повышение привилегий (хост 2)
  • Active Directory Federation Services

В этом рай­тапе я покажу, как экс­плу­ати­ровать уяз­вимость в сер­висе ADSelfService Plus для зах­вата домена Active Directory. По дороге зах­ватим хост на Linux, рас­кру­тив цепоч­ку уяз­вимос­тей в сис­теме монито­рин­га Icinga Web 2. Повысим при­виле­гии бла­года­ря дыре в сен­дбок­се Firejail и сдам­пим учет­ные дан­ные из SSSD.

По­может нам в этом тре­ниро­воч­ная машина Cerberus с пло­щад­ки Hack The Box. Уро­вень ее слож­ности — «слож­ный».

warning

Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.

 

Разведка

 

Сканирование портов

До­бав­ляем IP-адрес машины в /etc/hosts:

10.10.11.205 cerberus.htb

И запус­каем ска­ниро­вание пор­тов.

Справка: сканирование портов

Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг при любой ата­ке. Он поз­воля­ет ата­кующе­му узнать, какие служ­бы на хос­те при­нима­ют соеди­нение. На осно­ве этой информа­ции выбира­ется сле­дующий шаг к получе­нию точ­ки вхо­да.

На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та:

#!/bin/bashports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).

Ре­зуль­тат работы скрип­та

Ска­нер нашел все­го один откры­тый порт! Это порт 8080, на котором работа­ет веб‑сер­вер Apache 2.4.52. При этом в заголов­ке http-title сра­зу отоб­ражен редирект на домен icinga.cerberus.local, который мы добав­ляем в файл /etc/hosts.

10.10.11.205 cerberus.htb icinga.cerberus.local cerberus.local

Те­перь перехо­дим по это­му адре­су в бра­узе­ре, и нас встре­чает опен­сор­сная сис­тема монито­рин­га Icinga Web 2.

Фор­ма авто­риза­ции icinga.cerberus.local 

Точка входа

Пер­вым делом нуж­но поис­кать сущес­тву­ющие экс­пло­иты для най­ден­ной сис­темы. Мне уда­лось вый­ти на блог, где опи­саны уяз­вимос­ти для Icinga Web 2. И пер­вое, что прив­лека­ет вни­мание, — это баг, поз­воля­ющий читать про­изволь­ные фай­лы на хос­те.

Опи­сание уяз­вимос­ти чте­ния про­изволь­ных фай­лов

Про­буем ука­зан­ным в опи­сании спо­собом про­читать файл /etc/hosts.

http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/hosts

Со­дер­жимое фай­ла /etc/hosts

Но одно дело — иметь такую воз­можность, а дру­гое — знать, какие фай­лы читать. В этом поможет до­кумен­тация Icinga, где мож­но пос­мотреть име­на и опи­сание фай­лов с нас­трой­ками. Пер­вый инте­рес­ный файл — это confing.ini. Он содер­жит гло­баль­ные нас­трой­ки, к при­меру путь к фай­лам модулей.

http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/config.ini

Со­дер­жимое фай­ла config.ini

Вто­рой инте­рес­ный файл — resources.ini. В нем записа­ны учет­ные дан­ные для под­клю­чения к базе дан­ных.

http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/resources.ini

Со­дер­жимое фай­ла resources.ini

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

Глав­ная стра­ница Icinga 

Точка опоры

Те­перь у нас есть дос­туп к сай­ту, и мож­но перей­ти к дру­гой опи­сан­ной в том же ресер­че уяз­вимос­ти CVE-2022-24715. Аутен­тифици­рован­ные поль­зовате­ли с дос­тупом к нас­трой­кам фрей­мвор­ка могут соз­давать фай­лы ресур­сов SSH в неп­редус­мотрен­ных катало­гах, что при­водит к выпол­нению про­изволь­ного кода. Уяз­вимость зак­люча­ется в неп­равиль­ной про­вер­ке передан­ной стро­ки в коде на PHP. Если исполь­зовать null-байт, то при про­вер­ке он будет учтен и стро­ка получит­ся обре­зан­ной, но в момент записи в файл null-байт не будет учи­тывать­ся, что при­ведет к записи допол­нитель­ных дан­ных.

Опи­сание уяз­вимос­ти

Источник: xakep.ru

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *