HA: Narak: пошаговое руководство Vulnhub

В этой статье говорится о том, как получить доступ к уязвимой машине под названием HA: Narak. Читатели узнают, как осуществить захват флага и повысить свои привилегии в чужой системе.
Скачать упомянутую выше лабораторию можно, перейдя по этой ссылке.
Сканирование сети
Чтобы атаковать любую машину, нужно установить ее IP-адрес. Это можно сделать с помощью команды net discover. Чтобы определить IP-адрес, пользователю следует откопать MAC-адрес машины, который может быть получен из файла конфигурации. Таким образом IP-адрес машины и был установлен. Это 192.168.0.136.

После сканирования net discover пользователю потребуется провести сканирование Nmap, чтобы получить подробную информацию о службах, запущенных на виртуальной машине. Сканирование Nmap показывает, что в приложении запущены 2 службы: SSH (22) и HTTP (80).
nmap -A 192.168.0.136

Перечисление
Поскольку пользователь уже знает данные службы HTTP, работающей на виртуальной машине, необходимо обратиться к размещенной на ней веб-странице.
http://192.168.0.136

Это обычная веб-страница с впечатляющими изображениями ада. Поскольку никаких подсказок для дальнейших действий здесь найдено не было, пользователь запускает еще одно перечисление. Время провести Directory Bruteforce. Всего за несколько секунд dirb говорит пользователю о каталоге /webdav.
dirb http://192.168.0.136/

Пользователь открывает каталог WebDAV в своем веб-браузере, чтобы запустить панель аутентификации. Поскольку у него нет никаких данных, продолжать дальше бессмысленно. Брутфорс, который не принес никакой полезной информации, также не спасает ситуацию. Однако к этому стоит вернуться чуть попозже. Возможно, он еще сыграет свою роль.

Пользователь не нашел никаких новых каталогов при обычном сканировании dirb. Он попробовал активировать расширение фильтра dirb scan. Он также включил и кучу других расширений и получил новый файл в формате .txt. Обнаружен файл tips.txt. Следует взглянуть на то, что он содержит.
dirb http://192.168.0.136/ -X .txt

Тут становится понятно, что добраться к Narak можно с помощью creds.txt. Это еще один текстовый файл. Нужно попробовать найти его.
http://192.168.0.136/tips.txt

Поскольку каталог bruteforce больше не давал пользователю никаких подсказок относительно creds.txt, человек вернулся к сканированию порта. На этот раз он попробовал провести UDP-сканирование. Так пользователь узнал о порте номер 69. Служба запущена на TFP.
nmap -sU -p69 192.168.0.136

Пользователь получает доступ к сервису TFTP и видит, что там есть creds.txt, о котором говорилось ранее. Он содержит какой-то закодированный текст. Похоже на Base64. Стоит расшифровать его. После расшифровки пользователь обнаружил, что файл содержит учетные данные. Прекрасно!
tftp 192.168.0.136
get creds.txt
echo "eWFtZG9vdDpTd2FyZw==" | base64 -d

Применение полученной информации
У пользователь есть каталог /webdav для доступа к учетным данным. Он перечислил его и обнаружил, что WebDAV используется для загрузки и выгрузки файлов на сервере Аpache. Быстрый поиск поможет пользователю узнать о том, что этот сервер страдает от уязвимости PUT. Пользователь решает воспользоваться этой уязвимостью и получить Shell машины. Для этого он использовал инструмент Сadaver. После успешного ввода учетных данных пользователь загружает обратный Shell PHP на целевую машину.
cadaver http://192.168.0.136/webdav
put /root/shell.php

Теперь, когда пользователь успешно загрузил Shell PHP на целевую машину, он создает листенер, нацеленный на порт, который находится в локальной системе. Это поможет ему захватить сеанс, который будет создан после выполнения загруженного файла. В браузере после ввода учетных данных пользователь может увидеть загруженный Shell.
nc -lvp 1234

Дальнейшие действия
Когда человек нажимает на Shell PHP, полезная нагрузка пользователя начинает выполняться, и он получает свой сеанс на целевой машине. Можно использовать Рython Оne-liner для преобразования Shell PHP в Shell TTY. После получения TTY пользователь будет активно работать над повышением привилегий в сеансе, который он только что запустил. Человек проверяет разрешения SUID и обнаруживает, что существует пользовательский скрипт с именем hell.sh. Нужно взглянуть на него. Он зашифрован. Похоже, что это шифрование brainfuck.
find / -type f -perm -ug=rwx 2>/dev/null
cat /mnt/hell.sh

Пользователь расшифровывает скрипт и находит слово «chitragupt».

Прежде чем двигаться дальше, нужно потратить некоторое время на поиски флага пользователя, так как этот флаг будет находиться в одном из домашних каталогов. Пора начать искать всех пользователей, зарегистрированных на этой машине. Есть 3 пользователя по имени inferno, Narak и Yamdoot. Похоже, что Yamdoot является пользователем TFPT. Человек не смог получить доступ к каталогу Narak, что означает, что это пользователь с высокими привилегиями. Пользователь перечислил данные юзера inferno и обнаружил его флаг.
cd /home
ls
cd inferno
ls -la
cat user.txt

Повышение привилегий
Ранее было замечено, что есть специальные разрешения для файла motd. Это означает, что нужно проложить свой путь к root, используя эскалацию привилегий motd. Поскольку пользователь уже нашел ключевое слово «chitragupt», он использовал его как пароль и вошел в сеанс SSH как пользователь inferno.
Username: inferno
Password: chitragupt
Теперь пользователь знает, что для повышения привилегий, нужно добавить редактор nano в файл motd. Человек использовал команду echo, чтобы осуществить задуманный план. Это четко видно на картинке ниже.
ssh inferno@192.168.0.136
which nano
ls -la /bin/nano
echo "sudo chmod u+s /bin/nano" >> /etc/update-motd.d/00-header

Пользователь уже знает, что для выполнения файлов motd нужно выйти из текущего сеанса SSH и снова подключиться. После завершения этих действий человек проверяет, есть ли у nano binary теперь привилегии, которые ему необходимы. Он будет использовать nano для редактирования файла /etc/passwd и создаст себе нового пользователя, обладающего правами root.
ssh inferno@192.168.0.136
ls -al /bin/nano
nano /etc/passwd

Чтобы добавить пользователя, понадобится хэш пароля. Он может быть сгенерирован с помощью команды OpenSSL.
openssl passwd -1 -salt user3 pass123

Теперь был создан пользователь по имени Jeenali, ему предоставлены привилегии root и добавлен хэш, который пользователь сгенерировал ранее. Это четко видно на картинке ниже.

Все, что осталось, — это войти в систему как новый пользователь Jeenali и просмотреть флаг root.
tail -n 3 /etc/passwd
su jeenali
cd /root
ls
cat root.txt

Автор переведенной статьи: Pavandeep Singh.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.



