Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sagemcom-fast-3890-exploit — Exploit per modem via cavo Sagemcom F@ST 3890 che implementa la vulnerabilità Cable Haunt per ottenere l'esecuzione remota di codice tramite buffer overflow basato su WebSocket e catena ROP. | Kitploit
Strumenti/GitHubGitHub/lyrebirds/sagemcom-fast-3890-exploit
Sicurezza Sistemi EmbeddedExploitReverse EngineeringSfruttamento di Applicazioni WebSicurezza Hardware e IoTSviluppo PayloadBinary Exploitation
GitHublyrebirds/sagemcom-fast-3890-exploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

sagemcom-fast-3890-exploit

Exploit per modem via cavo Sagemcom F@ST 3890 che implementa la vulnerabilità Cable Haunt per ottenere l'esecuzione remota di codice tramite buffer overflow basato su WebSocket e catena ROP.

Vedi Repository
2234876 anni faRevisionato da Kitploit

Exploit Sagemcom Fast 3890

Questo exploit utilizza la vulnerabilità Cable Haunt per ottenere una shell sul modem via cavo Sagemcom F@ST 3890 (50.10.19*), tramite accesso dalla rete locale. La versione del firmware 50.10.21 o successiva dovrebbe essere sicura contro Cable Haunt. Questa prova di concetto è stata specificamente progettata per funzionare solo in locale per limitare il potenziale uso dannoso. Un'altra POC che crea una reverse shell verso una connessione esterna per il Technicolor TC7230 è disponibile qui.

Un elenco dei modem vulnerabili noti è disponibile su https://cablehaunt.com/#faq-am-i-affected.

Come funziona

exploit.py serve un sito web che, quando viene visitato, invia una richiesta WebSocket dannosa al modem via cavo. Questa richiesta sovraccarica l'indirizzo di ritorno e i registri associati nello Spectrum Analyzer del modem via cavo e usa una ROP-chain per iniziare ad ascoltare una connessione TCP sulla porta 1337. La ROP-chain è costruita e commentata in static/exploitSagemcom.js. Il server exploit.py invia quindi il file exploit.raw su questa connessione TCP, che verrà poi eseguito dal modem. Il file exploit.raw è reverseshell.c compilato per architettura MIPS (vedi sotto come). Reverseshell.c è una shell scritta esplicitamente per questo modem. La shell ascolta i comandi da eseguire nella shell eCos sul modem via cavo e reindirizza STDOUT alla connessione TCP.

Puoi trovare un video che spiega l'exploit qui: https://www.youtube.com/watch?v=5FM9mS5ck3Y

Esecuzione dell'exploit

Nota: Windows 10 non è attualmente supportato, devi usare un sistema operativo basato su Linux

Installa pwntools e flask per python3 ed esegui python exploit.py. Ora vai su http://127.0.0.1:8080 nel tuo browser per sfruttare il modem. Firefox non funzionerà per questo, poiché la versione di WebSocket utilizzata non è compatibile.

Ora dovrebbe apparire una shell interattiva nel terminale che esegue lo script python. Se esci dalla shell, il modem deve essere riavviato per avviare una nuova shell.

Costruire il proprio payload

Se vuoi compilare il tuo payload, puoi prendere la toolchain da aeolus ed eseguire il seguente comando:

root@kitploit:~
/<toolchain Path>/gnutools/mipsisa32-elf/bin/mipsisa32-elf-gcc -O3 -c ./reverseshell.c -o ./reverseshell.o && /<toolchain Path>/toolchains/gnutools/mipsisa32-elf/bin/mipsisa32-elf-objcopy -O binary reverseshell.o exploit.raw

Sfruttare altri modem

Puoi costruire e sfruttare qualsiasi modem vulnerabile a Cable Haunt usando questa tecnica. Ti consigliamo di leggere il rapporto tecnico prima di provare a scrivere la tua ROP-chain. Vai su Cable Haunt per un elenco dei modem via cavo vulnerabili noti.

Costruire la ROP chain

Per prima cosa, avrai bisogno del firmware del modem via cavo che intendi sfruttare. Poi, fai reverse engineering del firmware per trovare gli indirizzi delle funzioni rilevanti per costruire l'exploit, come socket(), bind(), accept(), listen(), recv() e connect() per una shell. Quindi Ropper può essere usato per trovare i gadget con il seguente comando:

root@kitploit:~
python Ropper.py --type all --all --badbytes 00c0c1f5f6f7f8f9fafbfcfdfeff2c -r -a MIPSBE -I 0x80004000 --console -f <firmware path>

Gadget irraggiungibili

Non tutti i gadget sono raggiungibili, poiché i gadget sono semplicemente indirizzi inviati come byte grezzi e non tutti i byte possono essere inviati in una richiesta WebSocket con frame di testo. Ad esempio, l'indirizzo 0x8080a864 non può essere inserito direttamente in un frame di testo WebSocket, perché non è un carattere UTF-8 valido. L'indirizzo 0xf28080a864 può invece essere inserito, perché 0xf2 indica l'inizio di un nuovo simbolo UTF-8 con 0x8080a864 come byte finali. I seguenti byte non possono essere presenti in alcun indirizzo utilizzato a causa della specifica UTF-8: 0x00, 0xc0,0xc1,0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x2c. Esistono anche altre restrizioni che verranno presto spiegate più in dettaglio nel nostro rapporto. Per ora, puoi leggere e usare utf8TestScript.py per testare se un indirizzo è raggiungibile.

Payload personalizzato

Puoi usare il processo descritto sopra per compilare il tuo payload per un nuovo modem via cavo, ma ricorda che il payload non deve restituire il controllo! Se lo fa, il processo cercherà un indirizzo di ritorno sullo stack corrotto e andrà in crash.

Estrarre il firmware dai modem via cavo

Per la maggior parte dei modem, avrai bisogno di un modo per accedere alla shell eCos per estrarre il firmware o estrarlo direttamente dal chip flash. Questi firmware sono di solito impacchettati in un formato chiamato ProgramStore Se la console seriale non funziona, prova a eseguire: (potrebbe funzionare solo se il cavo coassiale è scollegato o non provisionato)

root@kitploit:~
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.4413.2.2.2.1.9.1.2.1.0 i 2
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.4413.2.2.2.1.9.1.2.1.0 i 0
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.4413.2.2.2.1.9.1.2.1.0 i 2

Quindi la shell dovrebbe essere accessibile, e bcm2-utils può rendere facile estrarlo usando questa shell. Quando si fa reverse engineering del firmware estratto, l'indirizzo di load/base è (per quanto abbiamo visto) sempre 0x80004000.

Scarica lo strumento