
Framework di Exploit per il Protocollo RAW delle Stampanti Epson
Repository: https://github.com/J4ck3LSyN-Gen2/CVE-2026-39047
Script PoC: poc.py
Target Mock: mock_printer.py
Autore: J4ck3LSyN
Questo framework dimostra la vulnerabilità CVE-2026-39047 - un buffer overflow remoto in stampanti multifunzione Epson (in particolare la L14150 FL27PB) durante l'elaborazione di payload malformati o sovradimensionati tramite il protocollo di stampa RAW TCP (tipicamente porta 9100).
Uno sfruttamento riuscito può portare all'esecuzione arbitraria di codice nell'ambiente embedded della stampante, consentendo:
Il PoC si concentra su framing del trasporto, offuscamento del payload, tecniche di fuzzing e comportamenti post-sfruttamento a fasi adatti per red teaming, ricerca sulle vulnerabilità e test difensivi.
[!WARNING]
- Questo strumento può (e porterà) all'esecuzione remota di codice (RCE) su stampanti vulnerabili.
- L'uso non autorizzato, la scansione o lo sfruttamento di sistemi di cui NON si è proprietari o per i quali NON si ha ESPLICITA AUTORIZZAZIONE SCRITTA per testarli è ILLEGALE e può violare le leggi contro le frodi e gli abusi informatici (ad es. CFAA negli USA), i regolamenti sulla protezione dei dati e le politiche organizzative.
L'autore declina OGNI RESPONSABILITÀ per qualsiasi danno, perdita di dati, interruzione del servizio o conseguenze legali derivanti dall'uso o dall'abuso di questo codice.- Utilizzare solo in ambienti di laboratorio isolati con dispositivi di cui si ha il controllo.
- Ottenere sempre autorizzazione esplicita prima di qualsiasi test.
- Il codice include modalità dry-run e passive per facilitare un'analisi sicura.
La divulgazione responsabile e l'uso etico sono fortemente incoraggiati.- Applicare prontamente gli aggiornamenti del firmware non appena disponibili dal produttore.
- Le stampanti spesso si trovano su reti interne con elevata fiducia e monitoraggio limitato, rendendole superfici d'attacco interessanti.
Riferimenti:
PRT2).mock_printer.py per test locali sicuri (crash su payload sovradimensionati).socket, asyncio, argparse, zlib, hashlib, ecc.)Clona il repository:
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-39047.git
cd CVE-2026-39047
Rendi eseguibili gli script:
chmod +x poc.py mock_printer.py
(Opzionale) Test con la stampante mock in un terminale:
./mock_printer.py
./poc.py -t <TARGET_IP> [OPZIONI]
| Opzione | Descrizione |
|---|---|
-t, --target | Indirizzo IP del target (obbligatorio) |
-p, --port | Porta (default: 9100) |
--passive | Modalità di ricognizione passiva (invia solo payload di sonda) |
--fuzz | Abilita fuzzing multi-tecnica |
--hijack | Abilita staging post-sfruttamento |
--objective | stage1 | shell | beacon | persistence |
--callback | Identificatore/stringa di callback opzionale |
--capability | minimal | busybox | linux (influisce sul wrapping dei comandi) |
--dry-run | Genera payload ma non inviarli |
--techniques | Elenco separato da spazi (ad es. cyclic format sled random) |
--delay | Ritardo tra payload in secondi (default: 1.6) |
Esempi:
Test di base:
./poc.py -t 192.168.1.100
Esecuzione di fuzzing:
./poc.py -t 192.168.1.100 --fuzz --techniques cyclic random
Hijack a fasi (solo laboratorio):
./poc.py -t 192.168.1.100 --hijack --objective shell --dry-run
Campagna completa con target mock:
# Terminale 1
./mock_printer.py
# Terminale 2
./poc.py -t 127.0.0.1 --fuzz --hijack --objective stage1
bTransportFrame() incapsula i payload con intestazione PRT2 + lunghezza.lObf): compressione zlib → maschera XOR dinamica (derivata dal seed) → Base64.gModernPayload() e gPostPayload() per vari pattern e comandi a fasi.Vedere le docstring inline e i commenti nel codice per maggiori dettagli.
PRT2.Questo PoC è fornito esclusivamente per scopi educativi, di ricerca e test di sicurezza autorizzati. L'uso improprio può comportare conseguenze gravi. Il proprietario del repository non è responsabile per eventuali danni causati.