# Домашняя работа №2 (Задания с root-me) ###### tags: `Домашние задания Cross Platform Privileges Escalation` ## Задание №1 1. Заходим на виртуалку по полученному логину и паролю `ssh -p 2222 app-script-ch11@challenge02.root-me.org` 2. Проверяем какие файлы нам доступны командой `ls -lh` ![](https://i.imgur.com/RGeu43Y.png) 3. Проверяем содержимое файлов командой `cat` В файле **ch11.c** обнаруживаем код на языке C++, который исполняется файлом **ch11** ![](https://i.imgur.com/4nknNkX.png) В коде видим команду установку действительного и эффективного id процесса, затем системный вызов команды `ls` к пути с паролем. 4. Используем полученную информацию для получения пароля. Задача попробовать заменть команду ls на любую команду вывода например less. Для этого будем использовать папку tmp, а также вносить изменения в переменную PATH, чтобы явно указать путь к исполняемому файлу. `cp /bin/less /tmp/ls` - копируем нужный исполняемый файл `export PATH=/tmp/` - явно указываем путь к испольняемому файлу `./ch11` - запускаем скомпилированный файл ![](https://i.imgur.com/jI10NI2.png) В результате получаем нужный нам пароль. ![](https://i.imgur.com/rMCfTaQ.png) ## Задание №2 1. Заходим на виртуалку по полученному логину и паролю `ssh -p 2222 app-script-ch1@challenge02.root-me.org` 2. Проверяем какие файлы нам доступны командой `ls -lh` ![](https://i.imgur.com/sxUHQua.png) 3. Мы можем прочитать только файл readme.md. С помощью `cat` просматриваем его. ![](https://i.imgur.com/AMOyvMw.png) Находим подсказку, что пароль можно найти по пути **/challenge/app-script/ch1/ch1cracked/.passwd 4. Попытки обратиться к файлу бесполезны. С помощью команды `sudo -l` проверяем есть ли права у пользователя app-script-ch1-cracked выполнять какие-либо без использования пароля. ![](https://i.imgur.com/tFsLTd0.png) Можем использовать `cat`, но по другому пути 5. Обнаруживаем, что в пути есть \*, которая позволяет нам указать любой путь далее. Можем это использовать, но нужно также указать, что исполнятся данная команда будет от имени другого пользователя - `sudo -u app-script-ch1-cracked /bin/cat /challenge/app-script/ch1/notes/../ch1cracked/.passwd` ![](https://i.imgur.com/AFjbBkJ.png) Получаем пароль. ## Задание №3 Усложненный вариант 1 задания. 1. Заходим на виртуалку по полученному логину и паролю `ssh -p 2222 app-script-ch12@challenge02.root-me.org` 2. Проверяем какие файлы нам доступны командой `ls -lh` ![](https://i.imgur.com/WyMX6fH.png) 3. Проверяем содержимое файлов командой `cat` В файле **ch12.c** обнаруживаем код на языке C++, который исполняется файлом **ch12** ![](https://i.imgur.com/JCyzSo4.png) В коде видим команду установку действительного и эффективного пользователя процесса, затем системный вызов команды `ls` к пути с паролем. 4. Используем полученную информацию для получения пароля. Задача попробовать заменть команду ls на команду вывода, которая может проигнорировать параметры например less. Для этого будем использовать папку tmp, а также вносить изменения в переменную PATH, чтобы явно указать путь к исполняемому файлу. `cp /bin/less /tmp/ls` - копируем нужный исполняемый файл Обнаруживаем, что нет прав для копирование эту директорию `mkdir /tmp/1` - попробуем создать папку `cp /bin/less /tmp/1/ls` - копируем в созданную папку `export PATH=/tmp/1/` - явно указываем путь к испольняемому файлу `./ch12` - запускаем скомпилированный файл ![](https://i.imgur.com/b3UxDwN.png) В результате получаем нужный нам пароль. ![](https://i.imgur.com/cMOaxDd.png) ## Задание №4 1. Заходим на виртуалку по полученному логину и паролю ` ssh -p 2222 app-script-ch4@challenge02.root-me.org` 2. Проверяем какие файлы нам доступны командой `ls -lah` ![](https://i.imgur.com/sm9HEp3.png) 3. Обращаем внимание на символьную ссылку cron.d, которая ссылается на путь `/tmp/._cron`, очень похоже на путь к выполнению задачи cron или какого либо скрипта, также видим, что можем читать файл ch4. Скорее всего, нам нужно получить содержимое файла .passwd. Посмотрим содержимое файла ch4 командной `cat`. ![](https://i.imgur.com/ik5llap.png) Находим подсказку, что выполнение скрипта происходит каждую минуту, а также как видно из скрипта по пути `/tmp/._cron/` выполняются скрипты. Воспользуемся этим, создадим по пути `/tmp/._cron/` скрипт (например, с название 1234), в скрипте укажем вывод значения .passwd в файл, а также выдадим права на этот файл. ``` #!/bin/bash /bin/cat /challenge/app-script/ch4/.passwd > /tmp/1; /bin/chmod 777 /tmp/1 ``` Сохраняем и выходим. Выдаем созданному скрипту права - `chmod 777 /tmp/._cron/1234` ![](https://i.imgur.com/98uRRFW.png) 4. Дожидаемся около минуты, пока исполнится скрипт. Проверяем содержимое файла /tmp/1 с помощью `cat`. Получаем пароль. ![](https://i.imgur.com/gP0lyHI.png)