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.