Повышение привилегий в ОС Linux

Повышение привилегий в ОС Linux

E7|E1tex


Всем привет, в этой статье вы узнаете о самых популярных, но при этом не менее эффективных, методах повышения привилегий в ОС Linux. Поехали!

Что же такое повышение привилегий?

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


Повышение привилегий может происходить в трех формах:

  1. Горизонтальное повышение привилегий – хакер имитирует пользователя на том же уровне привилегий
  2. Вертикальное повышение привилегий – хакер имитирует пользователя на высшем уровне привилегий
  3. Понижение привилегий – хакер имитирует пользователя с низким уровнем привилегий




Методы повышение привилегий в линуксовых машинках:

1) Повышение привелегий через неправильно настроенную конфигурацию.

Условно говоря, метод позволяет использовать недоработки веб-части для генерации стартового шелла, здесь векторов может быть большое множество, например, тот же аплоад файлов.

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

Команда, которая сгенерит tty-shell

Одна из ошибок, возникающая при ограниченном шелле:


2)Поиск данных авторизации в файловой системе

Искать полезные данные, например данные авторизации, ручками - не самая лучшая идея, поэтому используем команду, которая покажет нам файлы, содержащщие password:


-I, Обрабатывать двоичный файл так, как если бы он не содержал совпадений

             данных.

 -R, --dereference-recursive

           Читаем все файлы рекурсивно. Исследуем все символичные ссылки.

 -i, --ignore-case

            Игнорируем регистр.


3)Просмотр истории команд

Линукс собирает историю все выполненных команд в файле bash_history. В этом файле существует большая вероятность найти чьи либо данные от учеток. Если в системе присутствуют альтернативные оболочки вроде Zsh или Fish, они ведут свою историю.



Как раз при неправильной настройке в корневой директории веб-ресурса можно обнаружить файл .bash_history и др.


4)Атака на смежные системы


Смежные системы также можно найти с помощью поиска IP-адресов в файловой системе. Команда для поиска смежных систем:



Как правило, нам обычно интересны только локальные айпишники, если на том же сервере стоят веб-сервисы, они нам не будут интересны. Отсюда вывод - обращаем наше внимание только на локальные адреса(172.16.0.0/12, 192.168.0.0/16, 10.0.0.0/8) и на то, куда они заходят.


5)Команда Sudo

Многие операции в линуксе требуют разрешений рута, но работа под рутом это всегда плохая практика, поэтому обычно применяются выборочные разрешения на выполнение команд в контексте рута.


Поэтому первое, что нужно сделать, получив доступ в систему, — выполнить команду sudo -l. Если sudo нам доступен, ищем следующее:

  1. Интерпритаторы, которые помогут сгенерить шелл(PHP, Python, Perl)
  2. less, more - команды для поиска подстроки в файле
  3. Текстовые редакторы: nano, vim, vi
  4. Все возможные команды для управления файловой системой: cp, mv
  5. Тулзы, имеющие выход в баш: awk, find, nmap, tcpdump, man, vi, vim и др.


6)Suid/Sgid

Бит смены владельца или SUID (Set User ID) — это разрешение файловой системы Linux, которое позволяет запустить исполняемый файл от имени его владельца. Он нужен, потому что для исполнения многих команд в системе требуются права суперюзера. Например ping юзает веб-сокеты, а для открытия такового требуются права суперюзера.


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

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


7)Cron/Init

Задачи cron могут выполняться в контексте различных пользователей, в том числе root. Посмотрев ссылку на исполняемый файл cron, случайно может обнаружиться, что он доступен для записи, что позволит внедрить свой код.

По умолчанию файлы с задачами cron доступны на чтение любому пользователю.

Инит от крон отличает время срабатывания задачи, крон выполняется переодически, инит при запуске системы.

Команды которые отобразят крон-процессы и инит-скрипты:



8)Шелл других юзеров системы

Смотрим список пользователей в /etc/passwd. Брутим интересных нам юзеров.

Важно, чтобы у юзера был shell!



9)Эксплуатация уязвимостей

Находим CVEшки, ищем эскплоиты, с помощью ssh, ftp, http (wget, curl) закидываем их на систему и исполняем.

Эксплоиты ищите на гитхабе, там их больше всего и можно посмотреть статистику, если не разбираетесь в коде(но лучше не быть скрипт-кидди и шарить за то, какие скрипты вы запускаете😉)


10)Самописные скрипты

Стоит внимательно посмотреть на исполняемые файлы в домашней директории пользователя и веб-сервера (/var/www/). Самописные скрипты это бич неопытных сисадминов и разработчиков, они либо содержат в себе миллион костылей, либо скопированы со stackoverflow, где регулярно публикуются дырявые решения.

В таких файлах неумелыми кодерами могут быть прописаны данные авторизации.


11)Эксплуатация сервисов

Некоторые сервисы Linux работают от привилегированного пользователя root. Команда для посика сервисов работающих от рута:


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

Ищем по ним эксплойты и смело применяем.


12)Уязвимости ядра Linux

Команды для вывода информации о ядре:

Ищем эксплоиты, работающие на версии вашего ядра, закидываем их на машину и исполняем.

Если самому лень или по срокам не успеваете, можно поискать репозитории с уже скомпилированными эксплоитами


Это минимально-краткий арсенал при повышении привилегий, если будет много реакций, залью вторую часть, где разберем детальней, что где и когда надо делать! Все в ваших руках)

E7 SUBSCRIBE





Report Page