В этом рай­тапе мы про­ведем MITM-ата­ку на служ­бу SSH, что­бы заполу­чить логин и пароль поль­зовате­ля. Но сна­чала попен­тестим веб‑сер­вер, най­дем уяз­вимость LFI и, про­ник­нув в сис­тему, повысим при­виле­гии через анти­вирус ClamAV.

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

warning

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

 

Разведка

 

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

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

10.10.11.212 snoopy.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.9p1;
  • 53 — служ­ба BIND DNS;
  • 80 — веб‑сер­вер Nginx 1.18.0.

На SSH ничего не добь­емся, а вот быс­тро про­верить DNS мы можем.

dig @snoopy.htb
Результат выполнения команды dig
Ре­зуль­тат выпол­нения коман­ды dig

Но­вых записей DNS обна­ружить не уда­лось, поэто­му сме­ло перехо­дим к веб‑сер­веру, а точ­нее — к сай­ту, который на нем рас­положен.

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

На­ходим упо­мина­ние нес­коль­ких поль­зовате­лей, которые потен­циаль­но могут иметь учет­ную запись как на самом сай­те, так и на сер­вере.

Имена пользователей на сайте
Име­на поль­зовате­лей на сай­те

Так­же натыка­емся на сооб­щение о том, что поч­товый сер­вис mail.snoopy.htb в дан­ный момент недос­тупен.

Содержимое страницы contact.html
Со­дер­жимое стра­ницы contact.html
 

Точка входа

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

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

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

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

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

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

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

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

В вывод ути­литы попада­ют абсо­лют­но все сло­ва из сло­варя, поэто­му сле­дует допол­нитель­но ука­зать филь­тр по раз­меру стра­ницы (параметр -fs).

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

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

10.10.11.212 snoopy.htb mm.snoopy.htb
Главная страница mm.snoopy.htb
Глав­ная стра­ница mm.snoopy.htb

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

Скачанный файл в Burp Proxy
Ска­чан­ный файл в Burp Proxy

Burp сра­зу под­све­чива­ет мес­та, которые могут быть уяз­вимы для LFI, поэто­му тща­тель­но про­верим этот зап­рос. Закиды­ваем его в Burp Intruder и про­гоня­ем по спис­ку с раз­ными вари­анта­ми под­ста­нов­ки.

Burp Intruder — вкладка Positions
Burp Intruder — вклад­ка Positions
Burp Intruder — результат перебора
Burp Intruder — резуль­тат перебо­ра

Мы находим такой путь к фай­лу, который воз­вра­щает тот же ответ, что осталь­ные вари­анты. Пов­торя­ем зап­рос через curl и про­буем ска­чать файл /etc/passwd.

curl 'http://snoopy.htb/download?file=....//....//....//....//....//....//....//....//etc/passwd' -o f.zip
unzip f.zip
cat press_package/etc/passwd
Получение файла /etc/passwd
По­луче­ние фай­ла /etc/passwd

По­луча­ем файл, а зна­чит, уяз­вимость есть.

 

Точка опоры

 

NS update

Пер­вым делом я подумал, что бла­года­ря LFI мы можем получить важ­ные дан­ные для под­клю­чения к служ­бе BIND DNS. Далее для нерабо­тающе­го домена соз­дадим NS-запись, ука­зыва­ющую на наш сер­вер. Затем раз­вернем служ­бу SMTP и поп­робу­ем вос­ста­новить пароль от Mattermost, что­бы он при­шел на поч­ту. Это зас­тавит уда­лен­ный сер­вер прис­лать ссыл­ку для вос­ста­нов­ления пароля на наш сер­вер.

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

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

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

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

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


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

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

    Подписаться

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