HTB Hancliffe. Разбираем технику Socket Reuse

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

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • Продвижение
  • Смена контекста
  • Локальное повышение привилегий
  • Reverse Engineering
  • Buffer overflow
  • Socket Reuse

В этой статье я покажу про­хож­дение хар­довой по слож­ности машины под наз­вани­ем Hancliffe. На этот раз мы не толь­ко най­дем и модер­низиру­ем готовые экс­пло­иты, но и напишем свой, который поможет получить управле­ние в при­виле­гиро­ван­ном кон­тек­сте.

warning

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

 

Разведка

 

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

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

10.10.11.115 hancliffe.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).

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

Ви­дим три откры­тых пор­та, при­чем за все три отве­чает веб‑сер­вер Nginx 1.21.0. Но на пор­тах 80 и 8000 рас­положе­ны сай­ты, поэто­му нач­нем с них.

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

Глав­ная стра­ница hancliffe.htb:8000

Так мы получа­ем информа­цион­ную стра­ницу Nginx на пор­те 80 и стра­ницу авто­риза­ции Stateless Password Manager на пор­те 8000. Со вто­рым сай­том все более‑менее понят­но, а вот на пер­вом явно может най­тись что‑то, помимо информа­цион­ной стра­нич­ки. Давай поищем! Для перебо­ра катало­гов я буду исполь­зовать ути­литу ffuf.

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

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

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

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

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

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

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

В ито­ге находим один новый каталог, при зап­росе которо­го нам воз­вра­щают код отве­та 302 — редирект на дру­гой адрес. Если открыть этот адрес в бра­узе­ре, нас перенап­равят на /nuxeo/Maintenance.

Стра­ница /Maintenance/

Та­кой стра­ницы не сущес­тву­ет, поэто­му про­дол­жим искать катало­ги и фай­лы в /maintenance/.

ffuf -u http://hancliffe.htb/maintenance/FUZZ -t 256 -w files_interesting.txt

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

Ви­дим мно­го пос­ледова­тель­нос­тей, на которые сер­вер стран­но реаги­рует, а так­же файл index.jsp.

Стра­ница /Maintenance/index.jsp 

Точка входа

Тут я решил про­верить раз­ные вари­анты обхо­да про­вер­ки дос­тупа к катало­гу. Для перебо­ра пос­ледова­тель­нос­тей исполь­зовал Burp Pro. В резуль­тате уда­лось получить три воз­можных вари­анта отве­та от сер­вера.

  • Дос­туп к стра­нице Apache Tomcat.

    Отоб­ражение стра­ницы в Burp Render

  • От­вет, сооб­щающий, что стра­ницы не сущес­тву­ет.

    Отоб­ражение стра­ницы в Burp Render

  • Пе­реад­ресацию на дру­гой адрес при помощи HTTP-заголов­ка Location.

    Отоб­ражение стра­ницы в Burp Render

  • Пос­ледний вари­ант меня заин­тересо­вал. Я поп­робовал еще раз переб­рать фай­лы, но с пос­ледова­тель­ностью /..;/ для обхо­да кон­тро­ля дос­тупа.

    ffuf -u 'http://hancliffe.htb/maintenance/..;/FUZZ' -t 256 -w files_interesting.txt

    Ре­зуль­тат перебо­ра катало­гов

    Из получен­ного спис­ка наиболь­ший инте­рес вызыва­ет стра­ница login.jsp.

    Стра­ница /maintenance/..;/login.jsp 

    Точка опоры

    В самом низу стра­ницы видим упо­мина­ние исполь­зуемой тех­нологии — nuxeo 10.2. Это зна­чит, что мож­но поис­кать готовые экс­пло­иты. Есть спе­циали­зиро­ван­ные базы дан­ных вро­де Exploit-DB, но куда боль­ше резуль­татов даст Google.

    По­иск «nuxeo 10.2 exploit»

    На­ходим ссыл­ку на ре­пози­торий с PoC для уяз­вимос­ти CVE-2019-16341. Это баг типа SSTI — вклю­чение шаб­лонов на сто­роне сер­вера. Потен­циаль­но он может дать нам воз­можность выпол­нять про­изволь­ный код на сер­вере. Но сна­чала нем­ного под­пра­вим PoC под наши усло­вия. Нач­нем с исполь­зуемой на сер­вере опе­раци­онной сис­темы (стро­ки 16 и 17).

    Ис­прав­ленный код экс­пло­ита

    Ука­зыва­ем нуж­ный URL (стро­ки 38 и 123).

    Ис­прав­ленный код экс­пло­ита

    Ис­прав­ленный код экс­пло­ита

    Вро­де бы все готово, запус­тим скрипт и зап­росим текуще­го поль­зовате­ля.

    Экс­плу­ата­ция уяз­вимос­ти

    Код успешно выпол­нен, и мы получа­ем нор­маль­ный реверс‑шелл. Мож­но вос­поль­зовать­ся удоб­ным он­лай­новым генера­тором шел­лов. Выс­тавля­ем свой локаль­ный адрес и порт, в ответ получа­ем коман­ду для запус­ка лис­тенера и бэк­конек­та.

    Он­лайн‑генера­тор шелл‑кода

    Вы­пол­няем код через экс­пло­ит и получа­ем обратное под­клю­чение.

    Вы­пол­нение кода на PowerShell

    По­луче­ние бэк­коннек­та

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

    Ответить

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