Вопрос или проблема
Существует сервер, к которому у меня есть доступ (логин и пароль). Если войти в систему под этим пользователем на сервере, оказывается, что мой пользователь не находится в sudoers
. Дополнительной информации нет, у меня только один этот пользователь.
Мне нужно прочитать /tmp/somefolder/file
на этом сервере.
/tmp/somefolder
имеет права drwxr-xr-x
, а /tmp/somefolder/file
имеет права -rw-r-----
.
Я нахожусь где-то в системе, не ясно, в какой директории.
Я не владею /tmp/somefolder
и не нахожусь в группе, которая его владеет, аналогично я не владею /tmp/somefolder/file
и не нахожусь в группе, которая его владеет. Как я могу просмотреть содержимое /tmp/somefolder/file
?
/tmp/somefolder
имеет праваdrwxr-xr-x
[…] Я не владею/tmp/somefolder
и не нахожусь в группе, которая его владеет
В этом случае, поскольку вы не являетесь ни владельцем, ни частью группы, ваши права доступа определяются конечным набором прав (d......r-x
). Эти права разрешают вам получить доступ к директории.
/tmp/somefolder/file
имеет права-rw-r-----
[…] Я не владею/tmp/somefolder/file
и не нахожусь в группе, которая его владеет
-……—). В этом случае они не предоставляют вам доступа к файлу. Вы не можете его прочитать, скопировать, выполнить или каким-либо образом что-либо сделать с файлом.
В качестве бонуса, если бы родительская директория (/tmp/somefolder
) предоставила вам разрешение на запись, вы могли бы удалить файл или переместить/переименовать его в пределах той же файловой системы. Но вы все равно не смогли бы его прочитать.
В качестве другого бонуса, может существовать список управления доступом (ACL) на директории или файле, и он может предоставить вам разрешения, не отображаемые в стандартной маске прав для пользователей-групп-других.
Обратите внимание: следующие примеры предназначены для повышения привилегий. Строго запрещено получать доступ к информационным системам или данным, которые не были предварительно авторизованы. Этот пост предназначен только для образовательных целей.
Вы можете попробовать проверить файл /etc/passwd для локальных пользователей и /etc/group, чтобы узнать, какие пользователи имеют какие права. А также пользователей приложений.
Пример 1: Если у вас есть группа “docker”, вы можете повысить права с помощью этой команды:
docker run -it --rm -v /:/host debian:latest /bin/bash
- “-v /:/host”: разрешает отображать корневую директорию (/) на директорию /host внутри контейнера
- “/bin/bash”: запуск терминала bash с пользователем по умолчанию “root” в контейнере
После этого вы можете просмотреть ваш файл в /host/tmp/somefolder/file
Пример 2: вы можете проверить команду с NOPASSWD (без запроса пароля) в папках sudoers:
- /etc/sudoers
- /etc/sudoers.d/*
С чем-то вроде этого в файле sudoers:
%randomgroup ALL=(root) NOPASSWD:/usr/bin/sudo /usr/bin/chmod
Вы можете выполнять chmod, как хотите.
Или другой пример:
%randomgroup ALL=(root) NOPASSWD:/usr/bin/sudo /usr/bin/apt-get
Вы можете открыть терминал через эту команду:
sudo apt-get update -o APT::Update::Pre-Invoke::= /bin/bash
Источник: https://www.hackingarticles.in/linux-for-pentester-apt-privilege-escalation/
Ответ или решение
Разрешения в Linux для пользователя, не входящего в sudoers
Работа с системой Linux требует понимания системы разрешений файлов и каталогов. В данной ситуации у вас есть доступ к серверу с одним пользователем, который не имеет прав для использования sudo
. Задача состоит в том, чтобы прочитать файл /tmp/somefolder/file
, разрешения которого ограничены для вашего пользователя. В следующем изложении рассмотрим детали разрешений и возможные пути решения задачи.
Анализ текущих разрешений
- Разрешения каталога
/tmp/somefolder
:- Права доступа:
drwxr-xr-x
- Это означает, что:
- Владелец (user) имеет права на чтение, запись и выполнение (7).
- Члены группы (group) имеют права на чтение и выполнение (5).
- Остальные пользователи (others) имеют права только на чтение и выполнение (5).
- Права доступа:
Обратите внимание, что вы можете получить доступ к каталогу, даже не будучи владельцем или членом группы, поскольку у вас есть права "выполнения" (execute) на этот каталог.
- Разрешения файла
/tmp/somefolder/file
:- Права доступа:
-rw-r-----
- Это означает, что:
- Владелец (user) имеет права на чтение и запись (6).
- Члены группы (group) имеют права на чтение (4).
- Остальные пользователи (others) не имеют прав доступа (0).
- Права доступа:
К сожалению, в данном случае у вас нет доступа к содержимому файла, поскольку вы не являетесь ни владельцем файла, ни его группой.
Оценка способов доступа к файлу
-
Использование ACL (списков контроля доступа):
Если на файле или каталоге применяются расширенные списки контроля доступа (ACL), это может обеспечить дополнительные права доступа. Для проверки ACL используйте команду:getfacl /tmp/somefolder/file
Если у вас нет прав на выполнение этой команды, это может стать препятствием.
-
Ищите другие группы:
Вы можете найти группы, в которые входит ваш пользователь, и использовать их для получения дополнительных прав доступа. Чтобы просмотреть группы, к которым принадлежит пользователь, выполните:groups
-
Возможности межсетевого взаимодействия:
Если на сервере есть установленные контейнеры Docker, и ваш пользователь принадлежит к группе Docker, вам следует рассмотреть возможность выполнения контейнера с root-доступом. Например:docker run -it --rm -v /:/host debian:latest /bin/bash
Это запустит контейнер с доступом к файловой системе хоста, где вы сможете попытаться получить доступ к файлу по пути
/host/tmp/somefolder/file
.
Итог
Получение доступа к определенному файлу в Linux может оказаться сложной задачей без соответствующих прав. В данной ситуации вам не удастся прочитать файл /tmp/somefolder/file
из-за ограничения на разрешения. Оцените возможность использования ACL, проверьте свою принадлежность к группам или рассмотрите возможность использования контейнеров Docker, если это применимо.
Помните, что любые действия с системами и данными, не авторизованные администратором, могут иметь серьезные юридические последствия. Работайте этично и ответственно, строго придерживаясь принципов информационной безопасности.