Внимание!: эта статья для новичков, просьба проявить понимание. Спасибо. Введение Я хочу показать вам различные техники повышения привилегий в Linux. Это лишь базовые знания. Если что то работет у меня на примерах, то это не значит что оно будет работать и у вас Тут я просто показываю примеры PrivEsc. а вы уже играете от этого Все ip адреса показаные тут не имеют ко мне никакого отношения Эскалация привелегий далее будет просто - PrivEsc Sudo + GTFOBinsВыводим список програм которые Sudo позволяет нам использовать: sudo -l Мы получили такой список: Далее заходим на GTFOBins и проверяем есть ли на нем нужные програмы и подходят ли они нам К примеру мы можем взять "Find" и использовать его Мы видим что у него есть "Sudo" и давайте посмотрим что нужно для PrivEsc Нам дали команду sudo find . -exec /bin/sh \; -quit Вводим её и теперь мы root, профит. (проверить можно с помощью команды "whoami") Sudo - переменные окружения Sudo может быть настроен на наследование определенных переменных окружения из окружения пользователя. Проверим, какие переменные окружения наследуются (нам нужна верхняя строка с опциями env_keep): sudo -l 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 Обратите внимание, что в результатах появляется /usr/sbin/exim-4.84-3. Попробуйте найти известный эксплойт для этой версии exim. Exploit-DB - хорошее места для поиска! Локальный эксплойт для повышения привилегий, точно соответствующий этой версии exim, должен быть доступен. Копируем не закоментированные строки и вставляем в терминал: Мы получили root shell, профит. SUID / SGID - Исполняемые файлы - инъекция в общие объекты Исполняемый файл /usr/local/bin/suid-so SUID уязвим для инъекций в общие объекты. Сначала запустите файл и обратите внимание, что в настоящее время он отображает прогресс-бар перед завершением работы: /usr/local/bin/suid-so Запустите strace на файле и найдите в выводе вызовы open/access и ошибки "no such file": strace /usr/local/bin/suid-so 2>&1 | grep -iE "open|access|no such file" Обратите внимание, что исполняемый файл пытается загрузить общий объект /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] И мы root! Исполняемые файлы SUID / SGID - злоупотребление возможностями оболочки Исполняемый файл /usr/local/bin/suid-env2 идентичен /usr/local/bin/suid-env, за исключением того, что для запуска веб-сервера apache2 он использует полный путь к исполняемому файлу службы (/usr/sbin/service). Проверьте это с помощью строк: strings /usr/local/bin/suid-env2 В версиях Bash <4.2-048 можно определить функции оболочки с именами, напоминающими пути к файлам, а затем экспортировать эти функции, чтобы они использовались вместо любого реального исполняемого файла по этому пути. Убедитесь, что версия Bash, установленная на виртуальной машине Debian, не превышает 4.2-048: /bin/bash --version Создайте функцию 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 Обратите внимание, что пользователь уже пытался подключиться к серверу MySQL, используя имя пользователя "root" и пароль, введенный через командную строку. Переключитесь на пользователя root, используя пароль: [SIZE=4][B]su root[/B][/SIZE] Passwords & Keys - Конфигурационные файлы Конфигурационные файлы часто содержат пароли в виде открытого текста или в других форматах. Просмотрите содержимое домашнего каталога пользователя: [B]ls /home/user[/B] Обратите внимание на наличие файла конфигурации my***.o***. Просмотрите содержимое этого файла: cat /home/user/my***.o*** Файл должен содержать ссылку на другое место, где можно найти учетные данные пользователя root. Просмотрите содержимое файла: [B][SIZE=4]cat /etc/open***/auth.txt[/SIZE][/B] Переключитесь на пользователя root, используя учетные данные: su root Мы получили root! Пока что на этом всё По возможности буду дополнять Если нашли ошибку - скажите, буду благодарен