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

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

warning

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

 

Разведка

 

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

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

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

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

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

Главная страница сайта updown.htb
Глав­ная стра­ница сай­та 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
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

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

ffuf -u 'http://siteisup.htb/dev/FUZZ' -w files_interesting.txt -t 256
Результат сканирования файлов с помощью ffuf
Ре­зуль­тат ска­ниро­вания фай­лов с помощью ffuf

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

 

Точка входа

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

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

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

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

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

ffuf -u http://siteisup.htb/ -t 256 -w subdomains-top1million-110000.txt -H 'Host: FUZZ.siteisup.htb'
Результат сканирования поддоменов с помощью ffuf
Ре­зуль­тат ска­ниро­вания под­доменов с помощью ffuf

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

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

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

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

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

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

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


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

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

    Подписаться

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