Се­год­ня мы с тобой попен­тестим веб‑сер­вер на Windows: научим­ся манипу­лиро­вать DNS, орга­низу­ем утеч­ку хеша NTLM, получим учет­ные дан­ные управля­емых записей AD и про­экс­плу­ати­руем огра­ничен­ное делеги­рова­ние Kerberos, что­бы повысить при­виле­гии. Это поз­волит нам прой­ти машину Intelligence с пло­щад­ки Hack The Box.
 

Разведка

 

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

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

10.10.10.248 intelligence.htb

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

Результат работы скрипта
Ре­зуль­тат работы скрип­та
Результат работы скрипта (продолжение)
Ре­зуль­тат работы скрип­та (про­дол­жение)

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

  • порт 53 — служ­ба DNS. Порт учас­тву­ет в трас­товых отно­шени­ях меж­ду домена­ми;
  • порт 80 (HTTP) — веб‑сер­вер Microsoft IIS/10.0;
  • порт 88 — служ­ба Kerberos. Так­же исполь­зует­ся в довери­тель­ных отно­шени­ях меж­ду лесами;
  • порт 135 — служ­ба уда­лен­ного вызова про­цедур (Microsoft RPC). Исполь­зует­ся для опе­раций вза­имо­дей­ствия кон­трол­лер — кон­трол­лер и кон­трол­лер — кли­ент;
  • порт 139 — служ­ба сеан­сов NetBIOS, NetLogon;
  • порт 389 — служ­ба LDAP;
  • порт 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.

Еще в сер­тифика­те LDAP находим новое домен­ное имя dc.intelligence.htb, поэто­му обно­вим запись в фай­ле /etc/hosts:

10.10.10.248 intelligence.htb dc.intelligence.htb

Пер­вым делом запус­тим скрип­ты Nmap для получе­ния информа­ции с DNS (nmap -p53 --script=dns* intelligence.htb), но из это­го ничего не выш­ло. Авто­ризо­вать­ся как ано­ним в SMB и LDAP не получи­лось. Поэто­му нам нуж­но про­бивать веб.

Вни­матель­но осмотрим­ся на сай­те и поищем цен­ную инфу. Сам сайт на пер­вый взгляд кажет­ся прос­тень­ким. Из инте­рес­ного — на пер­вой стра­нице находим два PDF-докумен­та.

Стартовая страница сайта
Стар­товая стра­ница сай­та
 

OSINT

В докумен­тах ничего важ­ного не обна­ружи­лось. Но из любого кур­са по OSINT (раз­ведка на осно­ве откры­тых источни­ков) ты узна­ешь, что в докумен­тах самое инте­рес­ное — это метадан­ные, осо­бен­но атри­буты вро­де «соз­датель» или «вла­делец». Они могут рас­кры­вать име­на поль­зовате­лей, которые потом мож­но исполь­зовать для дос­тупа к учет­кам.

Для получе­ния мета­информа­ции мож­но исполь­зовать exiftool. Что­бы уста­новить и исполь­зовать ее, пишем:

sudo apt install exiftool
exiftool *
Получение метаинформации из документов
По­луче­ние мета­информа­ции из докумен­тов
 

Точка входа

 

Перечисление аккаунтов

Мы наш­ли два име­ни, а зна­чит, можем поис­кать акка­унты через аутен­тифика­цию Kerberos. Дело в том, что Kerberos нам сооб­щит, если поль­зовате­ля нет в базе. Нуж­но лишь сфор­мировать все воз­можные наз­вания акка­унтов и про­сеивать их. К при­меру, для пары name surname мож­но сос­тавить такие име­на:

Administrator
Guest
name
namesurname
name.surname
names
name.s
sname
s.name
surname
surnamename
surname.name
surnamen
surname.n
nsurname
n.surname

Что­бы сос­тавлять юзер­ней­мы по такому шаб­лону, исполь­зуем сле­дующий скрипт на Python:

#!/usr/bin/python3
names = ["Jose Williams", "William Lee"]
list = ["Administrator", "Guest"]
for name in names:
n1, n2 = name.split()
for x in [
n1, n1 + n2, n1 + "." + n2, n1 + n2[0], n1 + "." + n2[0], n2[0] + n1, n2[0] + "." + n1,
n2, n2 + n1, n2 + "." + n1, n2 + n1[0], n2 + "." + n1[0], n1[0] + n2, n1[0] + "." + n2
]:
list.append(x)
for n in list:
print(n)

А теперь исполь­зуем kerbrute для перебо­ра имен. Ука­зыва­ем опцию перечис­ления поль­зовате­лей и переда­ем их спи­сок.

./kerbrute_linux_amd64 userenum --dcintelligence.htb -dintelligence.htb namelist.txt
Найденные пользователи
Най­ден­ные поль­зовате­ли

Име­на поль­зовате­лей, ука­зан­ные в докумен­тах, и ока­зались наз­вани­ями акка­унтов. Даль­ше, что бы я ни поп­робовал (даже брут паролей), никуда прод­винуть­ся не выш­ло. Видимо, что‑то упус­тили на сай­те.

Воз­вра­щаем­ся к вебу, на этот раз воору­жив­шись Burp Suite. Бла­года­ря Burp Proxy обра­щаем вни­мание на мес­то хра­нения фай­лов и их наз­вания.

Вкладка Burp Proxy
Вклад­ка Burp Proxy

Име­на фай­лов — это даты, а зна­чит, мы можем попытать­ся най­ти и дру­гие докумен­ты. Для это­го отправ­ляем зап­рос в Burp Intruder, что­бы переб­рать и номер месяца, и день.

Burp Intruder — вкладка Position
Burp Intruder — вклад­ка Position
Burp Intruder — вкладка Payload (payload 1)
Burp Intruder — вклад­ка Payload (payload 1)
Burp Intruder — вкладка Payload (payload 2)
Burp Intruder — вклад­ка Payload (payload 2)

Сор­тиру­ем резуль­тат по коду отве­та, что­бы най­ти докумен­ты сре­ди сооб­щений об ошиб­ках.

Результат атаки
Ре­зуль­тат ата­ки

Ос­талось их ска­чать. Сна­чала сох­раним нуж­ные нам наг­рузки средс­тва­ми Burp. Для это­го отме­тим в филь­тре, что нас инте­ресу­ет толь­ко код отве­та 200, а затем выбира­ем Save → Results table.

Сохранение нагрузок в файл
Сох­ранение наг­рузок в файл

Пос­тавим в качес­тве раз­делите­ля про­бел и выберем толь­ко две наг­рузки. Я сох­ранил наг­рузки в файл save.txt, а потом ска­чал все эти докумен­ты через wget.


Скачать:









Важно:


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





Заходи на mc.foxygame.ru:25565

Советуем прочитать