HTB UpDown. Эксплуатируем Race Condition при атаке на веб-сервер

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

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

В этом рай­тапе я под­робно покажу, как искать скры­тые дан­ные на сай­те, затем покопа­емся в его исходни­ках и получим RCE при экс­плу­ата­ции Race Condition. Для пол­ного зах­вата хос­та исполь­зуем ошиб­ку в прог­рамме на Python и при­меним одну из тех­ник GTFOBins.

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

warning

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

 

Разведка

 

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

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

10.10.11.177 updown.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).

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

Мы наш­ли два откры­тых пор­та: 22 — служ­ба OpenSSH 8.2p1 и 80 — веб‑сер­вер Apache 2.4.41. На веб‑сер­вере нас встре­чает чекер сай­тов.

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

Глав­ная стра­ница рас­кры­вает нам реаль­ный домен — siteisup.htb. Поэто­му добав­ляем запись в файл /etc/hosts:

10.10.11.177 updown.htb siteisup.htb

За­тем я попытал­ся пос­лать зап­рос на свой прос­тень­кий HTTP-сер­вер, который мож­но запус­тить коман­дой python3 -m http.server 80. В ито­ге я получил ответ, содер­жащий стра­ницу HTML в тек­сто­вом виде, а в логах сво­его сер­вера уви­дел сле­дующий GET-зап­рос.

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

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

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

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

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

  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);
  • -t — количес­тво потоков;
  • -u — URL.

За­пус­каем ffuf:

ffuf -u 'http://siteisup.htb/FUZZ' -w directory_2.3_medium_lowercase.txt -t 256

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

На­ходим инте­рес­ный каталог dev и пов­торя­ем ска­ниро­вание уже в нем.

ffuf -u 'http://siteisup.htb/dev/FUZZ' -w files_interesting.txt -t 256

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

И обна­ружи­ваем репози­торий Git, а это явная точ­ка вхо­да.

 

Точка входа

Те­перь нам нуж­но сдам­пить най­ден­ный репози­торий, для чего есть набор скрип­тов dvcs-ripper или спе­циаль­ное средс­тво git-dumper. На этот раз вос­поль­зуем­ся вто­рым.

git-dumper http://siteisup.htb/dev/ dev

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

Пред­став­ление репози­тория в gitk

В репози­тории находим файл admin.php, который отсутс­тву­ет на самом сай­те, а это зна­чит, что нам нуж­но най­ти новый сайт. Для это­го с помощью ffuf прос­каниру­ем под­домены. При запус­ке добавим параметр -H — заголо­вок HTTP.

ffuf -u http://siteisup.htb/ -t 256 -w subdomains-top1million-110000.txt -H 'Host: FUZZ.siteisup.htb'

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

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

10.10.11.177 updown.htb siteisup.htb dev.siteisup.htb

Но к сай­ту нет дос­тупа.

Ошиб­ка при обра­щении к сай­ту

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

Ответить

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