# Домашняя работа №2 (Задания с root-me)
###### tags: `Домашние задания Cross Platform Privileges Escalation`
## Задание №1
1. Заходим на виртуалку по полученному логину и паролю `ssh -p 2222 app-script-ch11@challenge02.root-me.org`
2. Проверяем какие файлы нам доступны командой `ls -lh`

3. Проверяем содержимое файлов командой `cat`
В файле **ch11.c** обнаруживаем код на языке C++, который исполняется файлом **ch11**

В коде видим команду установку действительного и эффективного id процесса, затем системный вызов команды `ls` к пути с паролем.
4. Используем полученную информацию для получения пароля. Задача попробовать заменть команду ls на любую команду вывода например less. Для этого будем использовать папку tmp, а также вносить изменения в переменную PATH, чтобы явно указать путь к исполняемому файлу.
`cp /bin/less /tmp/ls` - копируем нужный исполняемый файл
`export PATH=/tmp/` - явно указываем путь к испольняемому файлу
`./ch11` - запускаем скомпилированный файл

В результате получаем нужный нам пароль.

## Задание №2
1. Заходим на виртуалку по полученному логину и паролю `ssh -p 2222 app-script-ch1@challenge02.root-me.org`
2. Проверяем какие файлы нам доступны командой `ls -lh`

3. Мы можем прочитать только файл readme.md. С помощью `cat` просматриваем его.

Находим подсказку, что пароль можно найти по пути **/challenge/app-script/ch1/ch1cracked/.passwd
4. Попытки обратиться к файлу бесполезны. С помощью команды `sudo -l` проверяем есть ли права у пользователя app-script-ch1-cracked выполнять какие-либо без использования пароля.

Можем использовать `cat`, но по другому пути
5. Обнаруживаем, что в пути есть \*, которая позволяет нам указать любой путь далее. Можем это использовать, но нужно также указать, что исполнятся данная команда будет от имени другого пользователя - `sudo -u app-script-ch1-cracked /bin/cat /challenge/app-script/ch1/notes/../ch1cracked/.passwd`

Получаем пароль.
## Задание №3
Усложненный вариант 1 задания.
1. Заходим на виртуалку по полученному логину и паролю `ssh -p 2222 app-script-ch12@challenge02.root-me.org`
2. Проверяем какие файлы нам доступны командой `ls -lh`

3. Проверяем содержимое файлов командой `cat`
В файле **ch12.c** обнаруживаем код на языке C++, который исполняется файлом **ch12**

В коде видим команду установку действительного и эффективного пользователя процесса, затем системный вызов команды `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` - запускаем скомпилированный файл

В результате получаем нужный нам пароль.

## Задание №4
1. Заходим на виртуалку по полученному логину и паролю ` ssh -p 2222 app-script-ch4@challenge02.root-me.org`
2. Проверяем какие файлы нам доступны командой `ls -lah`

3. Обращаем внимание на символьную ссылку cron.d, которая ссылается на путь `/tmp/._cron`, очень похоже на путь к выполнению задачи cron или какого либо скрипта, также видим, что можем читать файл ch4. Скорее всего, нам нужно получить содержимое файла .passwd. Посмотрим содержимое файла ch4 командной `cat`.

Находим подсказку, что выполнение скрипта происходит каждую минуту, а также как видно из скрипта по пути `/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`

4. Дожидаемся около минуты, пока исполнится скрипт. Проверяем содержимое файла /tmp/1 с помощью `cat`. Получаем пароль.
