Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-78306 — Proof-of-concept que explora a injeção de comandos DUML via Bluetooth em drones DJI, enviando comandos não autenticados para ler credenciais, alterar a configuração de Wi-Fi e controlar os sistemas da aeronave. | Kitploit
Ferramentas/GitHubGitHub/wh02m1/cve-2026-78306
Segurança de Sistemas EmbarcadosSegurança BluetoothSegurança IoTGeração de PayloadsAnálise de VulnerabilidadesExploraçãoSegurança Sem FioTestes de PenetraçãoSegurança de Hardware e IoT
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

Proof-of-concept que explora a injeção de comandos DUML via Bluetooth em drones DJI, enviando comandos não autenticados para ler credenciais, alterar a configuração de Wi-Fi e controlar os sistemas da aeronave.

há 2h 53mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

CVE-2026-78306 — Injeção de Comando DUML em DJI via Bluetooth POC

Descrição

Os drones DJI expõem uma interface Bluetooth usada para estabelecer uma conexão com a interface Wi-Fi do drone e trocar credenciais de Wi-Fi.

A interface Bluetooth verifica o UUID confiável do dispositivo para três comandos:

  • Get SSID
  • Get PSK
  • Get MAC address

Os comandos restantes não exigem a mesma verificação de autenticação. Como resultado, um atacante remoto dentro do alcance do Bluetooth pode ser capaz de enviar comandos DUML não autorizados ao drone.

Dependendo do comando, um atacante pode ser capaz de modificar a configuração do drone, incluindo alterar a senha do Wi-Fi e potencialmente obter acesso à rede interna do drone, habilitar ou desabilitar interfaces de rádio, reiniciar ou desligar a aeronave, redefinir a configuração e realizar outras ações.

O POC fornece um registro de comandos que permite testar os comandos disponíveis sem modificar o código-fonte Python. O registro de comandos, incluindo o comando, o receptor, os requisitos de autenticação e a descrição de cada comando, é definido em commands.json.

Produtos Afetados

ProdutoVersão Afetada
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

Instalação

1. Instale o 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. Ligue o drone

3. Execute o POC

root@kitploit:~
python3 ble_console.py

4. Após a varredura, selecione o SSID do Drone

image

Referência de Comandos

Os comandos a seguir estão registrados em commands.json. O POC separa os comandos em operações de leitura, configuração, controle de rádio, redefinição, sistema e parâmetros.

Comandos de Leitura

Comandos de Escrita de Configuração

Essas operações são classificadas como danger no POC e, portanto, exigem confirmação explícita antes de serem enviadas.

Comandos de Controle de Rádio

Os comandos de controle de rádio são implementados através dos manipuladores dji_network correspondentes.

Comandos de Redefinição

ComandoO que faz
Factory Reset WIFIRestaura a configuração de Wi-Fi ao seu estado padrão.
Factory Restore ParamsRestaura a tabela de parâmetros de configuração de rede aos padrões de fábrica.

O POC marca ambas as operações como perigosas porque elas modificam a configuração persistente.

Comandos de Sistema

Comandos de Parâmetros

ComandoO que faz
Change a parameterAltera um parâmetro de configuração do drone usando seu hash de nome de 32 bits.
Reset a parameterRedefine um parâmetro de configuração ao seu padrão de firmware.

O POC obtém os nomes dos parâmetros de flyc_parameters.txt e fornece seleção interativa de parâmetros. Para adicionar um parâmetro conhecido que você deseja modificar ou redefinir, adicione seu nome a flyc_parameters.txt. O parâmetro ficará então disponível para seleção quando o POC for iniciado.

Adicionando um Comando: Edite commands.json, Não o Código

O menu é gerado a partir de commands.json na inicialização. Para adicionar um comando, adicione um novo objeto à lista commands de uma seção. O comando aparecerá na próxima vez que o POC for iniciado.

Exemplo:

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

O receptor padrão é 0x07 (network:0) e o remetente padrão é 0x02 (mobile:0).


Construtores de Payload

Os construtores interativos de payload são definidos em payload_builders.py.

Os construtores disponíveis incluem:

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

Para adicionar um novo construtor, implemente a função, registre-a em BUILDERS e faça referência ao seu nome a partir de commands.json.


Tela de Confirmação

Os comandos classificados como danger exigem confirmação explícita antes da transmissão.

A tela de confirmação exibe informações 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:

A informação DOES é obtida do note do comando, enquanto avisos adicionais são obtidos do campo warn em commands.json.


Parâmetros

A função Change a parameter fornece acesso aos parâmetros de configuração conhecidos listados em flyc_parameters.txt.

Um parâmetro pode ser selecionado por nome, fornecido com um valor, convertido para a largura little-endian selecionada e enviado usando set_cfg_item (0x03/0xf9).

Reset a parameter usa reset_cfg_item (0x03/0xfa) para restaurar o parâmetro selecionado ao seu padrão de firmware.


Macros

O POC também fornece várias macros predefinidas:

MacroDescrição
Restart WifiPara e inicia o Wi-Fi (0x42 seguido de 0x41).
SET NEW PSK + Restart wifiAltera a PSK e então reinicia o Wi-Fi.
Probe read commandsEnvia os comandos de leitura registrados e informa quais comandos respondem.

As macros são definidas separadamente das entradas de comando individuais.


Arquivos


⚠️ Aviso Legal

⚠️ AVISO: Esta prova de conceito destina-se estritamente a fins educacionais, de pesquisa de segurança e de testes de penetração autorizados.

Este POC demonstra problemas de segurança na interface de tratamento de comandos Bluetooth/DUML da DJI. Alguns comandos podem modificar a configuração do dispositivo, desabilitar interfaces de rádio, interromper a conectividade, reiniciar ou desligar a aeronave, redefinir a configuração ou excluir dados armazenados.

⚠️ NÃO use este POC contra qualquer aeronave, dispositivo, rede ou sistema que você não possua ou não tenha autorização explícita para testar.

Alguns comandos podem causar perda de dados, alterações de configuração, perda de conectividade, interrupção do dispositivo ou outras consequências não intencionais. Os testes devem ser realizados apenas em um ambiente controlado onde a aeronave e as pessoas e propriedades ao redor não estejam em risco.

Os autores não são responsáveis por qualquer dano, perda de dados, interrupção de serviço, operação da aeronave ou outras consequências resultantes do uso ou uso indevido deste POC.

⚠️ Ao usar este POC, você aceita a responsabilidade de garantir que seus testes sejam autorizados e estejam em conformidade com todas as leis, regulamentos e requisitos de divulgação responsável aplicáveis.

Baixar ferramenta
ComandoO que faz
GET SSIDRecupera o SSID de Wi-Fi configurado.
GET PSKRecupera a chave pré-compartilhada WPA2 do Wi-Fi.
GET MACRecupera o endereço MAC do AP Wi-Fi.
GET Country CodeRecupera o código de país regulatório de duas letras.
GET ChannelRecupera o canal de Wi-Fi atualmente ativo.
GET BandRecupera a seleção de banda 2.4/5 GHz configurada.
GET RSSIConsulta o manipulador RSSI; esta compilação de firmware contém uma implementação stub.
GET WiFi/BT statusRecupera o estado dos rádios Wi-Fi e Bluetooth.
GET Device Info/ModelRecupera informações do dispositivo e do modelo.
GET VersionRecupera a versão do daemon.
GET Bluetooth NameRecupera o nome do dispositivo Bluetooth.
ComandoO que faz
SET SSIDAltera o SSID de Wi-Fi configurado.
SET PSKAltera a senha de Wi-Fi configurada.
SET MAC AddressAltera a configuração de BSSID do Wi-Fi em tempo de execução.
SET Country CodeAltera o código de país regulatório configurado.
SET Country Code ExtLida com a configuração estendida de código de país.
SET ChannelAltera o canal de Wi-Fi e faz o AP reiniciar.
ComandoO que faz
Start WIFIInicia a interface Wi-Fi e os serviços associados.
Stop WIFIPara a interface Wi-Fi.
Restart WIFI + BTReinicia os subsistemas Wi-Fi e Bluetooth.
Start BluetoothInicia o subsistema Bluetooth.
Stop BluetoothPara o subsistema Bluetooth e encerra a sessão atual.
Sysmode power controlControla o estado de energia do Wi-Fi/Bluetooth.
ComandoO que faz
ftpd_startInicia o serviço dji_ftpd.
storage_export_enableHabilita a configuração de exportação de armazenamento.
storage_export_disableDesabilita a configuração de exportação de armazenamento.
play_soundDispara um som da aeronave.
muteSilencia o alto-falante da aeronave.
unmuteReativa o som do alto-falante da aeronave.
reboot_plainReinicia a aeronave.
reboot_poweroffDesliga a aeronave.
reboot_powersaveColoca a aeronave em modo de economia de energia.
device_reset L1 configRedefine as configurações de sistema, controlador de voo, gimbal, câmera, Wi-Fi e SDR.
device_reset L2 +MEDIAExecuta a redefinição L1 e formata mídia/armazenamento.
device_reset L3 +logExecuta a redefinição L2 e adicionalmente limpa o log do sistema.
CampoObrigatórioSignificado
labelSimTexto exibido no menu.
cmd_setSimIdentificador do conjunto de comandos DUML.
cmd_idSimIdentificador do comando DUML.
receiverSimByte do receptor no fio, (index << 5) | type.
payloadNãoPayload em hexadecimal.
tierNãoread, write ou danger.
builderNãoConstrutor interativo de payload.
authNãoIndica que um UUID confiável é necessário.
bt_replyNãoControla se o POC aguarda uma resposta Bluetooth.
senderNãoByte do remetente; o padrão é 0x02.
afterNãoAção de acompanhamento opcional.
noteNãoDescrição de engenharia reversa exibida pelo POC.
warnNãoTexto de aviso adicional exibido para comandos perigosos.
ArquivoFunção
ble_console.pyPonto de entrada principal, menu e execução de comandos.
commands.jsonRegistro de comandos e descrições de comandos.
ble_transport.pyVarredura GATT Bluetooth, conexão e tratamento de respostas.
duml_protocol.pyConstrução de pacotes DUML v1 e tratamento de CRC.
duml_decoders.pyDecodificação de respostas e tratamento de códigos de retorno.
payload_builders.pyGeração interativa de payload.
parameters.pyHashing e operações de parâmetros de configuração.
terminal.pyInterface de terminal, prompts e tratamento de saída.
flyc_parameters.txtNomes de parâmetros de configuração conhecidos.
requirements.txtDependências Python.