Методы проникновения в линуксовые системы (часть 2):

H

Hackers Academy

Original poster
Методы проникновения в линуксовые системы (часть 2):
В этой статье мы рассмотрим сценарий атаки на небезопасные NFS экспорты и конфигурации флага setuid для получения шелла в Линуксе с правами суперпользователя.

Методы проникновения в линуксовые системы (часть 2):, изображение №1



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

Что такое NFS
NFS (Network File System; Сетевая файловая система) представляет собой протокол, не использующий шифрования, для передачи файлов между системами. В чем же проблема? Примерно в половине случаев во время пентестов внутренних сетей мы находим NFS-сервера с небезопасными настройками, когда доступен неавторизированный доступ к конфиденциальной информации, что в некоторых случаях позволяет получить полноценный шелл в системе. Уровень доступа во многом зависит от конфигурации NFS.

Для удаленного доступа к директориям, совместно используемым через NFS-экспорты, требуется два условия: права доступа для монтирования и для файлов.

  1. Права доступа для монтирования могут быть ограничены по имени хоста или IP-адресу в файле /etc/exports, однако во многих случаях никакие ограничения не используются. Важно отметить, что IP-адрес и имена хостов легко сымитировать (если вы знаете, что имитировать).
  2. Файловый доступ также можно настроить через экспорты в /etc/exports, когда указываем пометки на чтение/запись. Затем доступ к файлам ограничивается по UID подключающегося пользователя, который легко подделать. Однако нужно отметить, что что есть методы защиты от этой угрозы, как, например, опция «root squashing», которая может быть активирована там же /etc/exports с целью запрета доступа с UID равным 0, соответствующего пользователю root.
Основная проблема NFS
Если возможно смонтировать NFS-экспорты, обычно UID можно подделать на клиенте для обхода ограничений, связанных с правами доступа к файлам, настроенными для каталога, доступного через NFS-экспорт. Кроме того, доступ может быть разрешен случайно, если UID файла и UID подключающегося пользователя совпадают.

Ниже показана схема возникновения непреднамеренного доступа:

  1. На сервере «Server 1» есть пользователь с именем «User1» (UID=1111).
  2. Пользователь User1 создает файл с именем «secret» и делает доступным только хозяину и пользователю root при помощи команды «chmod 600 secret».
  3. Затем на сервере «Server 1» создается NFS-экспорт с правами на чтение/запись без всяких ограничений по IP-адресу, который связан с каталогом, где находится файл «secret» пользователя User1.
  4. В другой клиентской системе с Линуксом есть пользователь «User2», у которого UID=1111. Когда пользователь «User2» смонтирует NFS-экспорт, находящийся на сервере «Server 1», то сможет читать секретный файл, поскольку имеет тот же UID, что и UID у владельца (user1) файла secret.
Ниже показана наглядная иллюстрация этого сценария.

Рисунок 1: Схема возникновения непредумышленного доступа



Рисунок 1: Схема возникновения непредумышленного доступа
Поиск NFS-серверов

NFS работает на UDP/TCP портах 111 и 2049 соответственно. Поиск открытых NFS-портов можно выполнить при помощи утилит навроде nmap.

nmap -sS -pT:2049,111,U:2049,111 192.168.1.0/24 -oA nfs_scan
grep -i "open" nfs_scan.gnmap
Рисунок 2: Поиск открытых NFS-портов



Рисунок 2: Поиск открытых NFS-портов
Текущие поддерживаемые версии NFS также можно определить при помощи nmap или rpcinfo, что пригодится нам в дальнейшем, поскольку мы хотим использовать версию 3 или ниже с целью просмотра и имитации UID хозяев файлов. В случае если опция «root squashing» включена, может быть требование для доступа к файлам.

Получение перечня поддерживаемых версий NFS при помощи Nmap:

nmap -sV -p111,2049 192.168.1.171
Получение перечня поддерживаемых версий NFS при помощи rpcinfo:

apt-get install nfs-client
rpcinfo -p 192.168.1.171
Рисунок 3: Перечень доступных версий NFS



Рисунок 3: Перечень доступных версий NFS
Ниже приводится видео, где показан процесс обнаружения NFS-сервера.


Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.



Перечень NFS-экспортов
Пришла очередь получить перечень доступных NFS-экспортов на удаленном сервере при помощи Metasploit или showmount.

Пример с Metasploit:

root@kali:~# msfconsole
msf > use auxiliary/scanner/nfs/nfsmount
msf auxiliary(nfsmount) > set rhosts 192.168.1.171
msf auxiliary(nfsmount) > run
Рисунок 4: Получение перечня доступных NFS-экспортов при помощи Metasploit



Рисунок 4: Получение перечня доступных NFS-экспортов при помощи Metasploit
Пример с showmount:

apt-get install samba
showmount -e 192.168.1.171
Рисунок 5: Получение перечня доступных NFS-экспортов при помощи showmount



Рисунок 5: Получение перечня доступных NFS-экспортов при помощи showmount
Монтирование NFS-экспортов

Переходим к монтированию доступных NFS-экспортов, работая от имени root. Не забудьте указать флаг «-o vers=3», чтобы быть уверенным, что вы можете просматривать UID’ы владельцев файлов. Ниже показаны опции для монтирования экспорта:

mkdir demo
mount -o vers=3 192.168.1.171:/home demo
mount -o vers=3 192.168.1.222:/home demo -o nolock

или

mount -t nfs -o vers=3 192.168.1.171:/home demo
или

mount -t nfs4 -o proto=tcp,port=2049 192.168.1.171:/home demo
Рисунок 6: Монтирование NFS-экспортов



Рисунок 6: Монтирование NFS-экспортовПросмотр UID’ов у каталогов и файлов в NFS-экспортах
Если у вас полный доступ ко всему, тогда функция «root squashing» возможно отключена. Однако если вы получаете сообщения об отказе в доступе, то нужно сымитировать UID владельца файла и перемонтировать NFS-экспорт для получения доступа (в этой статье эта техника не рассматривается).

Просмотр UID’ов на подключенном диске:

ls -an
Рисунок 7: Просмотр UID’ов непосредственно на подключенном диске



Рисунок 7: Просмотр UID’ов непосредственно на подключенном диске
Просмотр UID’ов при помощи nmap:

nmap --script=nfs-ls 192.168.1.171 -p 111
Рисунок 8: Просмотр UID’ов при помощи nmap



Рисунок 8: Просмотр UID’ов при помощи nmap
Поиск паролей и секретных ключей (получение непривилегированного доступа)

Предположим, что мы смогли получить доступ к NFS с правами root или другого пользователя. Пришло время поискать пароли и ключи для доступа к удаленному серверу. Секретные ключи обычно находятся в директориях /home/<user>/.ssh, а пароли, как правило, разбросаны повсюду.

Ищем файлы, в имени которых есть слово «password»:

cd demo
find ./ -name "*password*"
cat ./test/password.txt
Рисунок 9: Поиск файлов, имя которых содержит слово «password»



Рисунок 9: Поиск файлов, имя которых содержит слово «password»
Ищем секретные ключи в директориях .ssh:

mount 192.168.1.222:/ demo2/
cd demo2
find ./ -name "id_rsa"
cat ./root/.ssh/id_rsa
Рисунок 10: Поиск секретных ключей



Рисунок 10: Поиск секретных ключей
Ниже показано короткое видео, с демонстрацией процесса монтирования и поиска файлов:


Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.



Эксплуатация бинарных файлов с флагом Setuid (получение прав суперпользователя)
Как только у нас появился интерактивный шелл под именем пользователя с минимальными привилегиями (test), дальше есть множество путей по расширению полномочий. Однако в этот раз мы сосредоточимся на бинарных файлах с флагом setuid, который дает возможность запуска с правами владельца. Схожим образом, бинарные файлы с флагом setguid позволяют выполнение с правами группы, связанной с файлом. С точки зрения администратора у этой возможности есть как плюсы, так и минусы.

  • Хорошая новость: бинарные файлы с флагом setuid могут использоваться для безопасного запуска привилегированных команд, как, например, passwd.
  • Плохая новость: бинарные файлы с флагом setuid могут использоваться для расширения привилегий, если этими файлами владеет root, и позволено прямое выполнение произвольных команд или косвенное выполнение произвольных команд через плагины/модули.
Ниже показаны команды для поиска бинарных файлов с флагами setuid и setguid.

Поиск бинарных файлов с флагом setuid:

find / -perm -u=s -type f 2>/dev/null
Поиск бинарных файлов с флагом setguid:

find / -perm -g=s -type f 2>/dev/null
Ниже показан пример, который вы можете встретить во время пентеста.

Рисунок 11: Перечень файлов с флагом setuid



Рисунок 11: Перечень файлов с флагом setuid
Повторимся еще раз. Обычно наша цель – заставить бинарный файл выполнять произвольный код с правами root. В реальной жизни потребуется небольшое исследование или реверс-инжиниринг бинарных файлов с флагом setuid с целью разработки наилучшего способа для решения вышеупомянутой задачи. В нашем случае бинарный файл /home/test/exec позволяет напрямую выполнять команды операционной системы с правами суперпользователя. Исходный код примера можно скачать по ссылке

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

.

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

cd /home/test/
./exec
whoami
Рисунок 12: Пример выполнения команды с привилегиями суперпользователя



Рисунок 12: Пример выполнения команды с привилегиями суперпользователя
Как видно из рисунка выше, можно выполнять произвольные команды с правами суперпользователя без каких-либо проблем. Ниже показано видео, где демонстрируется использование файлов с флагом setuid.


Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.



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

С вами был ФСБ! Надеюсь тебе понравилась моя статья. Подписывайся на мой профиль UfoLabs и на мой телеграм канал

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Название темы
Автор Заголовок Раздел Ответы Дата
H Методы проникновения в линуксовые системы (часть 1): Rsync Корзина 0
N Интересно Методы манипуляции. 10 приемов. СИ/Фишинг/Мошенничество 0
H Методы и средства взлома баз данных MySQL Корзина 0
Y Backdoors и шпионы. Методы защиты Анонимность и приватность 34
CMDfromBAT Интересно Методы Социальной Инженерии СИ/Фишинг/Мошенничество 7
G Методы обхода фильтров по расширению при загрузке файлов Полезные статьи 0
K Geekbrains Безопасность в сети. Методы взлома и защиты https://mega.nz/#%2194l2kbLS%21B-PiBnPOyI9xypx8p-SqwM8S-JT5o1GRBlBV5cRFrg4 Другое 0
R [instagram] Раскручиваем Аккаунт С 0 До 50к Фолловеров Быстрые Методы Заработка Способы заработка 0
T Методы психологического воздействия Полезные статьи 0
A Методы шифрования С/C++ 1
M Методы взлома телофонов по bluetooth WiFi/Wardriving/Bluejacking 2
ev0117434 Интересно Защищаем компьютер от проникновения Анонимность и приватность 8
L Книга по установке кали и тестирования на проникновения Полезные статьи 7

Название темы