Как найти все файлы с suid

If you want to test for any of the bits, use /. I.e. for your use case:

find "$DIRECTORY" -perm /4000

and:

find "$DIRECTORY" -perm /2000

or combined:

find "$DIRECTORY" -perm /6000

You may use both folders and files as argument for GNU find.

Another, IMO better readable, approach is using the mnemonic shortcuts. I.e.:

find "$DIRECTORY" -perm /u=s,g=s

Caveat emptor

Keep in mind that the variants of find vary. They may also behave differently. Always read the friendly manual (RTFM).

SUID(Set-user Identification) and SGID(Set-group identification) are two special permissions that can be set on executable files, and These permissions allow the file being executed to be executed with the privileges of the owner or the group.

  • SUID: It is special file permission for executable files. This enables other users to run the file with the effective permissions of the file owner. But Instead of normal x which represents executable permissions. We will see s(this indicates SUID) special permission for the user.
  • SGID: This is also special file permission for executable files that enables other users to inherit the effective GID(Group Identifier) of a group owner. Here rather than x which represents executable permissions, we will see s(which indicates SGID) special permission for group users

Now let’s look at how to find files that have SUID and SGID set using the find command:

Syntax:

find directory -user root -perm -4000 -exec ls -ldb {} ; >/tmp/filename

Here,

Find directory  Checks for all mounted parts starting with the specified directory 
-user root Display files owned by root 
-perm -4000 Print files only with permissions set to 4000
-exec la -ldb  Displays the output of find command in ls –
>/tmp/filename Writes the result to the filename we specify

Note: For some directories such as (/etc, /bin, /sbin) or files that require root privileges we should use the sudo command to get the root privileges.

So now we will show how to list all files which have SUID permissions:

find directory -user root -perm -4000 -exec ls -ldb {} ; >/tmp/ckprm

The above command will dump all of our files having SUID permissions into a ckprm file.

The below images shows all files with SUID permissions:

Finding Files With SUID and SGID Permissions in Linux

Now we are going to see How to list all files which have SGID permissions:

Note: In place of filename we can use filename up to our choice 

Command: find / -user root -2000 -exec ls -ldb {} ; > /tmp/ckprm

Since there are more files with SGID permissions I cannot show up the full entire one.

Finding Files With SUID and SGID Permissions in Linux

To find files that have both SUID and SGID set, run the command below.

find / -user root -perm -6000 -exec ls -ldb {} ; > /tmp/ckprim1

As you can see only one file is having both SUID and SGID Permissions 

Removing SUID and SGID:

If we want to remove SGID and SUID permissions on the files which have these two permissions.Then for removing the first SUID permissions:

chmod u-s filename

For Example, we have removed permission for the SUID file 

Here in the above image, we have removed permission for the /usr/sbin/ppd file

You can see the left side image before removing permissions and the right side image after removing the permissions.

Finding Files With SUID and SGID Permissions in Linux

Then for removing the first SGID permissions: we have to do the same but change the command a little.

chmod g-s file_name

For Example, we have removed permission for the SGID file

Here in the above image, we have removed permission for the /usr/bin/wall file.

You can see the left side image before removing permissions and the right side image after removing the permissions.

Finding Files With SUID and SGID Permissions in Linux

Last Updated :
19 Feb, 2021

Like Article

Save Article

Сегодня в этой статье мы вернулись с еще одной наиболее выгодной командой из серии Linux для пентеста, а именно «Find».

Команда Find используется для поиска из списка файлов и каталогов, поэтому, зная этот факт, мы теперь проиллюстрируем, как мы можем использовать ее в Повышении привилегий.

Содержание

  1. Содержание
  2. Введение в find
  3. Эксплуатация find
  4. Введение в find
  5. Основная операция с использованием Find
  6. Поиск файлов с полными правами.
  7. Чтобы найти все скрытые файлы
  8. Чтобы найти все читаемые файлы в каталоге
  9. Поиск файлов SUID
  10. Найти файлы SGID
  11. Чтобы найти все доступные для записи файл
  12. Эксплуатация Find
  13. Использование прав sudo
  14. Настройки SUID для повышения привилегий
  15. Использование SUID

Содержание

Введение в find

  • Основная операция выполнена с использованием Find

Эксплуатация find

  • Настройка прав sudo  для повышения привилегий
  • Использование прав sudo
  • Настройки SUID  для повышения привилегий
  • Использование SUID

Введение в find

Команда «find» – это средство командной строки, позволяющее обойти структуру файловой пирамиды и найти точное местоположение файла и каталога в соответствии с желанием пользователя.

Эта команда может использоваться различными службами, такими как поиск любого файла по «размеру, разрешениям, дате изменения / доступа, пользователям, группам» и многим другим в соответствии с пользовательскими реквизитами.

Подобно каждой команде Find также можно кратко понять используя  help / man, как показано на рисунке ниже. find –help

Основная операция с использованием Find

Поиск любого файла по определенному имени в текущем каталоге: эта команда поддерживает поиск любого файла по определенному имени.

Предположим, мы хотим найти в текущем каталоге текстовый файл по имени «raj», а затем просто составим команду, как показано ниже:

Поиск любого файла по определенному имени в домашнем каталоге: если мы хотим найти все файлы в домашнем каталоге по нужному имени файла, в нашем случае это «raj.txt»:

(Это позволит пользователю найти все файлы «raj.txt» в домашнем каталоге)

Найти файлы по их расширению:

это можно сделать, указав конкретное расширение файла.

Если какой-либо пользователь хочет получить какой-либо файл по его расширению, то это можно сделать с помощью опции «-type f».

В нашем сценарии мы выбираем поиск файлов с расширением .txt

Можно также использовать опцию «-type d» вместо «-type f» для получения каталога.

find / -type f -name “*.txt”

Эта команда будет выводить все файлы .txt в качестве желаемого вывода.

Поиск файлов с полными правами.

Когда кто-либо захочет исследовать файлы с полными правами, например, «777», это можно сделать с помощью «-perm 0777», а затем команда find  с опцией «-type f», которая выведет вывод для всех файлов, которые имеют «777»

find . type f perm 0777 print

Чтобы найти все файлы из определенного пользователя каталога: если нам нужно найти все файлы, которые принадлежат определенному пользователю, в любом выборочном каталоге, то мы можем выполнить это командой:

В нашем случае мы находим все те файлы, которые принадлежат пользователю «raj» в «каталоге tmp».

Чтобы найти все скрытые файлы

Если мы хотим найти все скрытые файлы в любом каталоге, мы наберем команду, как показано ниже:

find /tmp -type f -name “.*”

Чтобы найти все читаемые файлы в каталоге

Найти все читаемые файлы из определенного каталога.

На примере ниже мы обнаруживаем все те файлы, которые находятся в читаемой форме в каталоге /etc

find /etc/ -readable -type f 2>/dev/null

Введя команду выше, мы получим все читаемые файлы, которые находятся в /etc в качестве вывода.

Поиск файлов SUID

при выполнении любой команды, для которой установлен бит SUID, ее действующий UID становится владельцем этого файла.

Уязвимости Linux в файлах SUID SUGID

Итак, если мы хотим найти все эти файлы, которые содержат бит SUID, его можно получить, введя команду:

find / perm u=s type f 2>/dev/null

Найти файлы SGID

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

Итак, чтобы запустить все те файлы, которые имеют бит SGID, введите команду:

find / -perm -g=s -type f 2>/dev/null

Чтобы найти файлы SUID и SGID одновременно: Если мы хотим извлечь все эти файлы одновременно, для которых установлены оба бита, то есть «SUID и SGID», то команда find выглядит так:

find / perm g=s o perm u=s type f 2>/dev/null

Чтобы найти все доступные для записи файл

Чтобы найти любые доступные для записи каталоги в любом нужном каталоге, например: /home, /tmp, /root, мы запустим команду:

 find /home -writable -type d 2>/dev/null 

Мы нашли все доступные для записи каталоги из /home.

Эксплуатация Find

Права sudo настроены для повышения привилегий

Теперь мы создадим нашу настройку команды Find, предоставив ей более высокие привилегии, то есть с правами администратора.

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

Точно так же мы проверим нашу команду Find и поймем, какой эффект это окажет после выполнения прав sudo и как мы можем настроить ее еще больше при повышении привилегий.

Мы создадим локального пользователя (test), который получит права sudo в качестве пользователя root.

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

 test  ALL=(root) NOPASSWD: /usr/bin/find 

Использование прав sudo

Теперь мы начнем использовать сервис Find, используя привилегию sudo.

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

Для этого нам нужно соединиться с целевой машиной с помощью ssh, поэтому введите команду, как показано ниже, чтобы выполнить то же самое.

Затем мы проверили право sudo пользователя «test» (если он указан) и обнаружили, что пользователь «test» может выполнить команду «find» как «root» без пароля.

Команда Find позволяет вам выполнять некоторые конкретные действия, такие как «print, delete и exec».

Поэтому здесь мы используем привилегию «exec» для выполнения команды доступа к корневой оболочке, запустив /bin/bash с помощью команды find, как показано ниже:

 sudo find /home -exec /bin/bash ; 

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

Настройки SUID для повышения привилегий

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

Теперь мы включаем разрешение SUID для Find, чтобы локальный пользователь мог использовать функцию Find в качестве пользователя root.

Следовательно, введите следующий для включения бита SUID:

which find
chmod u+s /usr/bin/find
ls -la /usr/bin/find 

Использование SUID

Как мы знаем, у нас есть доступ к компьютеру жертвы, поэтому мы будем использовать команду Find, чтобы определить двоичные файлы, имеющие разрешение SUID.

find / perm u=s type f 2>/dev/null

Итак, здесь мы пришли к выводу, что бит SUID имеет полномочия для очень многих двоичных файлов, но нас беспокоит: /usr/bin/find.

Как мы знаем, команда Find поддерживает выполнение определенных действий, таких как print, delete и exec.

Итак, здесь мы снова пользуемся привилегией «exec» для выполнения другой команды, то есть «whoami»

find raj exec “whoami” ;

Точно так же вы можете воспользоваться командой Find для повышения привилегий root.

Sys-Admin Forum

Loading

I’m looking for find command arguments to find all files under the / that have setuid and setgid privileges. I have find / ??? so far.

Palec's user avatar

Palec

12.5k8 gold badges66 silver badges138 bronze badges

asked Feb 3, 2010 at 5:52

su.'s user avatar

0

setuid or setgid (GNU findutils):

find / -perm /6000

setuid or setgid (POSIX):

find / -perm -4000 -o -perm -2000

setuid and setgid:

find / -perm -6000

answered Feb 3, 2010 at 5:56

Sean Bright's user avatar

Sean BrightSean Bright

118k17 gold badges138 silver badges145 bronze badges

2

find / ( -perm -u+s -o -perm -g+s ) -type f

answered Feb 3, 2010 at 5:59

Alok Singhal's user avatar

Alok SinghalAlok Singhal

92.4k21 gold badges125 silver badges158 bronze badges

2

find / -perm -u=s  -g=s -type f 2>/dev/null

the following command you can enumerate all binaries having SUID permission.

answered May 20, 2018 at 15:59

Boschko's user avatar

BoschkoBoschko

3575 silver badges14 bronze badges

Понравилась статья? Поделить с друзьями:
  • 0x000000ef windows 10 как исправить
  • Как найти алюминиевый слиток
  • Как найти работу в иркутске отзывы
  • Остатки на 000 как найти
  • Что за ошибка 0xc000005 как исправить на виндовс 7