SkillAgentSearch skills...

Escalatoria

Большое практическое руководство по повышению привилегий в Linux

Install / Use

/learn @GeenStack/Escalatoria
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Escalatoria

Этот репозиторий содержит набор упражнений по повышению привилегий в Linux Репозиторий включает в себя УКАЗАТЬ ФИНАЛЬНОЕ КОЛИЧЕСЧТВО файлов для Docker, из которых формируются уязвимые образы. Представлены упражнения по повышению привилегий с использованием следующих техник:

  • Повышение привилегий за счет неправильных настроек sudo
  • Повышение привилегий за счет неправильно установленных suid для файлов
  • Повышение привилегий за счет неправильно установленных capabilities для бинарных файлов
  • Повышение привилегий через crontab
  • Повышение привилегий через переменные окружения

Получение репозитория

  • Скопируйте репозиторий на свою машину командой git clone https://github.com/GeenStack/Escalatoria
  • Установите Docker
  • Приступайте!

Повышение привилегий за счет неправильных настроек sudo


1. ДОСТУПНО ВСЕ!

В этом упражнении мы увидим, как опасна настройка sudo, при которой пользователю разрешено выполнение любых команд без пароля

  1. Перейдите в каталог abuse_sudo/nopasswd/ командой cd abuse_sudo/nopasswd

  2. Соберите уязвимый образ командой docker build -t sudo_no_passwd .

  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

    docker run -it sudo_no_passwd /bin/bash

  4. Итак, первое, с чего мы начинаем свое повышение привилегий - проверка наличия у текущего пользователя прав sudo. Выполните команду sudo -l

sudo -l result

  1. Мы видим, что для пользователя escalator через sudo доступно выполнение любых команд от имени суперпользователя без ввода пароля, для повышения привилегий достаточно выполнить sudo su

sudo su result

Это был достаточно легкий пример повышения привилегий. Попробуем что-то другое


2. Приложения, выполняющиеся через sudo
2.1 Приложения, которые могут осуществлять запись в файл

Теперь мы приступим к техникам повышения привилегий в том случае, когда нам доступно sudo на бинарные файлы, которые могут осуществлять запись в файл. Мы рассмотрим повышение привилегий через sudo на текстовый редактор nano и через sudo на команду mv

  1. Перейдите в каталог abuse_sudo/sudo_on_bin/write_file/abuse_nano

  2. Соберите уязвимый образ docker build -t abuse_nano .

  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

    docker run -it abuse_nano /bin/bash

  4. Выполните sudo -l

sudo -l result

  1. Мы видим, что мы можем через sudo использовать nano, и редактировать файлы с правами root. Для повышения привилегий необходимо отредактировать файл /etc/passwd, создав своего пользователя с правами root. Таким образом также осуществляется закрепление в системе. Для этого необходимо проделать следующие шаги:
  • На своем хосте сгенирируем хэш пароля evilpass для пользователя eviluser командой

openssl passwd -1 -salt eviluser evilpassword

generate password for eviluser

  • Изменим внутри контейнера файл /etc/passwd используя nano sudo nano /etc/passwd. Добавим своего пользователя, добавив в конец файла строку: eviluser:$1$eviluser$eIaLEOmpQR3YjlJE1f/En.:0:0:/root/root:/bin/bash

add eviluser

  • Сохраним файл и откроем терминальную сессию для пользователя eviluser командой su eviluser, вводим пароль evilpassword. В итоге мы получаем сессию пользователя с правами root

su eviluser

Теперь давайте попробуем повысить привилегии, используя sudo на команду mv

  1. Перейдите в каталог abuse_sudo/sudo_on_bin/write_file/abuse_mv

  2. Соберите уязвимый образ docker build -t abuse_mv .

  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

    docker run -it abuse_mv /bin/bash

  4. Выполните sudo -l

sudo -l result

  1. Мы видим, что нам доступно выполнение через sudo команды mv. Выстроим следующий вектор повышения привилегий: создадим копию файла /etc/passwd, добавим в нее своего пользователя с правами root, заменим с помощью команды mv оригинальный /etc/passwd нашей копией. Выполните следующие шаги:
  • Выполните в контейнере команду cp /etc/passwd passwd_copy
  • Внесите в passwd_copy строку eviluser:$1$eviluser$eIaLEOmpQR3YjlJE1f/En.:0:0:/root/root:/bin/bash
  • Выполните команду sudo mv passwd_copy /etc/passwd На скриншоте ниже продемонстрирован перезаписанный командой mv файл /etc/passwd

sudo -l result

  • Выполните команду su eviluser, вы получите сессию пользователя с правами root
2.2 Приложения, которые могут вызвать shell

В некоторых случаях нам может быть доступно выполнение через sudo приложений, которые могут вызывать оболочу shell. Мы рассмторим примеры получения оболочки через интерпретаторы python, perl, а также вызов оболочки с помощью утилиты find.

  1. Перейдите в каталог abuse_sudo/sudo_on_bin/spawn_shell/shell_via_python

  2. Соберите уязвимый образ командой docker build -t shell_via_python .

  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

    docker run -it shell_via_python /bin/bash

  4. Результат команды sudo -l говорит нам о том, что нам доступно выполнение python3 от имени суперпользователя.

  5. Для повышения привилегий запустите python3 через sudo, импортируйте модуль pty, вызовите его метод spawn, передав ему аргумент '/bin/sh'. Вы можете также выполнить команду sudo python3 -c "import pty; pty.spawn('/bin/sh')"

На скриншоте ниже Вы можете наблюдать описаные процедуры для повышения привилегий: python escalation

Вызов оболочки через perl осуществляется по похожему принципу.

  1. Перейдите в каталог abuse_sudo/sudo_on_bin/spawn_shell/shell_via_perl
  2. Соберите уязвимый образ командой docker build -t shell_via_perl .
  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

docker run -it shell_via_perl /bin/bash

  1. Результат команды sudo -l говорит нам о том, что нам доступно выполнение perl от имени суперпользователя.
  2. Для повышения привилегий выполните команду sudo perl -e 'exec "/bin/sh";'

На скриншоте ниже Вы можете наблюдать описаные процедуры для повышения привилегий: perl escalation

Несколько интереснее выглядит вызов оболочки через утилиту find.

  1. Перейдите в каталог abuse_sudo/sudo_on_bin/spawn_shell/shell_via_find
  2. Соберите уязвимый образ командой docker build -t shell_via_find .
  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

docker run -it shell_via_find /bin/bash

  1. Результат команды sudo -l говорит нам о том, что нам доступно выполнение find от имени суперпользователя.
  2. Для повышения привилегий выполните команду sudo find . -exec /bin/sh \; -quit

На скриншоте ниже Вы можете наблюдать описаные процедуры для повышения привилегий: find escalation

Выполнение через sudo скриптов

Встречаются ситуации, когда через sudo выполняются не какие-то конкретные команды, а скрипты. Если такие скрипты доступны нас для записи, то мы можем легко получить повышение привилегий. Далее мы рассмотрим повышение привелегий через перезапись исполняемых с помощью sudo скриптов на shell и python

  1. Перейдите в каталог abuse_sudo/sudo_on_scripts/shell_script
  2. Соберите уязвимый образ командой docker build -t shell_script.3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

docker run -it shell_script /bin/bash

  1. Результат команды sudo -l говорит нам о том, что нам доступно выполнение /bin/scripts/script.sh от имени суперпользователя. мы видим, что скрипт предназначен для чтения файла /etc/sudoers

script

  1. Далее необходимо узнать о правах доступа на этот скрипт, выполним команду ls -l /bin/scripts/script.sh

ls -l

  1. Мы видим, что скрипт является исполняемым, кроме того, он доступен нам для записи. Попробуем его выполнить командой sudo /bin/scripts/script.sh

script result

  1. Как видно, скрипт прочитал файл /etc/sudoers, чтение которого не разрешено для обычных пользователей. Тот факт, что скрипт смог прочитать файл, логиен, поскольку скрипт выполняется с правами root. Поскольку скрипт доступен нам для записи, мы можем дополнять его любыми командами, которые также будут выполняться с правами root. Для повышения привилегий мы изменим файл /bin/scripts/script.sh, добавив вызов оболочки bash командой /bin/bash

script rewrite

  1. Повторим команду sudo /bin/scripts/script.sh и в итоге получим сессию от root

escalate

Повышение привилегий в ситуации, когда через sudo осуществляется выполнение скрипта, доступно не только для сценариев на bash. Это могут быть сценарии на php, python, perl.

  1. Перейдите в каталог abuse_sudo/sudo_on_scripts/python_script
  2. Соберите уязвимый образ командой docker build -t python_script.
  3. Запустите контейнер из собранного образа и перейдите в его оболочку с помощью команды

docker run -it python_script /bin/bash

  1. Результат команды sudo -l говорит нам о том, что нам доступно выполнение /bin/scripts/script.py от имени суперпользователя. мы видим, что скрипт предназначен для чтения файла /etc/sudoers. Мы также проверяем права доступа на скрипт командой ls -l /bin/scripts/scripts.py. Скрипт является исполняемым файлом и доступен для записи.

script

  1. Для повышения привилегий мы изменим содержимое скрипта. Уже знакомым по одному из предыдущих упражнений методом мы импортируем модуль pty и вызываем с помощью него оболочку shell

rewrite

  1. Выполняем команду sudo /bin/scripts/script.py и получаем сессию root.

escalate


Повышение привилегий за счет неправильно установленных suid для файлов

Related Skills

View on GitHub
GitHub Stars8
CategoryDevelopment
Updated2mo ago
Forks2

Languages

Dockerfile

Security Score

70/100

Audited on Jan 27, 2026

No findings