Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-78306 — Prueba de concepto que explota la inyección de comandos DUML por Bluetooth en drones DJI, enviando comandos no autenticados para leer credenciales, alterar la configuración de Wi-Fi y controlar los sistemas de la aeronave. | Kitploit
Herramientas/GitHubGitHub/wh02m1/cve-2026-78306
Seguridad de Sistemas EmbebidosSeguridad BluetoothSeguridad IoTGeneración de PayloadsAnálisis de VulnerabilidadesExplotaciónSeguridad InalámbricaPruebas de PenetraciónSeguridad de Hardware e IoT
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

Prueba de concepto que explota la inyección de comandos DUML por Bluetooth en drones DJI, enviando comandos no autenticados para leer credenciales, alterar la configuración de Wi-Fi y controlar los sistemas de la aeronave.

hace 2h 46mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

CVE-2026-78306 — Inyección de comandos DUML de DJI a través de Bluetooth POC

Descripción

Los drones DJI exponen una interfaz Bluetooth utilizada para establecer una conexión con la interfaz Wi-Fi del dron e intercambiar credenciales Wi-Fi.

La interfaz Bluetooth verifica el UUID de confianza del dispositivo para tres comandos:

  • Obtener SSID
  • Obtener PSK
  • Obtener dirección MAC

El resto de comandos no requieren la misma verificación de autenticación. Como resultado, un atacante remoto dentro del alcance Bluetooth podría enviar comandos DUML no autorizados al dron.

Dependiendo del comando, un atacante podría modificar la configuración del dron, incluyendo cambiar la contraseña Wi-Fi y potencialmente obtener acceso a la red interna del dron, habilitar o deshabilitar interfaces de radio, reiniciar o apagar la aeronave, restablecer la configuración y realizar otras acciones.

El POC proporciona un registro de comandos que permite probar los comandos disponibles sin modificar el código fuente de Python. El registro de comandos, incluyendo el comando, el receptor, los requisitos de autenticación y la descripción de cada comando, se define en commands.json.

Productos afectados

ProductoVersión afectada
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

Instalación

1. Instalar el 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. Encender el dron

3. Ejecutar el POC

root@kitploit:~
python3 ble_console.py

4. Tras el escaneo, seleccionar el SSID del dron

image

Referencia de comandos

Los siguientes comandos están registrados en commands.json. El POC separa los comandos en operaciones de lectura, configuración, control de radio, restablecimiento, sistema y parámetros.

Comandos de lectura

Comandos de escritura de configuración

Estas operaciones se clasifican como danger en el POC y, por lo tanto, requieren confirmación explícita antes de enviarse.

Comandos de control de radio

Los comandos de control de radio se implementan a través de los manejadores dji_network correspondientes.

Comandos de restablecimiento

ComandoQué hace
Factory Reset WIFIRestaura la configuración Wi-Fi a su estado predeterminado.
Factory Restore ParamsRestaura la tabla de parámetros de configuración de red a los valores de fábrica.

El POC marca ambas operaciones como peligrosas porque modifican la configuración persistente.

Comandos de sistema

Comandos de parámetros

ComandoQué hace
Change a parameterCambia un parámetro de configuración del dron usando el hash de 32 bits de su nombre.
Reset a parameterRestablece un parámetro de configuración a su valor predeterminado de firmware.

El POC obtiene los nombres de los parámetros de flyc_parameters.txt y proporciona una selección interactiva de parámetros. Para añadir un parámetro conocido que desee modificar o restablecer, añada su nombre a flyc_parameters.txt. El parámetro estará entonces disponible para su selección cuando se inicie el POC.

Añadir un comando: editar commands.json, no el código

El menú se genera a partir de commands.json al inicio. Para añadir un comando, añada un nuevo objeto a la lista commands de una sección. El comando aparecerá la próxima vez que se inicie el POC.

Ejemplo:

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

Campos de comando

El receptor predeterminado es 0x07 (network:0) y el remitente predeterminado es 0x02 (mobile:0).


Constructores de carga útil

Los constructores interactivos de carga útil se definen en payload_builders.py.

Los constructores disponibles incluyen:

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

Para añadir un nuevo constructor, implemente la función, regístrela en BUILDERS y haga referencia a su nombre desde commands.json.


Pantalla de confirmación

Los comandos clasificados como danger requieren confirmación explícita antes de la transmisión.

La pantalla de confirmación muestra información como:

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:

La información de DOES se toma del campo note del comando, mientras que las advertencias adicionales se toman del campo warn en commands.json.


Parámetros

La función Change a parameter proporciona acceso a los parámetros de configuración conocidos listados en flyc_parameters.txt.

Un parámetro puede seleccionarse por nombre, proporcionarse con un valor, convertirse al ancho little-endian seleccionado y enviarse usando set_cfg_item (0x03/0xf9).

Reset a parameter usa reset_cfg_item (0x03/0xfa) para restaurar el parámetro seleccionado a su valor predeterminado de firmware.


Macros

El POC también proporciona varias macros predefinidas:

MacroDescripción
Restart WifiDetiene e inicia Wi-Fi (0x42 seguido de 0x41).
SET NEW PSK + Restart wifiCambia la PSK y luego reinicia Wi-Fi.
Probe read commandsEnvía los comandos de lectura registrados e informa qué comandos responden.

Las macros se definen por separado de las entradas de comandos individuales.


Archivos


⚠️ Descargo de responsabilidad

⚠️ ADVERTENCIA: Esta prueba de concepto está destinada estrictamente a fines educativos, de investigación de seguridad y de pruebas de penetración autorizadas.

Este POC demuestra problemas de seguridad en la interfaz de manejo de comandos Bluetooth/DUML de DJI. Algunos comandos pueden modificar la configuración del dispositivo, deshabilitar interfaces de radio, interrumpir la conectividad, reiniciar o apagar la aeronave, restablecer la configuración o eliminar datos almacenados.

⚠️ NO use este POC contra ninguna aeronave, dispositivo, red o sistema que no posea o para el que no tenga autorización explícita de prueba.

Algunos comandos pueden causar pérdida de datos, cambios de configuración, pérdida de conectividad, interrupción del dispositivo u otras consecuencias no deseadas. Las pruebas solo deben realizarse en un entorno controlado donde la aeronave y las personas y propiedades circundantes no estén en riesgo.

Los autores no son responsables de ningún daño, pérdida de datos, interrupción del servicio, operación de la aeronave u otras consecuencias derivadas del uso o mal uso de este POC.

⚠️ Al usar este POC, usted acepta la responsabilidad de asegurar que sus pruebas estén autorizadas y cumplan con todas las leyes, regulaciones y requisitos de divulgación responsable aplicables.

Descargar herramienta
ComandoQué hace
GET SSIDRecupera el SSID Wi-Fi configurado.
GET PSKRecupera la clave precompartida WPA2 de Wi-Fi.
GET MACRecupera la dirección MAC del AP Wi-Fi.
GET Country CodeRecupera el código de país regulatorio de dos letras.
GET ChannelRecupera el canal Wi-Fi actualmente activo.
GET BandRecupera la selección de banda 2.4/5 GHz configurada.
GET RSSIConsulta el manejador RSSI; esta compilación de firmware contiene una implementación stub.
GET WiFi/BT statusRecupera el estado de las radios Wi-Fi y Bluetooth.
GET Device Info/ModelRecupera la información del dispositivo y del modelo.
GET VersionRecupera la versión del daemon.
GET Bluetooth NameRecupera el nombre del dispositivo Bluetooth.
ComandoQué hace
SET SSIDCambia el SSID Wi-Fi configurado.
SET PSKCambia la contraseña Wi-Fi configurada.
SET MAC AddressCambia la configuración del BSSID Wi-Fi en tiempo de ejecución.
SET Country CodeCambia el código de país regulatorio configurado.
SET Country Code ExtGestiona la configuración extendida del código de país.
SET ChannelCambia el canal Wi-Fi y provoca el reinicio del AP.
ComandoQué hace
Start WIFIInicia la interfaz Wi-Fi y los servicios asociados.
Stop WIFIDetiene la interfaz Wi-Fi.
Restart WIFI + BTReinicia los subsistemas Wi-Fi y Bluetooth.
Start BluetoothInicia el subsistema Bluetooth.
Stop BluetoothDetiene el subsistema Bluetooth y termina la sesión actual.
Sysmode power controlControla el estado de energía de Wi-Fi/Bluetooth.
ComandoQué hace
ftpd_startInicia el servicio dji_ftpd.
storage_export_enableHabilita la configuración de exportación de almacenamiento.
storage_export_disableDeshabilita la configuración de exportación de almacenamiento.
play_soundActiva un sonido de la aeronave.
muteSilencia el altavoz de la aeronave.
unmuteActiva el sonido del altavoz de la aeronave.
reboot_plainReinicia la aeronave.
reboot_poweroffApaga la aeronave.
reboot_powersaveColoca la aeronave en modo de ahorro de energía.
device_reset L1 configRestablece la configuración del sistema, controlador de vuelo, gimbal, cámara, Wi-Fi y SDR.
device_reset L2 +MEDIARealiza el restablecimiento L1 y formatea los medios/almacenamiento.
device_reset L3 +logRealiza el restablecimiento L2 y además borra el registro del sistema.
CampoObligatorioSignificado
labelSíTexto mostrado en el menú.
cmd_setSíIdentificador del conjunto de comandos DUML.
cmd_idSíIdentificador de comando DUML.
receiverSíByte receptor en el cable, (index << 5) | type.
payloadNoCarga útil en hexadecimal.
tierNoread, write o danger.
builderNoConstructor interactivo de carga útil.
authNoIndica que se requiere un UUID de confianza.
bt_replyNoControla si el POC espera una respuesta Bluetooth.
senderNoByte del remitente; por defecto 0x02.
afterNoAcción de seguimiento opcional.
noteNoDescripción de ingeniería inversa mostrada por el POC.
warnNoTexto de advertencia adicional mostrado para comandos peligrosos.
ArchivoRol
ble_console.pyPunto de entrada principal, menú y ejecución de comandos.
commands.jsonRegistro de comandos y descripciones de comandos.
ble_transport.pyEscaneo GATT de Bluetooth, conexión y manejo de respuestas.
duml_protocol.pyConstrucción de paquetes DUML v1 y manejo de CRC.
duml_decoders.pyDecodificación de respuestas y manejo de códigos de retorno.
payload_builders.pyGeneración interactiva de carga útil.
parameters.pyHashing y operaciones de parámetros de configuración.
terminal.pyInterfaz de terminal, indicaciones y manejo de salida.
flyc_parameters.txtNombres de parámetros de configuración conocidos.
requirements.txtDependencias de Python.