Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-78306 — Proof-of-Concept zur Ausnutzung der DUML-Befehlsinjektion über Bluetooth bei DJI-Drohnen, das unauthentifizierte Befehle sendet, um Anmeldedaten auszulesen, die Wi-Fi-Konfiguration zu ändern und die Flugsysteme zu steuern. | Kitploit
Tools/GitHubGitHub/wh02m1/cve-2026-78306
Embedded-System-SicherheitBluetooth-SicherheitIoT-SicherheitPayload-GenerierungSchwachstellenanalyseExploitationDrahtlose SicherheitPenetrationstestsHardware- & IoT-Sicherheit
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

Proof-of-Concept zur Ausnutzung der DUML-Befehlsinjektion über Bluetooth bei DJI-Drohnen, das unauthentifizierte Befehle sendet, um Anmeldedaten auszulesen, die Wi-Fi-Konfiguration zu ändern und die Flugsysteme zu steuern.

vor 2h 53mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

CVE-2026-78306 — DJI DUML Command Injection über Bluetooth POC

Beschreibung

DJI-Drohnen stellen eine Bluetooth-Schnittstelle bereit, die verwendet wird, um eine Verbindung zur Wi-Fi-Schnittstelle der Drohne herzustellen und Wi-Fi-Anmeldedaten auszutauschen.

Die Bluetooth-Schnittstelle prüft die vertrauenswürdige UUID des Geräts für drei Befehle:

  • Get SSID
  • Get PSK
  • Get MAC address

Die übrigen Befehle erfordern nicht dieselbe Authentifizierungsprüfung. Infolgedessen könnte ein Angreifer in Bluetooth-Reichweite unbefugte DUML-Befehle an die Drohne senden.

Je nach Befehl könnte ein Angreifer die Konfiguration der Drohne ändern, einschließlich des Änderns des Wi-Fi-Passworts und möglicherweise des Zugriffs auf das interne Netzwerk der Drohne, des Aktivierens oder Deaktivierens von Funkschnittstellen, des Neustartens oder Ausschaltens des Fluggeräts, des Zurücksetzens der Konfiguration und anderer Aktionen.

Der POC stellt eine Befehlsregistrierung bereit, mit der die verfügbaren Befehle getestet werden können, ohne den Python-Quellcode zu ändern. Die Befehlsregistrierung, einschließlich des Befehls, des Empfängers, der Authentifizierungsanforderungen und der Beschreibung jedes Befehls, ist in commands.json definiert.

Betroffene Produkte

ProduktBetroffene Version
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

Installation

1. POC installieren

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. Drohne einschalten

3. POC ausführen

root@kitploit:~
python3 ble_console.py

4. Nach dem Scan die Drone SSID auswählen

image

Befehlsreferenz

Die folgenden Befehle sind in commands.json registriert. Der POC unterteilt Befehle in Lese-, Konfigurations-, Funksteuerungs-, Reset-, System- und Parameteroperationen.

Lesebefehle

Schreibkonfigurationsbefehle

Diese Operationen sind im POC als danger klassifiziert und erfordern daher eine ausdrückliche Bestätigung, bevor sie gesendet werden.

Funksteuerungsbefehle

Die Funksteuerungsbefehle sind über die entsprechenden dji_network-Handler implementiert.

Reset-Befehle

BefehlWas er bewirkt
Factory Reset WIFIStellt die Wi-Fi-Konfiguration auf ihren Standardzustand wieder her.
Factory Restore ParamsStellt die Netzwerkkonfigurations-Parametertabelle auf Werkseinstellungen wieder her.

Der POC markiert beide Operationen als gefährlich, da sie die persistente Konfiguration ändern.

Systembefehle

Parameterbefehle

BefehlWas er bewirkt
Change a parameterÄndert einen Drohnenkonfigurationsparameter unter Verwendung seines 32-Bit-Namens-Hashs.
Reset a parameterSetzt einen Konfigurationsparameter auf seinen Firmware-Standard zurück.

Der POC bezieht Parameternamen aus flyc_parameters.txt und bietet eine interaktive Parameterauswahl. Um einen bekannten Parameter hinzuzufügen, den Sie ändern oder zurücksetzen möchten, fügen Sie seinen Namen zu flyc_parameters.txt hinzu. Der Parameter ist dann bei Start des POC zur Auswahl verfügbar.

Hinzufügen eines Befehls: commands.json bearbeiten, nicht den Code

Das Menü wird beim Start aus commands.json generiert. Um einen Befehl hinzuzufügen, fügen Sie ein neues Objekt zur commands-Liste eines Abschnitts hinzu. Der Befehl erscheint beim nächsten Start des POC.

Beispiel:

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."
}

Befehlsfelder

Der Standardempfänger ist 0x07 (network:0) und der Standardsender ist 0x02 (mobile:0).


Payload-Builder

Interaktive Payload-Builder sind in payload_builders.py definiert.

Verfügbare Builder sind unter anderem:

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

Um einen neuen Builder hinzuzufügen, implementieren Sie die Funktion, registrieren Sie sie in BUILDERS und referenzieren Sie ihren Namen aus commands.json.


Bestätigungsbildschirm

Als danger klassifizierte Befehle erfordern eine ausdrückliche Bestätigung vor der Übertragung.

Der Bestätigungsbildschirm zeigt Informationen an wie:

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:

Die DOES-Informationen stammen aus dem note-Feld des Befehls, während zusätzliche Warnungen aus dem warn-Feld in commands.json stammen.


Parameter

Die Funktion Change a parameter bietet Zugriff auf die bekannten Konfigurationsparameter, die in flyc_parameters.txt aufgeführt sind.

Ein Parameter kann nach Namen ausgewählt, mit einem Wert versehen, in die ausgewählte Little-Endian-Breite konvertiert und mit set_cfg_item (0x03/0xf9) gesendet werden.

Reset a parameter verwendet reset_cfg_item (0x03/0xfa), um den ausgewählten Parameter auf seinen Firmware-Standard zurückzusetzen.


Makros

Der POC stellt außerdem mehrere vordefinierte Makros bereit:

MakroBeschreibung
Restart WifiStoppt und startet Wi-Fi (0x42 gefolgt von 0x41).
SET NEW PSK + Restart wifiÄndert den PSK und startet dann Wi-Fi neu.
Probe read commandsSendet die registrierten Lesebefehle und meldet, welche Befehle antworten.

Die Makros sind getrennt von den einzelnen Befehlseinträgen definiert.


Dateien


⚠️ Haftungsausschluss

⚠️ WARNUNG: Dieser Proof of Concept ist ausschließlich für Bildungs-, Sicherheitsforschungs- und autorisierte Penetrationstest-Zwecke bestimmt.

Dieser POC demonstriert Sicherheitsprobleme in der DJI-Bluetooth/DUML-Befehlsschnittstelle. Einige Befehle können die Gerätekonfiguration ändern, Funkschnittstellen deaktivieren, die Konnektivität unterbrechen, das Fluggerät neu starten oder ausschalten, die Konfiguration zurücksetzen oder gespeicherte Daten löschen.

⚠️ Verwenden Sie diesen POC NICHT gegen Fluggeräte, Geräte, Netzwerke oder Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Testgenehmigung haben.

Einige Befehle können Datenverlust, Konfigurationsänderungen, Konnektivitätsverlust, Gerätestörungen oder andere unbeabsichtigte Folgen verursachen. Tests sollten nur in einer kontrollierten Umgebung durchgeführt werden, in der das Fluggerät sowie umstehende Personen und Sachen nicht gefährdet sind.

Die Autoren sind nicht verantwortlich für Schäden, Datenverlust, Dienstunterbrechungen, den Betrieb des Fluggeräts oder andere Folgen, die aus der Verwendung oder dem Missbrauch dieses POC resultieren.

⚠️ Durch die Verwendung dieses POC übernehmen Sie die Verantwortung dafür, sicherzustellen, dass Ihre Tests autorisiert sind und alle geltenden Gesetze, Vorschriften und Anforderungen zur verantwortungsvollen Offenlegung eingehalten werden.

Tool herunterladen
BefehlWas er bewirkt
GET SSIDRuft die konfigurierte Wi-Fi-SSID ab.
GET PSKRuft den Wi-Fi-WPA2-Pre-Shared-Key ab.
GET MACRuft die Wi-Fi-AP-MAC-Adresse ab.
GET Country CodeRuft den zweibuchstabigen regulatorischen Ländercode ab.
GET ChannelRuft den aktuell aktiven Wi-Fi-Kanal ab.
GET BandRuft die konfigurierte 2,4/5-GHz-Bandauswahl ab.
GET RSSIFragt den RSSI-Handler ab; dieser Firmware-Build enthält eine Stub-Implementierung.
GET WiFi/BT statusRuft den Funkstatus von Wi-Fi und Bluetooth ab.
GET Device Info/ModelRuft Geräte- und Modellinformationen ab.
GET VersionRuft die Daemon-Version ab.
GET Bluetooth NameRuft den Bluetooth-Gerätenamen ab.
BefehlWas er bewirkt
SET SSIDÄndert die konfigurierte Wi-Fi-SSID.
SET PSKÄndert das konfigurierte Wi-Fi-Passwort.
SET MAC AddressÄndert die Laufzeit-Wi-Fi-BSSID-Konfiguration.
SET Country CodeÄndert den konfigurierten regulatorischen Ländercode.
SET Country Code ExtBehandelt die erweiterte Ländercode-Konfiguration.
SET ChannelÄndert den Wi-Fi-Kanal und veranlasst den AP zum Neustart.
BefehlWas er bewirkt
Start WIFIStartet die Wi-Fi-Schnittstelle und zugehörige Dienste.
Stop WIFIStoppt die Wi-Fi-Schnittstelle.
Restart WIFI + BTStartet die Wi-Fi- und Bluetooth-Subsysteme neu.
Start BluetoothStartet das Bluetooth-Subsystem.
Stop BluetoothStoppt das Bluetooth-Subsystem und beendet die aktuelle Sitzung.
Sysmode power controlSteuert den Energiezustand von Wi-Fi/Bluetooth.
BefehlWas er bewirkt
ftpd_startStartet den dji_ftpd-Dienst.
storage_export_enableAktiviert die Storage-Export-Konfiguration.
storage_export_disableDeaktiviert die Storage-Export-Konfiguration.
play_soundLöst einen Ton des Fluggeräts aus.
muteSchaltet den Lautsprecher des Fluggeräts stumm.
unmuteHebt die Stummschaltung des Lautsprechers des Fluggeräts auf.
reboot_plainStartet das Fluggerät neu.
reboot_poweroffSchaltet das Fluggerät aus.
reboot_powersaveVersetzt das Fluggerät in den Energiesparmodus.
device_reset L1 configSetzt System-, Flugcontroller-, Gimbal-, Kamera-, Wi-Fi- und SDR-Konfiguration zurück.
device_reset L2 +MEDIAFührt den L1-Reset durch und formatiert Medien/Speicher.
device_reset L3 +logFührt den L2-Reset durch und löscht zusätzlich das Systemprotokoll.
FeldErforderlichBedeutung
labelJaIm Menü angezeigter Text.
cmd_setJaDUML-Befehlssatz-Bezeichner.
cmd_idJaDUML-Befehlsbezeichner.
receiverJaWire-Empfänger-Byte, (index << 5) | type.
payloadNeinHex-Payload.
tierNeinread, write oder danger.
builderNeinInteraktiver Payload-Builder.
authNeinGibt an, dass eine vertrauenswürdige UUID erforderlich ist.
bt_replyNeinSteuert, ob der POC auf eine Bluetooth-Antwort wartet.
senderNeinSender-Byte; Standardwert ist 0x02.
afterNeinOptionale Folgeaktion.
noteNeinVom POC angezeigte Reverse-Engineering-Beschreibung.
warnNeinZusätzlicher Warnungstext, der für gefährliche Befehle angezeigt wird.
DateiRolle
ble_console.pyHaupteinstiegspunkt, Menü und Befehlsausführung.
commands.jsonBefehlsregistrierung und Befehlsbeschreibungen.
ble_transport.pyBluetooth-GATT-Scanning, Verbindungs- und Antwortverarbeitung.
duml_protocol.pyDUML-v1-Paketkonstruktion und CRC-Verarbeitung.
duml_decoders.pyAntwortdekodierung und Return-Code-Verarbeitung.
payload_builders.pyInteraktive Payload-Generierung.
parameters.pyKonfigurationsparameter-Hashing und -Operationen.
terminal.pyTerminal-UI, Eingabeaufforderungen und Ausgabeverarbeitung.
flyc_parameters.txtBekannte Konfigurationsparameternamen.
requirements.txtPython-Abhängigkeiten.