Эксплуатация уязвимости OverlayFS CVE-2023-2640

OverlayFS уязвимость CVE-2023-2640

Сегодня, на примере уязвимой машины Analytics с площадки Hack The Box, мы рассмотрим про­цесс экс­плу­ата­ции уяз­вимос­ти CVE-2023-2640 в фай­ловой сис­теме OverlayFS Linux.

Еще по теме: Эксплуатация уязвимости WinRAR

Эксплуатация уязвимости OverlayFS CVE-2023-2640

Ранее мы опре­делили, что находим­ся в «Докере», а зна­чит, для выхода из него нуж­но искать учет­ные дан­ные либо небезо­пас­ные нас­трой­ки. Инструмент LinPEAS не нашел нечего интересного. Пос­леднее, на что оста­лось рас­счи­тывать, — это какие‑то све­жие экс­пло­иты для самой сис­темы. Узнать точ­ную вер­сию сис­темы мож­но коман­дой uname -a.

Версия используемой системы OverlayFS
Версия используемой системы OverlayFS

По обык­новению ищем экс­пло­иты в Google. Пер­вая же ссыл­ка ведет к уяз­вимос­ти GameOverlay.

По­иск экс­пло­итов для OverlayFS
По­иск экс­пло­итов для OverlayFS

OverlayFS — это объ­еди­нен­ная фай­ловая сис­тема, которая нак­ладыва­ет одну фай­ловую сис­тему поверх дру­гой, поз­воляя модифи­циро­вать фай­лы без изме­нения базовой фай­ловой сис­темы (при­мер­но как Docker). Одна­ко эта тех­нология поз­воля­ет поль­зовате­лям копиро­вать фай­лы из вло­жен­ного катало­га в родитель­ский, сох­раняя при этом метадан­ные фай­ла, в том чис­ле S-бит.

Имен­но этот недос­таток поз­воля­ет выпол­нить повыше­ние при­виле­гий до рута в базовой сис­теме. Спо­соб экс­плу­ата­ции этой уяз­вимос­ти осно­ван и на Linux Capabilities. Экс­плу­ата­ция уяз­вимос­ти зак­люча­ется в том, что мож­но соз­дать файл с минималь­ными воз­можнос­тями в одном слое и ско­пиро­вать его с неог­раничен­ными воз­можнос­тями в дру­гой слой, что, по сути, поз­волит фай­лу работать в кон­тек­сте рута.

Пер­вым делом перей­дем в поль­зователь­ское прос­транс­тво, так как уста­нав­ливать воз­можнос­ти фай­ла и мон­тировать фай­ловую сис­тему OverlayFS мож­но толь­ко там.

За­тем для сло­ев соз­даем отдель­ные катало­ги и копиру­ем исполня­емый файл python3, пос­ле чего даем ему воз­можность cap_setuid+eip. Она поз­воля­ет про­цес­су изме­нить UID во вре­мя выпол­нения.

Те­перь мон­тиру­ем фай­ловую сис­тему OverlayFS и изме­няем метадан­ные фай­ла, что­бы ядро копиро­вало его в вер­хний каталог с сох­ранени­ем уста­нов­ленных воз­можнос­тей.

Пос­ле выхода из поль­зователь­ско­го прос­транс­тва про­веря­ем воз­можнос­ти соз­данно­го фай­ла upper/python3.

Эксплуатация уязвимости OverlayFS CVE-2023-2640
Эксплуатация уязвимости OverlayFS CVE-2023-2640

Те­перь сде­лаем так, что­бы скрипт на Python уста­нав­ливал сво­ему про­цес­су UID, рав­ный нулю, что­бы получить при­виле­гиро­ван­ный кон­текст рута.

Это мож­но сде­лать с помощью фун­кции setuid из модуля os. Затем вызыва­ем коман­дную обо­лоч­ку в уже при­виле­гиро­ван­ном кон­тек­сте с помощью фун­кции system из того же модуля.

Получение рута
Получение рута

Мы получа­ем дос­туп к bash от име­ни рута.

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

Добавить комментарий