В этом рай­тапе я покажу, как искать и экс­плу­ати­ровать уяз­вимос­ти use after free и path hijacking для повыше­ния прав в сис­теме. А для начала заюзаем SSRF для отправ­ки фишин­говой ссыл­ки с вре­донос­ным мак­росом, что­бы про­ник­нуть на хост.

А поможет нам в этом тре­ниро­воч­ная машина Gofer с пло­щад­ки Hack The Box. Уро­вень ее — слож­ный.

warning

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

 

Разведка

 

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

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

10.10.11.225 gofer.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.4p1;
  • 80 — веб‑сер­вер Apache 2.4.56;
  • 139 и 445 — служ­ба Samba 4.6.2.

Так­же мы узна­ём, что филь­тру­ется под­клю­чение к пор­ту 25, по которо­му работа­ет служ­ба SMTP.

Пер­вым делом про­верим SMB, в отли­чие от веба этот про­токол не пот­ребу­ет мно­го вре­мени для ана­лиза.

enum4linux -a gofer.htb
Результат сканирования службы Samba
Ре­зуль­тат ска­ниро­вания служ­бы Samba

В выводе боль­ше все­го инте­ресен спи­сок общих ресур­сов SMB. К некото­рым катало­гам мы можем получить дос­туп без исполь­зования учет­ных дан­ных.

 

Точка входа

Под­клю­чаем­ся к SMB-ресур­су, где мы находим каталог backup, а в нем сох­ранен­ное сооб­щение.

smbclient //gofer.htb/shares
Содержимое общего ресурса
Со­дер­жимое обще­го ресур­са

Ска­чива­ем сооб­щение и чита­ем. Там говорит­ся о поль­зовате­ле, который перехо­дит по всем фишин­говым ссыл­кам, поэто­му поч­та теперь работа­ет толь­ко для внут­ренних поль­зовате­лей. При этом теперь будут откры­вать­ся толь­ко докумен­ты ODT.

Содержимое файла mail
Со­дер­жимое фай­ла mail

Уч­тем это на будущее и перей­дем к сай­ту.

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

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

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

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

При запус­ке ука­зыва­ем сле­дующие парамет­ры:

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

За­даем нуж­ные парамет­ры и запус­каем ска­нер:

feroxbuster -u http://gofer.htb/ -t 256 -d 1 -w directory_2.3_medium_lowercase.txt
Результат сканирования каталогов с помощью feroxbuster
Ре­зуль­тат ска­ниро­вания катало­гов с помощью feroxbuster

Но­вых фай­лов и катало­гов не обна­ружи­ли, поэто­му перехо­дим к сле­дующе­му шагу — ска­ниро­ванию под­доменов. Делать это будем с помощью ffuf. Парамет­ры те же, что у feroxbuster, но добавят­ся еще два:

  • -H — HTTP-заголо­вок;
  • -fc — филь­тр по коду отве­та.
ffuf -u http://gofer.htb -H 'Host:FUZZ.gofer.htb' -w subdomains-bitquark-top100000.txt -fc 400,301
Результат сканирования поддоменов
Ре­зуль­тат ска­ниро­вания под­доменов

До­бав­ляем най­ден­ный под­домен в файл /etc/hosts и про­веря­ем новый сайт. Там нас встре­чает HTTP-аутен­тифика­ция.

10.10.11.225 gofer.htb proxy.gofer.htb
Запрос учетных данных
Зап­рос учет­ных дан­ных
 

HTTP auth bypass

Есть нес­коль­ко спо­собов обхо­да неп­равиль­но нас­тро­енной HTTP-аутен­тифика­ции. Самый прос­той и быс­трый — сме­на метода зап­роса с GET на POST (либо PUT).

GET-запрос в Burp Repeater
GET-зап­рос в Burp Repeater

В Burp Repeater лег­ко это сде­лать, дос­таточ­но выб­рать нуж­ный пункт в кон­текс­тном меню.

POST-запрос в Burp Repeater
POST-зап­рос в Burp Repeater

И при POST-зап­росе получа­ем уже дру­гой ответ.

 

Точка опоры

В получен­ном отве­те нам сооб­щают, что в URL не хва­тает парамет­ра. Мож­но переб­рать парамет­ры по сло­варю и най­ти такой ответ сер­вера, который, воз­можно, будет отли­чать­ся от основной мас­сы. Для перебо­ра я исполь­зую Burp Intruder.

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

Что­бы в таб­лице резуль­татов отоб­ражал­ся ответ сер­вера, перей­дем к вклад­ке Settings, выберем опцию Grep → Extract и ука­жем инте­ресу­ющую нас позицию.

Burp Intruder — вкладка Settings
Burp Intruder — вклад­ка Settings
Burp Intruder — результат атаки
Burp Intruder — резуль­тат ата­ки

Та­ким обра­зом обна­ружи­ваем параметр url.

 

SSRF

Так как мы дол­жны передать URL, мож­но пред­положить, что сер­вис выпол­нит зап­рос на него. Для тес­та запус­тим веб‑сер­вер:

python3 -m http.server 80

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

Логи веб-сервера
Ло­ги веб‑сер­вера
Результат выполнения запроса
Ре­зуль­тат выпол­нения зап­роса

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

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

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

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

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


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

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

    Подписаться

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