Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/wh02m1/cve-2026-78306
嵌入式系统安全蓝牙安全物联网安全Payload生成漏洞分析漏洞利用无线安全渗透测试硬件与物联网安全
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

针对DJI无人机蓝牙DUML命令注入的漏洞利用概念验证,可发送未认证命令以读取凭据、修改Wi-Fi配置并控制飞行器系统。

2小时46分前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

CVE-2026-78306 — DJI DUML 蓝牙命令注入 POC

描述

DJI 无人机暴露了一个蓝牙接口,用于建立与无人机 Wi-Fi 接口的连接并交换 Wi-Fi 凭据。

该蓝牙接口会针对三条命令检查设备的受信任 UUID:

  • 获取 SSID
  • 获取 PSK
  • 获取 MAC 地址

其余命令不需要相同的身份验证检查。因此,处于蓝牙范围内的远程攻击者可能能够向无人机发送未经授权的 DUML 命令。

根据命令的不同,攻击者可能能够修改无人机的配置,包括更改 Wi-Fi 密码,并可能获得对无人机内部网络的访问权限、启用或禁用无线电接口、重启或关闭飞行器、重置配置以及执行其他操作。

该 POC 提供了一个命令注册表,允许在不修改 Python 源代码的情况下测试可用命令。命令注册表(包括命令、接收方、身份验证要求以及每条命令的描述)定义在 commands.json 中。

受影响产品

产品受影响版本
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

演示

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

安装

1. 安装 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. 开启无人机电源

3. 运行 POC

root@kitploit:~
python3 ble_console.py

4. 扫描后选择无人机 SSID

image

命令参考

以下命令注册在 commands.json 中。该 POC 将命令分为读取、配置、无线电控制、重置、系统和参数操作。

读取命令

写入配置命令

这些操作在 POC 中被归类为 danger,因此在发送前需要明确确认。

无线电控制命令

无线电控制命令通过相应的 dji_network 处理程序实现。

重置命令

命令功能说明
Factory Reset WIFI将 Wi-Fi 配置恢复为默认状态。
Factory Restore Params将网络配置参数表恢复为出厂默认值。

该 POC 将这两项操作标记为危险,因为它们会修改持久配置。

系统命令

参数命令

命令功能说明
Change a parameter使用参数的 32 位名称哈希更改无人机配置参数。
Reset a parameter将配置参数重置为其固件默认值。

该 POC 从 flyc_parameters.txt 获取参数名称,并提供交互式参数选择。要添加您想要修改或重置的已知参数,请将其名称添加到 flyc_parameters.txt。该参数随后将在 POC 启动时可供选择。

添加命令:编辑 commands.json,而非代码

菜单在启动时从 commands.json 生成。要添加命令,请向某个部分的 commands 列表添加一个新对象。该命令将在下次启动 POC 时出现。

示例:

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

命令字段

默认接收方为 0x07(network:0),默认发送方为 0x02(mobile:0)。


负载构建器

交互式负载构建器定义在 payload_builders.py 中。

可用的构建器包括:

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

要添加新的构建器,请实现该函数,在 BUILDERS 中注册它,并在 commands.json 中引用其名称。


确认屏幕

归类为 danger 的命令在发送前需要明确确认。

确认屏幕显示如下信息:

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:

DOES 信息取自命令的 note,而额外警告取自 commands.json 中的 warn 字段。


参数

Change a parameter 功能提供对 flyc_parameters.txt 中列出的已知配置参数的访问。

可以按名称选择参数,为其提供值,转换为所选的小端宽度,并使用 set_cfg_item(0x03/0xf9)发送。

Reset a parameter 使用 reset_cfg_item(0x03/0xfa)将所选参数恢复为其固件默认值。


宏

该 POC 还提供了几个预定义宏:

宏描述
Restart Wifi停止并启动 Wi-Fi(0x42 后跟 0x41)。
SET NEW PSK + Restart wifi更改 PSK,然后重启 Wi-Fi。
Probe read commands发送已注册的读取命令并报告哪些命令有响应。

这些宏与各个命令条目分开定义。


文件


⚠️ 免责声明

⚠️ 警告:此概念验证严格用于教育、安全研究和授权渗透测试目的。

此 POC 演示了 DJI 蓝牙/DUML 命令处理接口中的安全问题。某些命令可以修改设备配置、禁用无线电接口、中断连接、重启或关闭飞行器、重置配置或删除存储的数据。

⚠️ 请勿对任何您不拥有或没有明确授权测试的飞行器、设备、网络或系统使用此 POC。

某些命令可能导致数据丢失、配置更改、连接丢失、设备中断或其他意外后果。测试应仅在受控环境中进行,确保飞行器以及周围人员和财产不处于风险之中。

作者不对因使用或滥用此 POC 而导致的任何损害、数据丢失、服务中断、飞行器操作或其他后果负责。

⚠️ 使用此 POC 即表示您承担确保您的测试获得授权并遵守所有适用法律、法规和负责任披露要求的责任。

下载工具
命令功能说明
GET SSID获取已配置的 Wi-Fi SSID。
GET PSK获取 Wi-Fi WPA2 预共享密钥。
GET MAC获取 Wi-Fi AP MAC 地址。
GET Country Code获取两位字母的监管国家代码。
GET Channel获取当前活动的 Wi-Fi 信道。
GET Band获取已配置的 2.4/5 GHz 频段选择。
GET RSSI查询 RSSI 处理程序;此固件版本包含一个存根实现。
GET WiFi/BT status获取 Wi-Fi 和蓝牙无线电状态。
GET Device Info/Model获取设备和型号信息。
GET Version获取守护进程版本。
GET Bluetooth Name获取蓝牙设备名称。
命令功能说明
SET SSID更改已配置的 Wi-Fi SSID。
SET PSK更改已配置的 Wi-Fi 密码。
SET MAC Address更改运行时 Wi-Fi BSSID 配置。
SET Country Code更改已配置的监管国家代码。
SET Country Code Ext处理扩展国家代码配置。
SET Channel更改 Wi-Fi 信道并导致 AP 重启。
命令功能说明
Start WIFI启动 Wi-Fi 接口及相关服务。
Stop WIFI停止 Wi-Fi 接口。
Restart WIFI + BT重启 Wi-Fi 和蓝牙子系统。
Start Bluetooth启动蓝牙子系统。
Stop Bluetooth停止蓝牙子系统并终止当前会话。
Sysmode power control控制 Wi-Fi/蓝牙电源状态。
命令功能说明
ftpd_start启动 dji_ftpd 服务。
storage_export_enable启用存储导出配置。
storage_export_disable禁用存储导出配置。
play_sound触发飞行器声音。
mute将飞行器扬声器静音。
unmute取消飞行器扬声器静音。
reboot_plain重启飞行器。
reboot_poweroff关闭飞行器电源。
reboot_powersave将飞行器置于省电模式。
device_reset L1 config重置系统、飞控、云台、相机、Wi-Fi 和 SDR 配置。
device_reset L2 +MEDIA执行 L1 重置并格式化媒体/存储。
device_reset L3 +log执行 L2 重置并额外清除系统日志。
字段必需含义
label是菜单中显示的文本。
cmd_set是DUML 命令集标识符。
cmd_id是DUML 命令标识符。
receiver是线路接收方字节,(index << 5) | type。
payload否十六进制负载。
tier否read、write 或 danger。
builder否交互式负载构建器。
auth否表示需要受信任的 UUID。
bt_reply否控制 POC 是否等待蓝牙响应。
sender否发送方字节;默认为 0x02。
after否可选的后续操作。
note否POC 显示的反向工程描述。
warn否针对危险命令显示的额外警告文本。
文件作用
ble_console.py主入口点、菜单和命令执行。
commands.json命令注册表和命令描述。
ble_transport.py蓝牙 GATT 扫描、连接和响应处理。
duml_protocol.pyDUML v1 数据包构建和 CRC 处理。
duml_decoders.py响应解码和返回码处理。
payload_builders.py交互式负载生成。
parameters.py配置参数哈希和操作。
terminal.py终端 UI、提示和输出处理。
flyc_parameters.txt已知配置参数名称。
requirements.txtPython 依赖项。