Введение
В этом лабораторном занятии мы научимся находить и использовать уязвимые конфигурационные файлы в системе Linux для повышения своих привилегий до привилегий суперпользователя (root). Цель состоит в том, чтобы получить более глубокое понимание конфигурационных файлов веб-сервисов и конфигурационных файлов, связанных с пользователями, а также понять, как использовать их для повышения привилегий. Мы предполагаем, что мы уже получили оболочку с низкими привилегиями, например, от пользователя www-data, с помощью уязвимости веб-приложения, и будем изучать методы повышения доступа до привилегий суперпользователя.
Исследование конфигурационных файлов веб - сервиса
Конфигурационные файлы веб-сервисов могут содержать конфиденциальную информацию, такую как учетные данные базы данных, которые можно использовать для повышения привилегий, если администратор повторно использовал пароли.
Сначала откройте терминал и перейдите в каталог
/home/labex/project.cd /home/labex/projectНачнем с инициализации лабораторной среды:
./env_setup_1.shПосле инициализации мы работаем от имени пользователя
www-data, имитируя оболочку с низкими привилегиями, полученную с помощью уязвимости веб-приложения.Веб-сервисы в Linux обычно хранятся в каталоге
/var/www. Следует обратить внимание на следующие файлы:database.phpuser.php*.configconfig.php
Эти файлы можно найти с помощью следующей команды:
find /var/www -type f \( -iname "user.php" -o -iname "database.php" -o -iname "config.php" -o -iname "*.config" \) 2> /dev/nullОжидаемый вывод:
/var/www/wordpress/wp-admin/includes/user.php /var/www/wordpress/wp-includes/user.php /var/www/wordpress/wp-content/plugins/akismet/views/config.phpКроме того, если целевая система использует систему управления контентом (Content Management System, CMS), можно поискать стандартное расположение файла подключения к базе данных для этой конкретной CMS.
В этой лабораторной среде сервер использует CMS WordPress. В результате поиска мы обнаружили, что конфигурация базы данных WordPress хранится в файле
/var/www/wordpress/wp-config.php:more /var/www/wordpress/wp-config.phpЭтот файл содержит учетные данные для учетной записи root MySQL:
/** MySQL database username */ define( 'DB_USER', 'root' ); /** MySQL database password */ define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );Учитывая возможность повторного использования пароля администратором, мы можем попробовать войти в систему от имени суперпользователя (root) с использованием этого пароля:
su -К сожалению, этот пароль не подходит для учетной записи root.
Далее мы можем войти в базу данных MySQL и поискать больше информации:
mysql -u root -p -h 127.0.0.1Введите пароль из файла
wp-config.php:cD8M2M8fMiDHu4m1Внутри базы данных MySQL можно выполнить следующие команды, чтобы собрать больше информации:
Проверьте доступные базы данных:
show databases;Выберите базу данных
ROB:use ROB;Выведите список таблиц в базе данных
ROB:show tables;Выберите таблицу
rob_user:select * from rob_user;Из базы данных мы получаем еще два набора учетных данных:
root:CMPc5MoAGf alice:psoj9apv4uВыйдите из базы данных MySQL:
exitМы можем попробовать войти в систему от имени суперпользователя (root) с использованием пароля
CMPc5MoAGf:su -Введите пароль, полученный из базы данных:
CMPc5MoAGfНа этот раз мы успешно получаем доступ с привилегиями суперпользователя!
Создайте файл с именем
proof.txtв каталоге/root, чтобы продемонстрировать успешное повышение привилегий:echo "Success" > /root/proof.txtПроверьте, что файл был создан:
ls /root/proof.txt
В этом шаге мы научились находить и использовать конфиденциальную информацию в конфигурационных файлах веб-сервисов для повышения привилегий. Основная идея заключается в поиске аутентификационных учетных данных на сервере и использовании возможного повторного использования паролей для повышения привилегий.
Исследование конфигурационных файлов, связанных с пользователями
В этом шаге мы сосредоточимся на конфигурационных файлах, связанных с пользователями, которые могут содержать конфиденциальную информацию.
После предыдущего шага вы, возможно, все еще находитесь в оболочке с привилегиями суперпользователя. В этом шаге мы вернемся к пользователю labex, выполнив следующую команду:
su - labex
Сначала перейдите в каталог
/home/labex/project.cd /home/labex/projectНачнем с инициализации лабораторной среды:
./env_setup_2.shПосле инициализации мы работаем от имени пользователя
user001.Два основных конфигурационных файла, связанных с пользователями, которые нужно исследовать:
~/.bash_profile: Используется для настройки переменных окружения и запускаемых программ. Этот файл выполняется при входе пользователя в систему (login).~/.bash_history: Файл в домашнем каталоге каждого пользователя, который записывает историю команд, введенных пользователем в оболочке. Обычно хранит последние 1000 команд (эта функция может быть отключена в некоторых дистрибутивах Linux).
Начнем с проверки файла
~/.bash_profile:cat ~/.bash_profileОжидаемый вывод:
cat: /home/user001/.bash_profile: No such file or directoryВ данном случае пользователь
user001, похоже, не использует файл~/.bash_profile.Далее проверим файл
~/.bash_history:cat ~/.bash_historyЗдесь мы находим команду, записанную в истории:
... echo user001:09FMWNFS7n | chpasswd ...Эта команда показывает, что пароль пользователя
user001был изменен на09FMWNFS7n.Мы можем попробовать использовать этот пароль для повышения привилегий:
sudo whoamiИ введите пароль, найденный в файле
~/.bash_history:09FMWNFS7nПароль подходит, и мы можем выполнять команды с привилегиями
sudo.Чтобы получить оболочку с привилегиями суперпользователя, можно использовать следующую команду:
sudo /bin/bash -pМы успешно получили оболочку с привилегиями суперпользователя, используя информацию из истории команд пользователя.
Наконец, создайте файл с именем
success.txtв каталоге/root, чтобы завершить лабораторную работу:echo "Congratulations" | sudo tee /root/success.txt
Резюме
В этом лабораторном занятии мы научились находить и использовать конфиденциальную информацию в конфигурационных файлах веб-сервисов и конфигурационных файлах, связанных с пользователями, для повышения привилегий в системе Linux. Мы изучили методы поиска файлов, которые могут содержать аутентификационные учетные данные, такие как файлы подключения к базе данных, история команд пользователя и другие конфигурационные файлы. Используя возможность повторного использования паролей, мы смогли получить доступ с привилегиями суперпользователя (root).
Основная идея заключается в том, чтобы всегда быть на чеку по поводу конфиденциальной информации, хранящейся в системе, так как она может потенциально привести к повышению привилегий. Хотя в этом лабораторном занятии были рассмотрены конкретные типы файлов, важно сохранять мысль о непрерывном поиске любых файлов или информации, которая может быть использована для повышения привилегий.