Загрузка...

Базовая эскалация привелегий (PrivEsc)

Тема в разделе Kali Linux создана пользователем Biboro 16 май 2024. 319 просмотров

Загрузка...
  1. Biboro
    Biboro Автор темы 16 май 2024 2 6 июл 2021
    Внимание!: эта статья для новичков, просьба проявить понимание. Спасибо.
    Введение
    Я хочу показать вам различные техники повышения привилегий в Linux. Это лишь базовые знания.
    Если что то работет у меня на примерах, то это не значит что оно будет работать и у вас
    Тут я просто показываю примеры PrivEsc. а вы уже играете от этого
    Все ip адреса показаные тут не имеют ко мне никакого отношения

    Эскалация привелегий далее будет просто - PrivEsc


    Sudo + GTFOBins
    Выводим список програм которые Sudo позволяет нам использовать:
    ⁡sudo -l

    Мы получили такой список:
    [IMG]


    Далее заходим на GTFOBins и проверяем есть ли на нем нужные програмы и подходят ли они нам
    К примеру мы можем взять "Find" и использовать его
    [IMG]
    Мы видим что у него есть "Sudo" и давайте посмотрим что нужно для PrivEsc
    [IMG]
    Нам дали команду

    ⁡sudo find . -exec /bin/sh \; -quit

    Вводим её и теперь мы root, профит. (проверить можно с помощью команды "whoami")
    [IMG]



    Sudo - переменные окружения
    Sudo может быть настроен на наследование определенных переменных окружения из окружения пользователя.

    Проверим, какие переменные окружения наследуются (нам нужна верхняя строка с опциями env_keep):
    ⁡sudo -l

    [IMG]
    [IMG]
    LD_PRELOAD и LD_LIBRARY_PATH - наследуются из окружения пользователя.
    LD_PRELOAD - загружает общие объекты раньше других при запуске программы.
    LD_LIBRARY_PATH - содержит список каталогов, в которых в первую очередь ищутся общие библиотеки.


    Создайте общий объект, используя код, расположенный в /home/user/tools/sudo/preload.c:
    ⁡gcc -fPIC -shared -nostartfiles -o /tmp/preload.so /home/user/tools/sudo/preload.c


    Запустите одну из программ, которые вам разрешено запускать через sudo (список при выполнении sudo -l), при этом установите переменную окружения LD_PRELOAD на полный путь к новому общему объекту:
    ⁡sudo LD_PRELOAD=/tmp/preload.so program-name-here

    Должна появиться root-оболочка.


    Исполняемые файлы SUID / SGID - известные уязвимости
    Найдём все исполняемые файлы SUID/SGID:
    ⁡find / -type f -a \( -perm -u+s -o -perm -g+s \) -exec ls -l {} \; 2> /dev/null

    [IMG]
    Обратите внимание, что в результатах появляется /usr/sbin/exim-4.84-3. Попробуйте найти известный эксплойт для этой версии exim. Exploit-DB - хорошее места для поиска!
    Локальный эксплойт для повышения привилегий, точно соответствующий этой версии exim, должен быть доступен.
    [IMG]

    [IMG]
    Копируем не закоментированные строки и вставляем в терминал:
    [IMG]
    Мы получили root shell, профит.


    SUID / SGID - Исполняемые файлы - инъекция в общие объекты
    Исполняемый файл /usr/local/bin/suid-so SUID уязвим для инъекций в общие объекты.
    Сначала запустите файл и обратите внимание, что в настоящее время он отображает прогресс-бар перед завершением работы:
    ⁡/usr/local/bin/suid-so

    [IMG]
    Запустите strace на файле и найдите в выводе вызовы open/access и ошибки "no such file":
    ⁡strace /usr/local/bin/suid-so 2>&1 | grep -iE "open|access|no such file"

    [IMG]
    Обратите внимание, что исполняемый файл пытается загрузить общий объект /home/user/.config/libcalc.so в нашем домашнем каталоге, но он не может быть найден.

    Создайте каталог .config для файла libcalc.so:
    ⁡mkdir /home/user/.config

    Пример кода можно найти в /home/user/tools/suid/libcalc.c. Он просто спавнит оболочку Bash. Скомпилируйте код в объект в том месте, где его искал исполняемый файл suid-so:
    ⁡gcc -shared -fPIC -o /home/user/.config/libcalc.so /home/user/tools/suid/libcalc.c

    Снова запустите файл suid-so, и обратите внимание, что на этот раз вместо прогрессбара мы получим оболочку root.

    ⁡[SIZE=4][B]/usr/local/bin/suid-so[/B][/SIZE]

    [IMG]
    И мы root!

    Исполняемые файлы SUID / SGID - злоупотребление возможностями оболочки
    Исполняемый файл /usr/local/bin/suid-env2 идентичен /usr/local/bin/suid-env, за исключением того, что для запуска веб-сервера apache2 он использует полный путь к исполняемому файлу службы (/usr/sbin/service).

    Проверьте это с помощью строк:
    ⁡strings /usr/local/bin/suid-env2

    [IMG]
    В версиях Bash <4.2-048 можно определить функции оболочки с именами, напоминающими пути к файлам, а затем экспортировать эти функции, чтобы они использовались вместо любого реального исполняемого файла по этому пути.

    Убедитесь, что версия Bash, установленная на виртуальной машине Debian, не превышает 4.2-048:
    ⁡/bin/bash --version

    [IMG]
    Создайте функцию Bash с именем "/usr/sbin/service", которая запускает новую оболочку Bash (с использованием параметра -p, чтобы сохранить права доступа), и экспортируйте эту функцию:
    ⁡function /usr/sbin/service { /bin/bash -p; }

    ⁡export -f /usr/sbin/service

    Запустите исполняемый файл suid-env2, чтобы получить права root:
    ⁡/usr/local/bin/suid-env2

    Мы root!


    Passwords & Keys

    Если пользователь случайно введет свой пароль в командной строке, а не в подсказке пароля, он может быть записан в файл истории.

    Просмотрите содержимое всех скрытых файлов истории в домашнем каталоге пользователя:
    ⁡cat ~/.*history | less

    [IMG]
    Обратите внимание, что пользователь уже пытался подключиться к серверу MySQL, используя имя пользователя "root" и пароль, введенный через командную строку.

    Переключитесь на пользователя root, используя пароль:

    ⁡[SIZE=4][B]su root[/B][/SIZE]



    Passwords & Keys - Конфигурационные файлы
    Конфигурационные файлы часто содержат пароли в виде открытого текста или в других форматах.
    Просмотрите содержимое домашнего каталога пользователя:

    ⁡[B]ls /home/user[/B]

    [IMG]

    Обратите внимание на наличие файла конфигурации my***.o***. Просмотрите содержимое этого файла:
    ⁡cat /home/user/my***.o***

    [IMG]
    Файл должен содержать ссылку на другое место, где можно найти учетные данные пользователя root.
    [IMG]
    Просмотрите содержимое файла:
    ⁡[B][SIZE=4]cat /etc/open***/auth.txt[/SIZE][/B]

    [IMG]
    Переключитесь на пользователя root, используя учетные данные:
    ⁡su root

    Мы получили root!

    Пока что на этом всё :falling:
    По возможности буду дополнять

    Если нашли ошибку - скажите, буду благодарен
     
    16 май 2024 Изменено
Top