На этот раз мы с тобой прой­дем сред­нюю по слож­ности машину с пло­щад­ки Hack The Box. Ты научишь­ся извле­кать цен­ную информа­цию из репози­тори­ев Git, обхо­дить кон­троль дос­тупа HTTP 403, экс­плу­ати­ровать Apache Tomcat до уров­ня выпол­нения про­изволь­ного кода и повышать при­виле­гии через Ansible Playbook.

warning

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

 

Разведка

 

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

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

10.10.10.250 seal.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 (служ­ба SSH), 443 (веб‑сер­вер nginx 1.18.0) и 8080 (отме­чен как HTTP-прок­си).

Справка: брутфорс учеток

Пос­коль­ку в начале про­хож­дения у нас нет учет­ных дан­ных, нет и смыс­ла изу­чать служ­бы, которые всег­да тре­буют авто­риза­ции (нап­ример, SSH). Единс­твен­ное, что мы можем делать здесь, — это переби­рать пароли брут­форсом, но у машин с HTB поч­ти всег­да есть дру­гое про­хож­дение. В жиз­ни таких вари­антов может не быть, к тому же есть шан­сы подоб­рать пароль или получить его при помощи соци­аль­ной инже­нерии.

Так как порт 443 работа­ет по про­токо­лу HTTPS, он содер­жит сер­тификат, а из него мы можем узнать, для какого адре­са он дей­стви­телен. Бла­го его мы уже добави­ли в файл /etc/hosts.

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

Главная страница https://seal.htb
Глав­ная стра­ница https://seal.htb
Главная страница http://seal.htb:8080
Глав­ная стра­ница http://seal.htb:8080
 

Git

GitBucket — это сис­тема для сов­мес­тной работы с Git-репози­тори­ями, которая пре­дос­тавля­ет интерфейс в сти­ле GitHub. Здесь мож­но зарегис­три­ровать­ся, что мы незамед­литель­но сде­лаем.

Стартовая страница пользователей после авторизации
Стар­товая стра­ница поль­зовате­лей пос­ле авто­риза­ции

Пос­ле это­го нам ста­новит­ся дос­тупно некото­рое количес­тво про­ектов. Мы можем поис­кать в исходных кодах кри­тичес­кие дан­ные вро­де сек­ретов, паролей и про­чих инте­рес­ностей. Так­же мы можем получить име­на поль­зовате­лей Git.

Пользователи системы GitBucket
Поль­зовате­ли сис­темы GitBucket

За­пом­ним поль­зовате­лей и пой­дем по поряд­ку прос­матри­вать репози­тории. Так, в репози­тории мар­кета мы най­дем спи­сок дел, где сре­ди про­чего зап­ланиро­вана сме­на кон­фигура­ции Apache Tomcat.

Описание репозитория
Опи­сание репози­тория

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

http://seal.htb:8080/root/seal_market/commit/ac210325afd2f6ae17cce84a8aa42805ce5fd010

В нем мы най­дем файл кон­фигура­ции Tomcat и необ­ходимый для авто­риза­ции пароль.

Пароль в файле конфигурации Tomcat
Па­роль в фай­ле кон­фигура­ции Tomcat

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

 

Точка входа

На сай­те у нас воз­можнос­тей нем­ного, поэто­му поищем скры­тые стра­ницы перебо­ром. Я буду исполь­зовать ути­литу ffuf и сло­варь из набора Seclists.

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

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

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

  • -w — сло­варь (исполь­зуем directory-list-2.3-medium);
  • -t — количес­тво потоков;
  • -u — URL;
  • -fc — исклю­чить из резуль­тата отве­ты с кодом 403.

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

ffuf -w ../wordlists/_to_check/directory-list-2.3-medium.txt -u https://seal.htb/FUZZ -fc 403 -t 200
Результат сканирования каталогов с помощью ffuf
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

Все най­ден­ные стра­ницы выпол­няют редирект в соот­ветс­тву­ющий каталог. Но нам инте­рес­ны толь­ко две: admin и manager.

Ответ сервера при доступе к каталогу /admin/
От­вет сер­вера при дос­тупе к катало­гу /admin/

При обра­щении к катало­гу /admin/ нам вер­нут ошиб­ку 404, отку­да мы узна­ем, что на сер­вере работа­ет Apache Tomcat 9.0.31. При этом стра­ница /manager выпол­нит редирект в каталог /manager/, отку­да нас сно­ва перенап­равля­ет на /manager/html. Пос­ледняя же вер­нет код 403 — это озна­чает, что у нас недос­таточ­но прав для дос­тупа к стра­нице. Что­бы рас­ширить свою область зна­ний о сай­те, пов­торим ска­ниро­вание дирек­торий, но уже в катало­ге /manager/.

ffuf -w ../wordlists/_to_check/directory-list-2.3-medium.txt -u https://seal.htb/manager/FUZZ -fc 403 -t 200
Результат сканирования каталогов с помощью ffuf
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

От­кры­ваем для себя две новые стра­ницы: text и status. Ответ 401 озна­чает, что тре­бует­ся HTTP-авто­риза­ция. У нас уже есть имя поль­зовате­ля и пароль из кон­фига Apache Tomcat, поэто­му без проб­лем про­ходим авто­риза­цию. Нас встре­тит панель Server Status Apache Tomcat.

Страница Apache Tomcat Server Status
Стра­ница Apache Tomcat Server Status

Этот матери­ал ничего нам не дает, поэто­му сто­ит поп­робовать про­бить­ся к зак­рытым для нас фун­кци­ям.

 

Точка опоры

 

Обход 403 Forbidden

Есть мно­го рекомен­даций, как обой­ти ответ 403 (дос­туп зап­рещен), сре­ди которых исполь­зование ред­ких методов зап­роса (вмес­то обыч­ных GET и POST), раз­ных заголов­ков HTTP и спе­циаль­ных путей к целевой стра­нице. На все эти слу­чаи у меня есть свои сло­вари, соб­ранные из интерне­та и объ­еди­нен­ные в один. Поэто­му я буду исполь­зовать Burp Intruder для перебо­ра раз­ных вари­антов.

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

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

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

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

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


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

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

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии