Се­год­ня я покажу, как через зап­росы к сер­веру MS SQL мож­но получить сес­сию на хос­те. Но преж­де исполь­зуем ошиб­ку в логике при­ложе­ния и повысим при­виле­гии на сай­те через IDOR. А получив дос­туп к Windows, вытащим учет­ные дан­ные поль­зовате­ля из дам­па опе­ратив­ной памяти и зах­ватим кон­трол­лер домена, при­менив тех­нику RBCD.

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

warning

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

 

Разведка

 

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

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

10.10.11.5 freelancer.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) — веб‑сер­вер Nginx 1.25.5;
  • 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.

На SMB ано­ним­ной аутен­тифика­ции нет, поэто­му пос­мотрим, что там на веб‑сер­вере.

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

Точка входа

На сай­те есть воз­можность регис­тра­ции и авто­риза­ции. При­чем мож­но выб­рать роль поль­зовате­ля Freelancer или Employer. Пер­вым делом я зарегис­три­ровал­ся с ролью Freelancer.

Форма регистрации Freelancer
Фор­ма регис­тра­ции Freelancer
Профиль пользователя
Про­филь поль­зовате­ля

Пот­ратив нем­ного вре­мени, что­бы осмотреть­ся в дос­тупном поль­зовате­лю окру­жении, ничего инте­рес­ного не находим. Взгля­нем на отли­чия в окру­жении у поль­зовате­лей с ролью Employer. Для это­го нуж­но зарегис­три­ровать вто­рой акка­унт, одна­ко он по умол­чанию почему‑то неак­тивен.

Сообщение о состоянии учетной записи
Со­обще­ние о сос­тоянии учет­ной записи

На сай­те есть воз­можность вос­ста­нов­ления пароля. Поп­робу­ем «вос­ста­новить» неак­тивную учет­ную запись. Для это­го пот­ребу­ется отве­тить на воп­росы, ука­зан­ные при регис­тра­ции акка­унта. Пос­ле это­го нам ста­нет дос­тупна фор­ма изме­нения пароля.

Форма восстановления аккаунта
Фор­ма вос­ста­нов­ления акка­унта
Форма изменения пароля
Фор­ма изме­нения пароля

Пос­ле сме­ны пароля и пов­торной авто­риза­ции наша учет­ная запись неожи­дан­но ста­ла активна.

Профиль пользователя
Про­филь поль­зовате­ля

Пун­ктов меню ста­ло гораз­до боль­ше. Очень инте­ресен раз­дел с QR-кодом.

Страница QR-Code
Стра­ница QR-Code

Де­коди­руем QR-код и получа­ем ссыл­ку. При перехо­де по ссыл­ке мы ока­зыва­емся в про­филе поль­зовате­ля.

Данные в QR-коде
Дан­ные в QR-коде
История запросов в Burp History
Ис­тория зап­росов в Burp History

Я зап­росил новый QR-код, раз­логинил­ся, перешел по ссыл­ке из кода и сно­ва ока­зал­ся в про­филе поль­зовате­ля. Такая ссыл­ка валид­на все­го один раз, но куда инте­рес­нее, из чего она сос­тоит: в ней есть какие‑то дан­ные в фор­мате Base64. Пос­ле декоди­рова­ния пред­полага­ем, что это иден­тифика­тор поль­зовате­ля.

Декодированные данные в URI
Де­коди­рован­ные дан­ные в URI

В таких слу­чаях сто­ит про­верять, при­вязан ли код OTP к ID акка­унта или нет. Для это­го я сде­лал еще один акка­унт, получил ссыл­ку из QR-кода в пер­вом акка­унте, поменял име­ющий­ся в ней ID на ID вто­рого акка­унта, перешел по этой ссыл­ке и попал во вто­рой акка­унт. Таким обра­зом, мы име­ем уяз­вимость Account Takeover и можем получить дос­туп к любой учет­ной записи.

Най­ти ссыл­ки на дру­гие акка­унты мож­но на стра­ницах бло­га.

Страница блога
Стра­ница бло­га

Пе­рехо­дим к любому из акка­унтов и получа­ем про­филь поль­зовате­ля. Куда инте­рес­нее то, что в URI про­филя при­сутс­тву­ет ID акка­унта.

Профиль пользователя
Про­филь поль­зовате­ля
 

Точка опоры

Пе­реб­рать все акка­унты по ID мож­но с помощью Burp Intruder. Переп­равим зап­рос из Burp History в Burp Intruder ком­бинаци­ей кла­виш Ctrl-R.

Burp Intruder — вкладка Positions
Burp Intruder — вклад­ка Positions
Burp Intruder — вкладка Payloads
Burp Intruder — вклад­ка Payloads

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

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

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

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

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

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

    Подписаться

  • Подписаться
    Уведомить о
    1 Комментарий
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии