Статья Право на root. Как повышают привилегии в Linux.

Admin

Администратор

Право на root. Как повышают привилегии в Linux.​


С правами рута ты можешь делать в системе что угодно: закрепиться на будущее, оставив бэкдор, внедрить руткит или троян, забрать, изменить или уничтожить любую информацию — хоть разместить задницу на главной странице сайта, если захватил веб-сервер. Поэтому повышение привилегий в системе — один из важнейших шагов при атаках. В этой статье мы посмотрим, как это делается в системах с Linux.
В общем случае эскалация привилегий — это получение прав в системе выше, чем у тебя уже есть. Но чаще всего имеется в виду получение доступа к учетной записи root в Linux или system/administrator в Windows.

Почему становится возможным повысить права в системе, казалось бы призванной предотвращать подобное? Причин много. Вот, как мне кажется, основные:
  • уязвимости в приложениях/скриптах;
  • неверная конфигурация ОС и приложений;
  • забытые критически важные данные (пароли, логины, бэкапы и прочее);
  • уязвимости в ядре ОС.
Ну а основная причина всегда одна и та же — людские ошибки. В идеальной вселенной, скорее всего, повысить привилегии не удалось бы. Но человеческий фактор делает это возможным, поэтому наслаждаемся.


С чего начать?
Прежде чем что-то делать, нужно понять, с чем мы будем иметь дело. Конечно, кое-что мы узнаем о системе, изучив ее на этапе проникновения, но теперь нужно подробнее выяснить, что именно нам может помочь подняться до root.

Какие-то вещи мы можем узнать вручную. Например, получить сведения о ядре:
Код:
uname -a 2>/dev/null
Или о процессоре:
Код:
cat /proc/cpuinfo 2>/dev/null
Или релиз ОС:
Код:
cat /etc/*-release 2>/dev/nul
Можно, конечно, и дальше собирать информацию с помощью терминала, но это долго. Гораздо проще и эффективнее использовать специальные тулзы. Самые распространенные из них:
Все они работают примерно по одному принципу: последовательно запускают команды bash или короткие скрипты, а вывод отправляют в stdout или лог-файл в зависимости от параметров.

LinEnum

Куда смотреть?
Давай теперь разберем несколько примеров уязвимостей и посмотрим, как можно их эксплуатировать.


Всякое забытое
Первое, что стоит проверить, — это забытые критические данные. Ничего не стоит заглянуть в домашние папки юзеров и посмотреть, не хранит ли кто-то на рабочем столе файл с паролем или ключами от чего-нибудь нужного. Это случается редко, но все же случается. Иногда учетные данные хардкодят в скриптах и конфигах. Стоит также проверить историю шелла, там тоже могут найтись длинные команды, содержащие учетные данные. А иногда бывает, что пользователь набрал пароль, когда консоль его не запрашивала, и он тоже сохранится в истории.


SUID/GUID
Флаги setuid и setgid позволяют пользователю запускать программы от имени владельца. Например, когда надо запускать программу от рута, а пользователь рутом не является. Чаще всего встречается SUID. Устанавливается этот бит легко:
Код:
chmod +s /bin/script

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

В первую очередь нас интересуют файлы, владелец которых — root. Найти их можно руками, такой командой:
Код:
find / -user root -perm -u=s -type f 2>/dev/null

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

Вывод таких файлов из LinEnum.sh.

Из интересных файлов — find. LinEnum

Это позволит довольно легко получить привилегии.


Linux Capabilities
Так как предыдущий способ дает избыточные права файлам, в 1997 году была придумана идея дополнительных разрешений — linux capabilities. Если коротко, то идея состоит в том, чтобы давать не полные привилегии, а только часть, необходимую для выполнения задачи.

Как это используется? Для начала найдем подобные файлы в системе.
Код:Скопировать в буфер обмена
getcap -r / 2>/dev/null


Классический пример иллюстрации — это исполняемый файл tar с разрешением cap_dac_read_search+ep, которое позволяет ему читать любой файл в системе. Это означает, например, возможность получить архив с файлом /etc/shadow, который от лица обычного пользователя недоступен на чтение. Доступ к этому файлу даст нам хеши паролей, в том числе от root, который мы можем попробовать сбрутить.

Еще встречается пустое разрешение =ep. Когда выставлено такое разрешение (есть знак «равно» в начале, и не перечислен список разрешений), это значит, что файлу предоставлены все возможные разрешения. В примере такие разрешения есть у файла openssl.

Этот пример позволит нам прочитать файл /etc/shadow.

Сгенерим ключи.

Запустим веб-сервер.

И прочитаем файл.

Далее мы можем просто сгенерить новый shadow и перезаписать им системный. Создадим новый хеш, заменим им хеш (в примере — восклицательный знак) и подготовим файл для заливки.

Копируем его в /etc/shadow и логинимся.



Cron
Cron — это служба Unix, которая используется для периодического выполнения скриптов. Действия описываются в файле /etc/crontab и в специальных каталогах (например, /etc/cron.daily).


Скрипты используются для самого широкого спектра задач — от создания бэкапа по расписанию до очистки директории /tmp.

Если у таких скриптов неаккуратно выставлены привилегии, то это может стать находкой для атакующего. Когда администратор ставит привилегии как попало, «просто чтобы работало», он вполне может написать chmod 777, что позволит нам отредактировать вызываемый по расписанию скрипт. Поскольку cron запускает файлы от имени root, ничто не мешает вызывать рутовый шелл заодно со скриптом.


Sudo
Программа sudo позволяет выполнять команды от имени суперпользователя (либо других пользователей системы). Ее конфиг находится в /etc/sudoers, и, как правило, ошибки в этом конфиге открывают возможности эскалации привилегий. Сценариев использования — множество, можно выбирать по ситуации. Один из таких вариантов ниже.

Проверяем, какие есть разрешения у sudo.


Здесь редактор vi можно открыть без пароля, и он запустится от имени root. В этом случае проще всего выполнить шелл через редактор, который тоже запустится от рута.

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

Еще один способ абьюзить sudo — возможность внедряться в процесс с действующим токеном.

Эксплоиты для ядра
Как и в любой другой программе, в ядре Linux тоже есть уязвимости. Иногда эти уязвимости позволяют подняться до рута. Как и в остальных способах, здесь не существует универсального рецепта, и успешная эксплуатация зависит от многих факторов: версии ядра, наличия необходимых разрешений или файлов и даже наличия нужного железа (например, уязвимого перед Meltdown процессора).

На скриншоте ниже — поиск эксплоитов для ядра Linux в Kali.


При многообразии вариантов эксплуатации не все они окажутся рабочими. Может не быть эксплоита под конкретное ядро, либо версия ядра правильная, но оно уже пропатчено. Некоторые эксплоиты работают нестабильно. И так далее.

Наверняка многие помнят уязвимость в ядре, известную как Dirty COW. Баг позволяет спровоцировать состояние гонки, а это приводит к тому, что пользователь без привилегий получает доступ на запись к memory mappings (хотя доступ должен быть только на чтение) и может повысить свои привилегии.

Существует несколько эксплоитов для этой уязвимости.


На конкретной системе будут работать не все из них, так что всегда есть смысл перебирать разные варианты.

Другие примеры уязвимостей для повышения привилегий:
Конечно, это не все уязвимости. Их намного больше, и ты всегда можешь поискать их описанным выше способом или покопаться на exploit-db.com и других ресурсах.


Заключение
Способов стать рутом в Linux — множество, и я здесь прошелся только по самым очевидным и распространенным. Тем, что встречаются и в реальной жизни, и на CTF, и на экзаменах.

Вообще зачастую это творческая задача: может не сработать ни один из способов, но поможет какая-то, порой неочевидная комбинация из разных. Универсального рецепта здесь нет, и систему всегда нужно анализировать всесторонне.

На сайте GTFOBins есть отличная подборка способов использовать разные популярные утилиты для повышения привилегий. Но помни: этот список на самом деле значительно больше, просто нам еще пока не все известно!
 
Похожие темы
Admin Интересно Право на ремонт или дыра в безопасности. В Госдуме спорят, должны ли производители отдавать техдокументацию сторонним мастерам. Новости в сети 0
Admin Интересно Минцифры предложило россиянам право отказаться от услуг с использованием нейросетей. Новости в сети 0
Support81 Французская полиция скоро получит право легально шпионить за своими подозреваемыми Новости в сети 0
Admin Интересно Крупнейший взрыв на мысе Канаверал поставил под угрозу лунную программу NASA. Новости в сети 0
Admin Интересно Человечество обогнало эволюцию на 88 миллионов лет. Новости в сети 0
Admin Интересно Anthropic призывает замедлить развитие ИИ перед IPO на триллион долларов. Новости в сети 0
Admin Интересно Мошенники используют поддельные сайты с ссылками на GitHub для распространения вредоносного ПО. Новости в сети 0
Admin Интересно Китайская хакерская группа TA4922 расширяет фишинговые атаки на Европу и Южную Африку. Новости в сети 0
Admin Интересно Европарламент меняет поисковик по умолчанию на Qwant. Новости в сети 0
Admin Интересно Голландская группа защиты прав подала жалобу на сбор и продажу интимных данных приложением Flo. Новости в сети 0
Admin Интересно Флорида стала первым штатом США, подавшим в суд на OpenAI. Новости в сети 0
Admin Интересно Критическая уязвимость в Netlogon позволяет злоумышленникам удалённо выполнять код на серверах Windows. Новости в сети 0
Admin Интересно Срочно меняйте ключи: Red Hat оказалась в центре атаки на цепочку поставок через npm. Новости в сети 0
Admin Интересно Anthropic готовится к IPO, опережая OpenAI в гонке за лидерство на рынке ИИ. Новости в сети 0
Admin Интересно В России вводят лимит на количество банковских карт для одного клиента. Новости в сети 0
Admin Интересно ФБР предупреждает болельщиков о мошенничестве с билетами на Чемпионат мира по футболу. Новости в сети 0
Admin Интересно Телескоп Уэбба зафиксировал смену погоды на далёкой планете. Новости в сети 0
Admin Интересно Телескоп NASA Swift падает на Землю, агентство предпринимает экстренные меры. Новости в сети 0
Admin Интересно SpaceX получила крупный контракт на создание военной орбитальной сети. Новости в сети 0
Admin Интересно Мошенники используют новую схему двойной атаки на игроков. Новости в сети 0
Admin Интересно ЕС оштрафовал Temu на $232 млн за продажу незаконных товаров. Новости в сети 0
Admin Интересно На кону интернет 54 стран. Суд Маврикия решает судьбу организации, которая раздаёт IP-адреса всей Африке. Новости в сети 0
Admin Интересно Бум ИИ в Кремниевой долине приводит к резкому росту цен на жилье. Новости в сети 0
Admin Интересно Пользователи массово переходят на DuckDuckGo из-за навязывания ИИ в Google. Новости в сети 0
Admin Интересно Telegram снова теряет прокси. Пользователи в России жалуются на массовые сбои MTProto и VPN. Новости в сети 0
Admin Интересно Uber потратил весь годовой бюджет на ИИ за четыре месяца без видимых результатов. Новости в сети 0
Admin Интересно Хакеры со всего мира съедутся в Москву на Standoff 17. Новости в сети 0
Admin Интересно На Большом адронном коллайдере впервые обнаружили возбуждённый Bc-мезон. Новости в сети 0
Admin Интересно Скрытая экономика вымогательства на основе открытых баз данных. Новости в сети 0
Admin Интересно Microsoft внесёт изменения в Windows на следующей неделе. Новости в сети 0
Admin Интересно SpaceX повысила цены на доступ к Starlink для военных дронов во время войны с Ираном. Новости в сети 0
Admin Интересно Вредоносное ПО обнаружено в пакетах Laravel-Lang после атаки на Git. Новости в сети 0
Admin Интересно Стримерша Morgpie временно заблокирована на Twitch после необычного стрима. Новости в сети 0
Admin Интересно Данные водителей Mercedes-Benz оказались на хакерском рынке. Новости в сети 0
Admin Интересно Русскоязычный мошенник пять лет выдавал себя за американского патриота и зарабатывал на криптомошенничестве. Новости в сети 0
Admin Интересно Ученые создали модель кишечника на чипе для изучения воспаления и риска рака. Новости в сети 0
Admin Интересно Apple предотвратила мошенничество на $2,2 млрд благодаря своим алгоритмам. Новости в сети 0
Admin Интересно Искусственный интеллект собрал данные о ценах на багеты по всей Франции. Новости в сети 0
Admin Интересно Flipper Devices анонсировала карманный компьютер Flipper One на Linux. Новости в сети 0
Admin Интересно Спешка перед рабочим созвоном может привести к потере данных. Разбираем новую волну атак на пользователей Microsoft Teams. Новости в сети 0
Admin Интересно Посетитель Disneyland подал иск на $5 млн за использование технологии распознавания лиц. Новости в сети 0
Admin Интересно Подросток из Одессы похитил 28 тысяч аккаунтов, несмотря на двухфакторную аутентификацию. Новости в сети 0
Admin Интересно США объявили войну интимным сливам: 48 часов на удаление и штрафы до 53 тысяч долларов. Новости в сети 0
Admin Интересно Вредоносное ПО Showboat атакует телекоммуникационные компании на Ближнем Востоке. Новости в сети 0
Admin Интересно Пока вы спите, ваш Android ударно трудится на рекламных фермах. Новости в сети 0
Admin Интересно Студенты возмущены после того, как ИИ пропустил сотни имён на выпускной церемонии. Новости в сети 0
Admin Интересно Критическая уязвимость в Drupal Core подвергает сайты на PostgreSQL атакам. Новости в сети 0
Admin Интересно Intuit сокращает 17% сотрудников из-за реструктуризации с упором на ИИ. Новости в сети 0
Admin Интересно Nintendo анонсировала мобильное приложение Pictonico с 80 мини-играми на основе личных фотографий. Новости в сети 0
Admin Интересно NPM принудительно сбрасывает токены из-за масштабных атак на цепочку поставок. Новости в сети 0

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