Если Node.js работает с включенным инспектором, локальный отладочный порт становится прямым путем к правам суперпользователя. Через протокол DevTools можно выполнить JavaScript в контексте процесса. После получения удаленного выполнения кода это позволяет полностью контролировать машину.

Разведка

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

Добавляем IP-адрес в /etc/hosts:

10.129.82.186   reactor.htb

Сканирование портов показывает два открытых сервиса:

  • 22 — OpenSSH 9.6p1
  • 3000 — веб-сервер Next.js

На порте 3000 расположена панель мониторинга без авторизации. Заголовки ответа указывают на использование Next.js.

Точка входа

Первый шаг — проверить известные уязвимости в используемом стеке. Сканер Nuclei находит потенциальные проблемы в конфигурации приложения.

Панель мониторинга на порте 3000 работает в режиме разработки с включенным инспектором Node.js. Это означает, что отладочный порт доступен локально и может быть использован для выполнения произвольного кода с правами пользователя, под которым запущено приложение.

Посредством протокола DevTools можно подключиться к отладчику и передать команды JavaScript, которые выполнятся в контексте процесса Node.js. Если этот процесс запущен от пользователя с повышенными привилегиями, получить права суперпользователя становится возможно через стандартные системные вызовы.