В этом рай­тапе я покажу, как экс­плу­ати­ровать уяз­вимость в сер­висе 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/bash
ports=$(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.cerberus.local
 

Точка входа

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

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

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

http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/hosts
Содержимое файла /etc/hosts
Со­дер­жимое фай­ла /etc/hosts

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

http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/config.ini
Содержимое файла config.ini
Со­дер­жимое фай­ла config.ini

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

http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/icingaweb2/resources.ini
Содержимое файла resources.ini
Со­дер­жимое фай­ла resources.ini

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

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

Точка опоры

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

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

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии