ПРОХОЖДЕНИЕ ЛЕГКОЙ МАШИНЫ В HACK THE BOX
Итак, сегодня я расскажу немного про то, чем занять томный вечер, если все вокруго настопиз надоело
На просторах интернета существуют замечательные и веселые платформы, позволящие осваивать самые разные навыки. Наверное, многие, кто меня тут знают в курсе, но я сильно угораю по пентесту. А потому решила подвезти немного контента про то, как просто и легально можно учиться и проверять свою способность что-нибудь поломать.
Самой популярной площадкой для обучения и тренировки пентестеров является HackTheBox, также известная как HTB. На самом деле, поломанные машины оттуда даже смотрят на ссобеседованиях. Орагнизовано все таким образом, что ты залетаешь за сайт hackthebox.com, заходишь в специальный раздел и выбираешь, какую машину попытаешься взломать. Машины - это заранее уязвимые виртуальные машины, для подключения к которым надо подключиться к сети HTB с помощью конфига .ovpn. Взлом считается засчитаным, если найти все требуемые "флаги" (Флаг - это набор символом в 16-ричном формате, который можно найти на уязвимых VM. Они находятся либо на сайте, либо в текстовых файлах, но доступны всегда только после эксплуатации тех уязвимостей, которые заложены в VM). Также каждая VM делится по "рангу". Легкие - для новичков, Сложные - для опытных ломакеров.
Думаю. что краткого вступления достаточно. Ниже описание того, как можно проходить такие машины. Подобные уязвимости встречаются или встречались когда-то в реальной жизни. Я брала легкую машину, такая дыра в безопасности очень вряд ли встретится в реальных условиях, однако, в любом случае полезно как минимум поучиться пользоваться утилитами повышения привилегий, сканирования сетей и пр.
Итак, когда доступ к "жертве" получен, можно начинать.
Начинаем с разведки
Сканируем порты простой командой в специальной утилите nmap:
Видим, что открыты три порта. 22-й порт используется для удаленного подключения по ssh, 21-й – для удаленного доступа к файловой системе по протоколу ftp, а на 80-м порту, скорее всего развернуто какое-то веб-приложений.
В поисковой строке вбиваем ip-адрес target машины и действительно, попадаем в какой -то веб-интерфейс:
Исследуем веб-панель и находим пункт Security Snapshot, на котором, вероятно, можно найти что-то полезное. В поисковой строке отображается id снапшота. Можно попробовать его поменять на 1 или 0.
Смена id показывает самый первый снапшот, в котором есть какие-то данные, а также возможность скачать файл.
Загружаем .pcap файл, который можно открыть с помощью сетевой утилиты wireshark, которая используется для анализа трафика. В файле трафик не зашифрован
Путем нехитрого анализа находим логин и пароль пользователя Nathan.
Пробуем получить с ними доступ по ssh:
Получилось войти в консоль target-машины, а также заполучить первый флаг, обнаружив в файловой системе user.txt
Чтобы получить второй флаг, скорее всего, необходимо повысить привилегии до суперпользователя.
Для этого необходимо загрузить утилиту linpeas.sh, которая используется для обнаружения уязвимостей в ОС семейства Linux. Чтобы передать linpeas.sh на target-машину можно использовать либо протокол ftp, либо запустить сервер на атакующей VM:
python3 -m http.server 8000
Смотрим ip атакующей машины. Нас интересует интерфейс tun0:
ip a
Теперь можно передать linpeas.sh на target-машину:
Теперь можно запустить утилиту, предварительно дав разрешение на выполнение:
nathan@cap:~$ chmod +x linpeas.sh
nathan@cap:~$ ./linpeas.sh
В Readme утилиты указано, что строки с оранжевым фоном наиболее интересны, а потому не тратим время на анализ остальных результатов и сразу ищем именно их:
Оп-пааа, чиназес:
Найденная уязвимость говорит о том, что есть возможность менять UID, не являясь суперпользователем. И таким образом как раз повысить привилегии и стать суперпользователем, поменяв UID на 0.
Делаем это командой:
/usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'
Теперь можем получить второй флаг:
cat /root/root.txt
Рекомендации по исправлению:
Лучше всего никогда не давать capabilities бинарникам, которым это не нужно.
Проверить, есть ли сейчас эта уязвимость:
getcap -r / 2>/dev/null
если есть, удалить:
sudo setcap -r /usr/bin/python3.8
Вместо capabilities лучше использовать sudoers с нужными ограничениями.
Также на машине есть еще несколько очевидных проблем:
- Анонимный или легко подбираемый доступ через FTP.
- Необходимо отключить анонимный доступ в /etc/vsftpd.conf
- Также Файлы .pcap с credentials хранятся в открытом виде. Такие файлы в принципе нельзя хранить в веб-директориях. Также необходимо шифровать трафик, использовать https протоколы.
Рекомендуемые комментарии