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
CVE-2026-78306 — Proof-of-concept che sfrutta l'iniezione di comandi DUML via Bluetooth sui droni DJI, inviando comandi non autenticati per leggere le credenziali, modificare la configurazione Wi-Fi e controllare i sistemi del velivolo. | Kitploit
Strumenti/GitHubGitHub/wh02m1/cve-2026-78306
Sicurezza Sistemi EmbeddedSicurezza BluetoothSicurezza IoTGenerazione di PayloadAnalisi delle VulnerabilitàExploitSicurezza WirelessPenetration TestingSicurezza Hardware e IoT
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

Proof-of-concept che sfrutta l'iniezione di comandi DUML via Bluetooth sui droni DJI, inviando comandi non autenticati per leggere le credenziali, modificare la configurazione Wi-Fi e controllare i sistemi del velivolo.

2h 50m faNon ancora revisionato

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
Vedi Repository

CVE-2026-78306 — DJI DUML Command Injection over Bluetooth POC

Descrizione

I droni DJI espongono un'interfaccia Bluetooth utilizzata per stabilire una connessione all'interfaccia Wi-Fi del drone e scambiare le credenziali Wi-Fi.

L'interfaccia Bluetooth verifica l'UUID attendibile del dispositivo per tre comandi:

  • Get SSID
  • Get PSK
  • Get MAC address

I comandi rimanenti non richiedono lo stesso controllo di autenticazione. Di conseguenza, un attaccante remoto nel raggio d'azione del Bluetooth potrebbe essere in grado di inviare comandi DUML non autorizzati al drone.

A seconda del comando, un attaccante potrebbe essere in grado di modificare la configurazione del drone, inclusa la modifica della password Wi-Fi e potenzialmente ottenere l'accesso alla rete interna del drone, abilitare o disabilitare le interfacce radio, riavviare o spegnere l'aeromobile, ripristinare la configurazione ed eseguire altre azioni.

Il POC fornisce un registro dei comandi che consente di testare i comandi disponibili senza modificare il codice sorgente Python. Il registro dei comandi, inclusi il comando, il ricevitore, i requisiti di autenticazione e la descrizione di ciascun comando, è definito in commands.json.

Prodotti interessati

ProdottoVersione interessata
DJI Neo0 – 01.00.0400
DJI Neo 20 – 01.00.0500
DJI Flip0 – 01.00.1200
DJI Air 30 – 01.00.1600
DJI Air 3S0 – 01.00.1400
DJI Avata 20 – 01.00.0400
DJI Avata 3600 – 01.00.0300
DJI Mavic 30 – 01.00.1400
DJI Mavic 3 Classic0 – 01.00.0800
DJI Mavic 3 Pro0 – 01.01.0700
DJI Mavic 4 Pro0 – 01.00.0500
DJI Mini 20 – 01.07.0200
DJI Mini 30 – 01.00.0500
DJI Mini 3 Pro0 – 01.00.0900
DJI Mini 4 Pro0 – 01.00.1100
DJI Mini 5 Pro0 – 01.00.0600

DEMO

https://github.com/user-attachments/assets/57f51df2-5160-404c-9fd3-2a3a8b700008

Installazione

1. Installare il POC

root@kitploit:~
# Clone the repository
git clone https://github.com/Wh02m1/CVE-2026-78306-POC.git
cd CVE-2026-78306-POC

# Create and activate a Python virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

2. Accendere il drone

3. Eseguire il POC

root@kitploit:~
python3 ble_console.py

4. Dopo la scansione selezionare l'SSID del drone

image

Riferimento dei comandi

I seguenti comandi sono registrati in commands.json. Il POC separa i comandi in operazioni di lettura, configurazione, controllo radio, reset, sistema e parametri.

Comandi di lettura

Comandi di scrittura della configurazione

Queste operazioni sono classificate come danger nel POC e richiedono quindi una conferma esplicita prima di essere inviate.

Comandi di controllo radio

I comandi di controllo radio sono implementati tramite i corrispondenti handler dji_network.

Comandi di reset

ComandoCosa fa
Factory Reset WIFIRipristina la configurazione Wi-Fi allo stato predefinito.
Factory Restore ParamsRipristina la tabella dei parametri di configurazione di rete ai valori di fabbrica.

Il POC contrassegna entrambe le operazioni come pericolose perché modificano la configurazione persistente.

Comandi di sistema

Comandi sui parametri

ComandoCosa fa
Change a parameterModifica un parametro di configurazione del drone utilizzando il suo hash del nome a 32 bit.
Reset a parameterRipristina un parametro di configurazione al valore predefinito del firmware.

Il POC ottiene i nomi dei parametri da flyc_parameters.txt e fornisce una selezione interattiva dei parametri. Per aggiungere un parametro noto che si desidera modificare o ripristinare, aggiungere il suo nome a flyc_parameters.txt. Il parametro sarà quindi disponibile per la selezione all'avvio del POC.

Aggiungere un comando: modificare commands.json, non il codice

Il menu viene generato da commands.json all'avvio. Per aggiungere un comando, aggiungere un nuovo oggetto alla lista commands di una sezione. Il comando apparirà la prossima volta che il POC viene avviato.

Esempio:

root@kitploit:~
{
  "label": "GET Channel",
  "cmd_set": "0x07",
  "cmd_id": "0x2c",
  "receiver": "0x07",
  "payload": "",
  "tier": "read",
  "bt_reply": true,
  "note": "wms_evt_get_chan -> wifi_mgmt_get_chan."
}

Campi dei comandi

Il ricevitore predefinito è 0x07 (network:0) e il mittente predefinito è 0x02 (mobile:0).


Builder dei payload

I builder interattivi dei payload sono definiti in payload_builders.py.

I builder disponibili includono:

  • ssid
  • psk
  • country
  • mac
  • channel
  • bss_type
  • power_level
  • raw

Per aggiungere un nuovo builder, implementare la funzione, registrarla in BUILDERS e fare riferimento al suo nome da commands.json.


Schermata di conferma

I comandi classificati come danger richiedono una conferma esplicita prima della trasmissione.

La schermata di conferma visualizza informazioni quali:

root@kitploit:~
──────────────────────────────────────────────────────────────────────
  !!!  DANGEROUS COMMAND  !!!
──────────────────────────────────────────────────────────────────────
 COMMAND    device_reset L1 config
 ROUTE      00/de -> ve_air:1
 PAYLOAD    11 01 00 00 00 00
 DOES       system / FC / gimbal / camera / wifi / sdr config reset
 WARNING    The FC configuration reset can restart the motors.
──────────────────────────────────────────────────────────────────────
 Type YES to send:

Le informazioni DOES sono tratte dal campo note del comando, mentre gli avvisi aggiuntivi sono tratti dal campo warn in commands.json.


Parametri

La funzione Change a parameter fornisce l'accesso ai parametri di configurazione noti elencati in flyc_parameters.txt.

Un parametro può essere selezionato per nome, fornito con un valore, convertito nella larghezza little-endian selezionata e inviato utilizzando set_cfg_item (0x03/0xf9).

Reset a parameter utilizza reset_cfg_item (0x03/0xfa) per ripristinare il parametro selezionato al valore predefinito del firmware.


Macro

Il POC fornisce inoltre diverse macro predefinite:

MacroDescrizione
Restart WifiArresta e avvia il Wi-Fi (0x42 seguito da 0x41).
SET NEW PSK + Restart wifiModifica la PSK e poi riavvia il Wi-Fi.
Probe read commandsInvia i comandi di lettura registrati e segnala quali comandi rispondono.

Le macro sono definite separatamente dalle singole voci dei comandi.


File


⚠️ Disclaimer

⚠️ AVVISO: Questo proof of concept è destinato esclusivamente a scopi educativi, di ricerca sulla sicurezza e di penetration testing autorizzato.

Questo POC dimostra problemi di sicurezza nell'interfaccia di gestione dei comandi Bluetooth/DUML di DJI. Alcuni comandi possono modificare la configurazione del dispositivo, disabilitare le interfacce radio, interrompere la connettività, riavviare o spegnere l'aeromobile, ripristinare la configurazione o eliminare i dati memorizzati.

⚠️ NON utilizzare questo POC contro qualsiasi aeromobile, dispositivo, rete o sistema di cui non si è proprietari o per cui non si dispone di esplicita autorizzazione al test.

Alcuni comandi possono causare perdita di dati, modifiche alla configurazione, perdita di connettività, interruzione del dispositivo o altre conseguenze indesiderate. I test devono essere eseguiti solo in un ambiente controllato in cui l'aeromobile, le persone e le proprietà circostanti non siano a rischio.

Gli autori non sono responsabili per eventuali danni, perdita di dati, interruzione del servizio, funzionamento dell'aeromobile o altre conseguenze derivanti dall'uso o dall'abuso di questo POC.

⚠️ Utilizzando questo POC, si accetta la responsabilità di garantire che i propri test siano autorizzati e conformi a tutte le leggi, i regolamenti e i requisiti di divulgazione responsabile applicabili.

Scarica lo strumento
ComandoCosa fa
GET SSIDRecupera l'SSID Wi-Fi configurato.
GET PSKRecupera la chiave pre-condivisa WPA2 Wi-Fi.
GET MACRecupera l'indirizzo MAC dell'AP Wi-Fi.
GET Country CodeRecupera il codice paese normativo di due lettere.
GET ChannelRecupera il canale Wi-Fi attualmente attivo.
GET BandRecupera la selezione di banda 2.4/5 GHz configurata.
GET RSSIInterroga l'handler RSSI; questa build del firmware contiene un'implementazione stub.
GET WiFi/BT statusRecupera lo stato delle radio Wi-Fi e Bluetooth.
GET Device Info/ModelRecupera le informazioni sul dispositivo e sul modello.
GET VersionRecupera la versione del daemon.
GET Bluetooth NameRecupera il nome del dispositivo Bluetooth.
ComandoCosa fa
SET SSIDModifica l'SSID Wi-Fi configurato.
SET PSKModifica la password Wi-Fi configurata.
SET MAC AddressModifica la configurazione BSSID Wi-Fi a runtime.
SET Country CodeModifica il codice paese normativo configurato.
SET Country Code ExtGestisce la configurazione estesa del codice paese.
SET ChannelModifica il canale Wi-Fi e causa il riavvio dell'AP.
ComandoCosa fa
Start WIFIAvvia l'interfaccia Wi-Fi e i servizi associati.
Stop WIFIArresta l'interfaccia Wi-Fi.
Restart WIFI + BTRiavvia i sottosistemi Wi-Fi e Bluetooth.
Start BluetoothAvvia il sottosistema Bluetooth.
Stop BluetoothArresta il sottosistema Bluetooth e termina la sessione corrente.
Sysmode power controlControlla lo stato di alimentazione Wi-Fi/Bluetooth.
ComandoCosa fa
ftpd_startAvvia il servizio dji_ftpd.
storage_export_enableAbilita la configurazione di esportazione dello storage.
storage_export_disableDisabilita la configurazione di esportazione dello storage.
play_soundAttiva un suono dell'aeromobile.
muteDisattiva l'audio dell'altoparlante dell'aeromobile.
unmuteRiattiva l'audio dell'altoparlante dell'aeromobile.
reboot_plainRiavvia l'aeromobile.
reboot_poweroffSpegne l'aeromobile.
reboot_powersaveMette l'aeromobile in modalità risparmio energetico.
device_reset L1 configRipristina la configurazione di sistema, flight-controller, gimbal, camera, Wi-Fi e SDR.
device_reset L2 +MEDIAEsegue il reset L1 e formatta i media/storage.
device_reset L3 +logEsegue il reset L2 e cancella inoltre il log di sistema.
CampoObbligatorioSignificato
labelSìTesto visualizzato nel menu.
cmd_setSìIdentificatore del command-set DUML.
cmd_idSìIdentificatore del comando DUML.
receiverSìByte del ricevitore sul filo, (index << 5) | type.
payloadNoPayload esadecimale.
tierNoread, write o danger.
builderNoBuilder interattivo del payload.
authNoIndica che è richiesto un UUID attendibile.
bt_replyNoControlla se il POC attende una risposta Bluetooth.
senderNoByte del mittente; valore predefinito 0x02.
afterNoAzione successiva opzionale.
noteNoDescrizione di reverse-engineering mostrata dal POC.
warnNoTesto di avviso aggiuntivo visualizzato per i comandi pericolosi.
FileRuolo
ble_console.pyPunto di ingresso principale, menu ed esecuzione dei comandi.
commands.jsonRegistro dei comandi e descrizioni dei comandi.
ble_transport.pyScansione GATT Bluetooth, connessione e gestione delle risposte.
duml_protocol.pyCostruzione dei pacchetti DUML v1 e gestione del CRC.
duml_decoders.pyDecodifica delle risposte e gestione dei codici di ritorno.
payload_builders.pyGenerazione interattiva dei payload.
parameters.pyHashing e operazioni sui parametri di configurazione.
terminal.pyUI del terminale, prompt e gestione dell'output.
flyc_parameters.txtNomi dei parametri di configurazione noti.
requirements.txtDipendenze Python.