
Фреймворк эксплойтов для RAW-протокола принтеров Epson
Репозиторий: https://github.com/J4ck3LSyN-Gen2/CVE-2026-39047
PoC-скрипт: poc.py
Макет цели: mock_printer.py
Автор: J4ck3LSyN
Данный фреймворк демонстрирует уязвимость CVE-2026-39047 — удалённое переполнение буфера в многофункциональных принтерах Epson (в частности, L14150 FL27PB) при обработке искажённых или избыточно больших полезных нагрузок по RAW-протоколу TCP-печати (обычно порт 9100).
Успешная эксплуатация может привести к произвольному выполнению кода во встроенной среде принтера, что позволяет:
PoC фокусируется на кадрировании транспорта, обфускации полезных нагрузок, техниках фаззинга и многоступенчатом пост-эксплуатационном поведении, подходящих для red team-тестирования, исследования уязвимостей и защитного тестирования.
[!WARNING]
- Этот инструмент может (и будет) приводить к удалённому выполнению кода (RCE) на уязвимых принтерах.
- Несанкционированное использование, сканирование или эксплуатация систем, которыми вы НЕ владеете или на тестирование которых у вас НЕТ ЯВНОГО ПИСЬМЕННОГО РАЗРЕШЕНИЯ, — это НЕЗАКОННО и может нарушать законы о компьютерном мошенничестве и злоупотреблениях (например, CFAA в США), нормативные акты о защите данных и политики организации.
Автор не несёт НИКАКОЙ ОТВЕТСТВЕННОСТИ за любой ущерб, потерю данных, нарушение работы сервисов или юридические последствия, возникшие в результате использования или неправильного использования этого кода.- Используйте только в изолированных лабораторных средах на устройствах, которыми вы управляете.
- Всегда получайте явное разрешение перед любым тестированием.
- Код включает dry-run и пассивный режимы для содействия безопасному анализу.
Ответственное раскрытие информации и этичное использование настоятельно рекомендуются.- Своевременно устанавливайте исправления на устройства, как только появятся обновления от вендора.
- Принтеры часто находятся во внутренних сетях с высоким уровнем доверия и ограниченным мониторингом, что делает их привлекательной поверхностью атаки.
Ссылки:
PRT2).mock_printer.py для безопасного локального тестирования (завершается сбоем при избыточно больших полезных нагрузках).socket, asyncio, argparse, zlib, hashlib и т.д.)Клонируйте репозиторий:
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-39047.git
cd CVE-2026-39047
Сделайте скрипты исполняемыми:
chmod +x poc.py mock_printer.py
(Необязательно) Протестируйте с макетом принтера в отдельном терминале:
./mock_printer.py
./poc.py -t <TARGET_IP> [OPTIONS]
Примеры:
Базовое тестирование:
./poc.py -t 192.168.1.100
Запуск фаззинга:
./poc.py -t 192.168.1.100 --fuzz --techniques cyclic random
Многоступенчатый захват (только для лаборатории):
./poc.py -t 192.168.1.100 --hijack --objective shell --dry-run
Полная кампания с макетом цели:
# Terminal 1
./mock_printer.py
# Terminal 2
./poc.py -t 127.0.0.1 --fuzz --hijack --objective stage1
bTransportFrame() оборачивает полезные нагрузки заголовком PRT2 + длиной.lObf): сжатие zlib → динамическая XOR-маска (на основе seed) → Base64.gModernPayload() и gPostPayload() для различных паттернов и многоступенчатых команд.См. встроенные docstring и комментарии в коде для получения более детальной информации.
PRT2.Этот PoC предоставлен строго в образовательных, исследовательских целях и для авторизованного тестирования безопасности. Неправильное использование может привести к серьёзным последствиям. Владелец репозитория не несёт ответственности за любой причинённый ущерб.
| Параметр | Описание |
|---|
-t, --target | IP-адрес цели (обязательно) |
-p, --port | Порт (по умолчанию: 9100) |
--passive | Режим пассивной разведки (отправлять только пробные полезные нагрузки) |
--fuzz | Включить фаззинг с использованием нескольких техник |
--hijack | Включить пост-эксплуатационное развёртывание |
--objective | stage1 | shell | beacon | persistence |
--callback | Необязательный идентификатор/строка обратного вызова |
--capability | minimal | busybox | linux (влияет на обёртку команд) |
--dry-run | Генерировать полезные нагрузки, но не отправлять |
--techniques | Список через пробел (например, cyclic format sled random) |
--delay | Задержка между полезными нагрузками в секундах (по умолчанию: 1.6) |