Следующая новость
Предыдущая новость

Дьявольски-красный пентест. Строим цепочки туннелей через докер-контейнеры на виртуалке с Hack The Box

17.02.2020 13:02
Дьявольски-красный пентест. Строим цепочки туннелей через докер-контейнеры на виртуалке с Hack The Box

Содержание статьи

  • Разведка
  • Сканирование портов
  • Веб — порт 1880
  • Node-RED
  • Node-RED Flow
  • Spice must FLOW
  • Загрузка файлов из командной строки
  • Докер. Контейнер I: nodered
  • Host Discovery
  • Сканирование неизвестных хостов
  • Туннелирование... как много в этом звуке
  • Reverse SSH (пример)
  • Chisel
  • Докер. Контейнер II: www
  • Больше туннелей!
  • Докер. Контейнер III: backup
  • Получение root-шелла
  • Примечание
  • Финальный захват хоста Reddish
  • Эпилог
  • Конфигурация docker
  • Chisel SOCKS

Что делать, когда тебе нужно захватить контроль над хостом, который находится в другой подсети? Верно — много запутанных туннелей! Сегодня мы рассмотрим техники туннелирования при пентесте — на примере хардкорной виртуалки Reddish (уровень сложности Insane — 8,0 баллов из 10) с CTF-площадки Hack The Box.

Встретимся со средой визуального программирования Node-RED, где в прямом смысле «построим» реверс-шелл; проэксплуатируем слабую конфигурацию СУБД Redis; используем инструмент зеркалирования файлов rsync для доступа к чужой файловой системе; наконец, создадим кучу вредоносных задач cron на любой вкус. Но самое интересное, что управлять хостом мы будем, маршрутизируя трафик по докер-контейнерам через несколько TCP-туннелей. Погнали!

Разведка

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

Сканирование портов

Расчехляем Nmap — и в бой! Сразу скажу, что дефолтные 1000 портов, которые Nmap сканирует в первую очередь, оказались закрыты. Так что будем исследовать весь диапазон TCP на высокой скорости.

root@kali:~# nmap -n -Pn --min-rate=5000 -oA nmap/tcp-allports 10.10.10.94 -p-
root@kali:~# cat nmap/tcp-allports.nmap
...
Host is up (0.12s latency).
Not shown: 65534 closed ports
PORT STATE SERVICE
1880/tcp open vsat-control
...

После полного сканирования, как видишь, откликнулся только один порт — неизвестный мне 1880-й. Попробуем вытащить из него больше информации.

root@kali:~# nmap -n -Pn -sV -sC -oA nmap/tcp-port1880 10.10.10.94 -p1880
root@kali:~# cat nmap/tcp-port1880.nmap
...
PORT STATE SERVICE VERSION
1880/tcp open http Node.js Express framework
|_http-title: Error
...

Сканер говорит, что на этом порту развернут Express — фреймворк веб-приложений Node.js. А когда видишь приставку «веб» — в первую очередь открываешь браузер…

Веб — порт 1880

Переход на страницу http://10.10.10.94:1880/ выдает лишь скупое сообщение об ошибке.

Не найдена запрашиваемая страница (404)

Есть два пути разобраться, что за приложение висит на этом порту.

  1. Сохранить значок веб-сайта к себе на машину (обычно они живут по адресу /favicon.ico) и попытаться найти его с помощью Reverse Image Search.
  2. Спросить у поисковика, с чем обычно ассоциирован порт 1880.

Второй вариант более «казуальный», но столь же эффективный: уже на первой ссылке по такому запросу мне открылась Истина.

Дьявольски-красный пентест. Строим цепочки туннелей через докер-контейнеры на виртуалке с Hack The Box
Гуглим информацию о 1880-м порте (источник — speedguide.net)

Node-RED

Если верить официальному сайту, Node-RED — это среда для визуального программирования, где можно строить связи между разными сущностями (от локальных железок до API онлайн-сервисов). Чаще всего, как я понял, о Node-RED говорят в контексте управления умными домами и вообще девайсами IoT.

Окей, софт мы идентифицировали, но ошибка доступа к веб-странице от этого никуда не делась.

root@kali:~# curl -i http://10.10.10.94:1880
HTTP/1.1 404 Not Found
X-Powered-By: Express
Content-Security-Policy: default-src 'self'
X-Content-Type-Options: nosniff
Content-Type: text/html; charset=utf-8
Content-Length: 139
Date: Thu, 30 Jan 2020 21:53:05 GMT
Connection: keep-alive

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /</pre>
</body>
</html>

Первое, что приходит в голову, — запустить брутер директорий. Но перед этим попробуем просто поменять запрос с GET на POST.

root@kali:~# curl -i -X POST http://10.10.10.94:1880
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 86
ETag: W/"56-dJUoKg9C3oMp/xaXSpD6C8hvObg"
Date: Thu, 30 Jan 2020 22:04:20 GMT
Connection: keep-alive

{"id":"a237ac201a5e6c6aa198d974da3705b8","ip":"::ffff:10.10.14.19","path":"/red/{id}"}

Ну вот и обошлись без брутеров. Как видишь, при обращении к корню веб-сайта через POST сервер возвращает пример того, как должно выглядеть тело запроса. В принципе, до этого можно дойти логически: в документации к API Node-RED тонны именно POST-запросов.

Итак, при переходе по http://10.10.10.94:1880/red/a237ac201a5e6c6aa198d974da3705b8/ мы видим следующую картину.

Дьявольски-красный пентест. Строим цепочки туннелей через докер-контейнеры на виртуалке с Hack The Box
Рабочая область среды Node-RED

Давай разбираться, что здесь можно наворотить.

Node-RED Flow

Первая ассоциация при виде рабочей области Node-RED — «песочница». И так видно, что эта штука способна на многое, однако нам нужно всего ничего: получить шелл на сервере.

Дьявольски-красный пентест. Строим цепочки туннелей через докер-контейнеры на виртуалке с Hack The Box
Список узлов среды Node-RED

Я пролистал вниз панель «строительных блоков» (или «узлов», как называет их Node-RED) слева и увидел вкладку Advanced — здесь спряталась дорогая сердцу любого хакера функция exec.

Spice must FLOW

В философии Node-RED каждая комбинация, которую ты соберешь в рабочей области, называется «флоу» (он же поток). Потоки можно строить, выполнять, импортировать и экспортировать в JSON. При нажатии на кнопку Deploy сервер (как ни странно) деплоит все потоки со всех вкладок рабочей области.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

1 год

7690 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости