Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/wh02m1/cve-2026-78306
組み込みシステムセキュリティBluetoothセキュリティIoTセキュリティペイロード生成脆弱性分析エクスプロイトワイヤレスセキュリティペネトレーションテストハードウェアとIoTセキュリティ
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

DJIドローンのBluetooth DUMLコマンドインジェクションを悪用するProof-of-conceptで、認証なしのコマンドを送信して認証情報の読み取り、Wi-Fi設定の変更、機体システムの制御を行う。

51日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る

CVE-2026-78306 — Bluetooth経由のDJI DUMLコマンドインジェクション POC

説明

DJIドローンは、ドローンのWi-Fiインターフェースへの接続を確立し、Wi-Fi認証情報を交換するために使用されるBluetoothインターフェースを公開しています。

Bluetoothインターフェースは、デバイスの信頼済みUUIDを次の3つのコマンドに対してチェックします:

  • Get SSID
  • Get PSK
  • Get MAC address

残りのコマンドには同じ認証チェックが要求されません。その結果、Bluetooth範囲内にいるリモート攻撃者が、不正な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

DEMO

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 WIFIWi-Fi設定をデフォルト状態に復元します。
Factory Restore Paramsネットワーク設定パラメータテーブルを工場出荷時のデフォルトに復元します。

POCは、これらの操作が永続的な設定を変更するため、両方とも危険であるとマークしています。

システムコマンド

パラメータコマンド

コマンド動作
Change a parameter32ビットの名前ハッシュを使用してドローン設定パラメータを変更します。
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 WifiWi-Fiを停止して開始します (0x42に続いて0x41)。
SET NEW PSK + Restart wifiPSKを変更してからWi-Fiを再起動します。
Probe read commands登録された読み取りコマンドを送信し、どのコマンドが応答するかを報告します。

マクロは個々のコマンドエントリとは別に定義されています。


ファイル


⚠️ 免責事項

⚠️ 警告: この概念実証は、教育、セキュリティ研究、および許可されたペネトレーションテストの目的に厳密に限定して意図されています。

このPOCは、DJI Bluetooth/DUMLコマンド処理インターフェースにおけるセキュリティ問題を実証します。一部のコマンドは、デバイス設定の変更、無線インターフェースの無効化、接続の中断、機体の再起動または電源オフ、設定のリセット、または保存データの削除を行う可能性があります。

⚠️ 所有していない、またはテストする明示的な許可を持っていない航空機、デバイス、ネットワーク、またはシステムに対してこのPOCを使用しないでください。

一部のコマンドは、データ損失、設定変更、接続の喪失、デバイスの混乱、またはその他の意図しない結果を引き起こす可能性があります。テストは、航空機および周囲の人々や財産が危険にさらされない制御された環境でのみ実行する必要があります。

著者は、このPOCの使用または誤用から生じるいかなる損害、データ損失、サービス中断、航空機の運用、またはその他の結果についても責任を負いません。

⚠️ このPOCを使用することにより、あなたはテストが許可されており、適用されるすべての法律、規制、および責任ある開示要件に準拠していることを保証する責任を負うことに同意します。

ツールをダウンロード
コマンド動作
GET SSID設定されているWi-Fi SSIDを取得します。
GET PSKWi-Fi WPA2事前共有鍵を取得します。
GET MACWi-Fi AP MACアドレスを取得します。
GET Country Code2文字の規制国コードを取得します。
GET Channel現在アクティブなWi-Fiチャネルを取得します。
GET Band設定されている2.4/5 GHz帯域の選択を取得します。
GET RSSIRSSIハンドラーを照会します。このファームウェアビルドにはスタブ実装が含まれています。
GET WiFi/BT statusWi-FiおよびBluetooth無線の状態を取得します。
GET Device Info/Modelデバイスおよびモデル情報を取得します。
GET Versionデーモンのバージョンを取得します。
GET Bluetooth NameBluetoothデバイス名を取得します。
コマンド動作
SET SSID設定されているWi-Fi SSIDを変更します。
SET PSK設定されているWi-Fiパスワードを変更します。
SET MAC Address実行時のWi-Fi BSSID設定を変更します。
SET Country Code設定されている規制国コードを変更します。
SET Country Code Ext拡張国コード設定を処理します。
SET ChannelWi-Fiチャネルを変更し、APを再起動させます。
コマンド動作
Start WIFIWi-Fiインターフェースおよび関連サービスを開始します。
Stop WIFIWi-Fiインターフェースを停止します。
Restart WIFI + BTWi-FiおよびBluetoothサブシステムを再起動します。
Start BluetoothBluetoothサブシステムを開始します。
Stop BluetoothBluetoothサブシステムを停止し、現在のセッションを終了します。
Sysmode power controlWi-Fi/Bluetoothの電源状態を制御します。
コマンド動作
ftpd_startdji_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 +MEDIAL1リセットを実行し、メディア/ストレージをフォーマットします。
device_reset L3 +logL2リセットを実行し、さらにシステムログをクリアします。
フィールド必須意味
labelはいメニューに表示されるテキスト。
cmd_setはいDUMLコマンドセット識別子。
cmd_idはいDUMLコマンド識別子。
receiverはいワイヤレシーバーバイト、(index << 5) | type。
payloadいいえ16進ペイロード。
tierいいえread、write、またはdanger。
builderいいえ対話的ペイロードビルダー。
authいいえ信頼済みUUIDが必要であることを示します。
bt_replyいいえPOCがBluetooth応答を待機するかどうかを制御します。
senderいいえ送信者バイト。デフォルトは0x02。
afterいいえオプションのフォローアップアクション。
noteいいえPOCによって表示されるリバースエンジニアリングの説明。
warnいいえ危険なコマンドに対して表示される追加の警告テキスト。
ファイル役割
ble_console.pyメインエントリポイント、メニューおよびコマンド実行。
commands.jsonコマンドレジストリおよびコマンドの説明。
ble_transport.pyBluetooth GATTスキャン、接続および応答処理。
duml_protocol.pyDUML v1パケット構築およびCRC処理。
duml_decoders.py応答デコードおよびリターンコード処理。
payload_builders.py対話的ペイロード生成。
parameters.py設定パラメータのハッシュおよび操作。
terminal.pyターミナルUI、プロンプトおよび出力処理。
flyc_parameters.txt既知の設定パラメータ名。
requirements.txtPython依存関係。