В этой статье под­робно рас­смот­рим, как с помощью Network File System мож­но повысить при­виле­гии на Linux-сер­вере. Я покажу спо­собы быс­тро под­нять при­виле­гии до root бла­года­ря кри­вой кон­фигура­ции и недос­таткам сис­темы.

warning

Статья име­ет озна­коми­тель­ный харак­тер и пред­назна­чена для спе­циалис­тов по безопас­ности, про­водя­щих тес­тирова­ние в рам­ках кон­трак­та. Автор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с при­мене­нием изло­жен­ной информа­ции. Рас­простра­нение вре­донос­ных прог­рамм, наруше­ние работы сис­тем и наруше­ние тай­ны перепис­ки прес­леду­ются по закону.

NFS (Network File System) — рас­пре­делен­ная фай­ловая сис­тема, с помощью которой ты можешь мон­тировать уда­лен­ные пап­ки на свою Linux-машину и работать с ними, как с локаль­ными.

Ра­ботая с фай­ловой сис­темой через NFS, ты не уви­дишь раз­ницы из‑за осо­бен­ностей архи­тек­туры. Как поль­зователь ты всег­да вза­имо­дей­ству­ешь с абс­трак­цией ядра — VFS (Virtual File System). Она вклю­чает в себя и реаль­но сущес­тву­ющие фай­ловые сис­темы, и дру­гие абс­трак­ции вро­де NFS.

NFS фор­миру­ет RPC-вызов с номером прог­раммы и номером про­цеду­ры. Упа­ков­кой, аутен­тифика­цией и дос­тавкой занима­ется Sun RPC. С помощью XDR он сери­али­зует дан­ные и отправ­ляет их по TCP (ранее исполь­зовали UDP). Сер­вер про­ходит те же эта­пы, фор­миру­ет ответ и воз­вра­щает его тем же мар­шру­том.

Схема работы NFS
Схе­ма работы NFS

Неп­равиль­но скон­фигури­рован­ный сер­вер и сла­бые механиз­мы NFS поз­воля­ют ата­кующе­му повысить при­виле­гии на сер­вере. Обра­ти вни­мание, что я раз­бираю имен­но повыше­ние при­виле­гий с помощью NFS. Мы будем пред­полагать, что у тебя уже есть дос­туп к тар­гету и воз­можность выпол­нять на нем минималь­ный набор команд.

 

Setuid/setgid

По умол­чанию в NFS исполь­зует­ся опция пониже­ния прав root_squash. В пра­виль­но нас­тро­енной NFS любой при­мон­тировав­ший­ся поль­зователь — это nobody. Иног­да адми­ны отклю­чают эту защиту опци­ей no_root_squash, что­бы упростить работу с фай­ловой сис­темой. Опция no_root_squash сти­рает грань меж­ду локаль­ным root, который под­клю­чил­ся к сер­веру, и root самого сер­вера. У обо­их поль­зовате­лей UID равен 0.

Би­ты setuid и setgid ука­зыва­ют Linux, что бинар­ник дол­жен запус­кать­ся не от име­ни поль­зовате­ля, а с пра­вами вла­дель­ца фай­ла или груп­пы‑вла­дель­ца. Пол­ная схе­ма ата­ки:

  1. Про­верить экспор­ты сер­вера и най­ти экспорт с no_root_squash.
  2. При­мон­тировать пап­ку и ско­пиро­вать в нее бинар­ник с шел­лом.
  3. Наз­начить вла­дель­цем root.
  4. Ус­тановить setuid.
  5. От име­ни обыч­ного поль­зовате­ля запус­тить шелл.
Порядок действий
По­рядок дей­ствий

Для тес­та я буду исполь­зовать Metasploitable 2. Эта машина — одна боль­шая уяз­вимость. Экспор­ты для NFS сде­ланы с no_root_squash, и мы лег­ко реали­зуем повыше­ние при­виле­гий. Убе­дись в этом, выпол­нив на уяз­вимой машине cat /etc/exports. Кре­ды: msfadmin/msfadmin.

Содержимое /etc/exports
Со­дер­жимое /etc/exports

Что­бы Kali Linux, запущен­ная в VirtualBox, уви­дела Metasploitable, я уста­новил для обе­их сис­тем сетевые интерфей­сы в режим «Вир­туаль­ный адап­тер хос­та».

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии