Хакер - HTB Shoppy. Повышаем привилегии через группу Docker

Хакер - HTB Shoppy. Повышаем привилегии через группу Docker

hacker_frei

https://t.me/hacker_frei

RalfHacker

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

  • Разведка
  • Сканирование портов
  • Точка входа
  • Точка опоры
  • Продвижение
  • Локальное повышение привилегий

В этом рай­тапе я покажу раз­ные тех­ники ска­ниро­вания веб‑сай­та, затем про­экс­плу­ати­руем инъ­екцию NoSQL, что­бы обой­ти авто­риза­цию. Под конец про­хож­дения раз­берем­ся с поль­зователь­ским менед­жером паролей и повысим при­виле­гии через груп­пу Docker.

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

WARNING

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

РАЗВЕДКА

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

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


10.10.11.180 shoppy.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 — веб‑сер­вер Nginx 1.23.1. Естес­твен­но, начина­ем с веб‑сер­вера.

Глав­ная стра­ница сай­та http://shoppy/

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

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

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

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

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

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

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

Так получа­ем стра­ницу авто­риза­ции, с которой мы, ско­рее все­го, и нач­нем наше тес­тирова­ние сай­та.

Стра­ница авто­риза­ции http://shoppy/login

Не забыва­ем прос­каниро­вать и под­домены, исполь­зовать мож­но все тот же ffuf. В этот раз будем переби­рать заголо­вок Host (параметр -H). Но в ответ попадут абсо­лют­но все вари­анты, поэто­му отфиль­тру­ем вари­анты по раз­меру.

ffuf -u 'http://shoppy.htb/' -H 'Host: FUZZ.shoppy.htb' -w bitquark-subdomains-top100000.txt -t 256 -f

s 169

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

На­ходим еще один сайт и добав­ляем его в /etc/hosts:

10.10.11.180 shoppy.htb mattermost.shoppy.htb

Стра­ница авто­риза­ции http://mattermost.shoppy/

ТОЧКА ВХОДА

Так как по адре­су mattermost.shoppy.htb рас­положен готовый про­дукт, а на shoppy.htb — самопис­ный сер­вис, нач­нем со вто­рого. Пер­вым делом я решил переб­рать по сло­варю раз­ные наг­рузки для обхо­да авто­риза­ции — от учет­ных дан­ных admin:admin до инъ­екций SQL и LDAP. Делать такие перебо­ры удоб­нее все­го с помощью Burp Intruder.

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

В резуль­татах перебо­ра видим мно­го отве­тов, раз­мер которых равен 318 бай­там, но есть и выбива­ющиеся из обще­го спис­ка. При этом в самом отве­те нам выда­ют cookie и отправ­ляют на стра­ницу /admin.

Burp Intruder — резуль­тат перебо­ра

Об­наружи­ваем, что наг­рузка '||2||' в поле логина экс­плу­ати­рует NoSQL-инъ­екцию, что помога­ет обой­ти авто­риза­цию.

Ад­минис­тра­тив­ная панель сай­та

В вер­хнем углу видим кноп­ку поис­ка. Ско­рее все­го, это и даст нам даль­нейший век­тор ата­ки. Перехо­дим к поис­ку и вво­дим любую ком­бинацию.

Фор­ма поис­ка поль­зовате­лей

Тут боль­ше все­го прив­лека­ет вни­мание URL:

http://shoppy.htb/admin/search-users?username=qwe

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

ТОЧКА ОПОРЫ

Для перебо­ра сно­ва исполь­зуем Burp Intruder. А сло­варь для перебо­ра имен берем из зна­мени­того набора сло­варей SecLists.

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

В ито­ге получа­ем два дос­тупных логина: admin и john. Пер­вый мы уже зна­ли и до это­го, но он нам ничего не дал, поэто­му в бра­узе­ре вби­ваем вто­рого поль­зовате­ля и получа­ем ссыл­ку на экспорт каких‑то дан­ных:

http://shoppy.htb/exports/export-search.json

Дан­ные поль­зовате­ля john

Па­роль похож на хеш MD5, поэто­му вос­поль­зуем­ся сай­том CrackStation для поис­ка про­обра­за.

Ре­зуль­тат взло­ма хеша

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

Глав­ная панель Mattermost

В ито­ге в одном из чатов нам уда­лось най­ти учет­ные дан­ные для под­клю­чения к какой‑то машине.

Чат Deploy Machine

С най­ден­ными учет­ными дан­ными под­клю­чаем­ся к хос­ту и забира­ем пер­вый флаг.

Флаг поль­зовате­ля

ПРОДВИЖЕНИЕ

Скрипт PEASS для Linux ничего не показал, кро­ме того, что для про­вер­ки sudoers нуж­но ввес­ти пароль поль­зовате­ля. Поэто­му про­веря­ем в руч­ном режиме.

sudo -l

Нас­трой­ки sudoers

Та­ким обра­зом, мы можем выпол­нить при­ложе­ние /home/deploy/password-manager от име­ни поль­зовате­ля deploy без вво­да пароля. Это исполня­емый ELF-файл.

Вы­вод ути­литы file

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

scp jaeger@10.10.11.180:/home/deploy/password-manager ./

Я, как всег­да, исполь­зую IDA Pro с Hex-Rays. Прог­рамма, по всей видимос­ти, написа­на на C++. Сра­зу в глав­ной фун­кции находим пароль от прог­раммы — Sample. Вот такой пло­хой менед­жер паролей (ну и машина лег­кая, для нович­ков).

Псев­докод фун­кции main

Вво­дим най­ден­ный пароль в менед­жер и получа­ем учет­ные дан­ные дру­гого поль­зовате­ля.

sudo -u deploy /home/deploy/password-manager

По­луче­ние новых учет­ных дан­ных

Ло­каль­но меня­ем поль­зовате­ля с помощью su.

Сес­сия поль­зовате­ля deploy

ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ

Сно­ва про­водить раз­ведку нет смыс­ла, так как всю информа­цию мы уже соб­рали. Но пос­ле выпол­нения коман­ды id обра­тим вни­мание, что мы сос­тоим в груп­пе docker, а это дает нам пра­во его запус­кать. В слу­чаях, ког­да нам раз­решено запус­кать фай­лы, для запус­ка которых в обыч­ной сре­де нуж­ны при­виле­гии, я обра­щаюсь к базе GTFOBins.

GTFOBins — это спи­сок исполня­емых фай­лов Unix, которые мож­но исполь­зовать для обхо­да локаль­ных огра­ниче­ний безопас­ности в неп­равиль­но нас­тро­енных сис­темах. Про­ект собира­ет закон­ные фун­кции дво­ичных фай­лов Unix, которы­ми мож­но зло­упот­реблять, что­бы получить дос­туп к коман­дным обо­лоч­кам, повысить при­виле­гии или передать фай­лы.

На­ходим готовый рецепт для Docker и исполь­зуем его.

Инс­трук­ция получе­ния управле­ния с помощью фай­ла Docker

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

Флаг рута

Ма­шина зах­вачена!

Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei



Report Page