В этом рай­тапе я покажу, как может быть ата­кован домен управле­ния груп­повыми полити­ками в Active Directory. Но нач­нем мы с вос­ста­нов­ленных зап­росов Kerberos и получим зашиф­рован­ные дан­ные, которые поз­волят нам подоб­рать пароль поль­зовате­ля. А затем вос­поль­зуем­ся уяз­вимостью в Joomla, что­бы получить сес­сию на уда­лен­ном сер­вере.

На­ша цель — получе­ние прав супер­поль­зовате­ля на машине Office с учеб­ной пло­щад­ки Hack The Box. Уро­вень задания — слож­ный.

warning

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

 

Разведка

 

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

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

10.10.11.3 office.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).

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

Ска­нер нашел мно­жес­тво откры­тых пор­тов, что впол­не естес­твен­но для кон­трол­лера домена:

  • 53 — DNS;
  • 80 (HTTP) — веб‑сер­вер Apache httpd 2.4.56;
  • 88 — Kerberos;
  • 139 — служ­ба сеан­сов NetBIOS, NetLogon;
  • 389 — LDAP;
  • 443 (HTTPS) — веб‑сер­вер Apache httpd 2.4.56;
  • 445 — SMB;
  • 464 — служ­ба сме­ны пароля Kerberos;
  • 593 (HTTP-RPC-EPMAP) — исполь­зует­ся в служ­бах DCOM и MS Exchange;
  • 636 — LDAP с шиф­ровани­ем SSL или TLS;
  • 3268 (LDAP) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру;
  • 3269 (LDAPS) — для дос­тупа к Global Catalog от кли­ента к кон­трол­леру через защищен­ное соеди­нение;
  • 5985 — служ­ба уда­лен­ного управле­ния WinRM;
  • 9389 — веб‑служ­бы AD DS.

Как пра­вило, в таких слу­чаях пер­вым делом сто­ит смот­реть SMB, но на веб‑сер­вере раз­верну­та Joomla, а она может быть уяз­вима.

 

Точка входа

Ког­да име­ем дело с Joomla, пер­вым делом сле­дует исполь­зовать спе­циали­зиро­ван­ный ска­нер — JoomScan.

joomscan -u http://10.10.11.3
Результат сканирования CMS Joomla
Ре­зуль­тат ска­ниро­вания CMS Joomla

Оп­ределя­ем вер­сию (4.2.7) и тут же про­буем най­ти для нее экс­пло­иты. Пер­вым делом идем в Google.

Поиск эксплоитов в Google
По­иск экс­пло­итов в Google

И сра­зу узна­ём, что в нашей вер­сии есть уяз­вимость CVE-2023-23752, что поз­волит нам получить учет­ные дан­ные для под­клю­чения к базе дан­ных. Для это­го будем исполь­зовать най­ден­ный экс­пло­ит.

За­пус­каем и ука­зыва­ем адрес:

python3 CVE-2023-23752.py -u http://10.10.11.3
Результат работы эксплоита
Ре­зуль­тат работы экс­пло­ита

Уяз­вимость зак­люча­ется в неп­равиль­ной про­вер­ке дос­тупа. Экс­пло­ит про­веря­ет раз­личные API, которые могут вер­нуть учет­ные дан­ные для под­клю­чения к базе дан­ных. Одна­ко для авто­риза­ции в CMS получен­ный таким обра­зом пароль не подошел, а дру­гих поль­зовате­лей, кро­ме адми­нис­тра­тора, най­ти не уда­лось.

В этом слу­чае исполь­зуем недочет про­токо­ла Kerberos: на зап­рос тикета поль­зовате­ля могут при­ходить отве­ты с раз­ными кодами оши­бок. Один — при зап­росе тикета для несущес­тву­юще­го поль­зовате­ля, дру­гой — в ответ на невер­ный пароль. Таким обра­зом, мож­но методом перебо­ра узнать, какие поль­зовате­ли есть в домене. Для это­го исполь­зуем ути­литу kerbrute.

kerbrute_linux_amd64 userenum --dc dc.office.htb -d office.htb xato-net-10-million-usernames.txt
Результат перебора пользователей
Ре­зуль­тат перебо­ра поль­зовате­лей

Сох­раня­ем най­ден­ных поль­зовате­лей в файл и спре­им получен­ный ранее пароль с помощью NetExec.

nxc smb 10.10.11.3 -u users.txt -p 'H0lOgrams4reTakIng0Ver754!' --smb-timeout 3
Результат спрея пароля
Ре­зуль­тат спрея пароля

Те­перь у нас есть валид­ная учет­ная запись, что поз­воля­ет про­вес­ти базовую раз­ведку в домене.

Пер­вым делом получим спи­сок всех поль­зовате­лей.

nxc ldap 10.10.11.3 -u dwolfe -p 'H0lOgrams4reTakIng0Ver754!' --users
Список пользователей
Спи­сок поль­зовате­лей

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

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

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

    Подписаться

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