Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-78306 — إثبات مفهوم يستغل حقن أوامر DUML عبر البلوتوث في طائرات DJI بدون طيار، حيث يرسل أوامر غير موثّقة لقراءة بيانات الاعتماد، وتعديل إعدادات Wi-Fi، والتحكم في أنظمة الطائرة. | Kitploit
أدوات/GitHubGitHub/wh02m1/cve-2026-78306
أمان الأنظمة المدمجةأمن البلوتوثأمان إنترنت الأشياءتوليد الحمولةتحليل الثغرات الأمنيةالاستغلالأمن الشبكات اللاسلكيةاختبار الاختراقأمان الأجهزة وإنترنت الأشياء
GitHubwh02m1/cve-2026-78306

CVE-2026-78306

إثبات مفهوم يستغل حقن أوامر DUML عبر البلوتوث في طائرات DJI بدون طيار، حيث يرسل أوامر غير موثّقة لقراءة بيانات الاعتماد، وتعديل إعدادات Wi-Fi، والتحكم في أنظمة الطائرة.

منذ 2س 45دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

CVE-2026-78306 — حقن أوامر DJI DUML عبر Bluetooth POC

الوصف

تكشف طائرات DJI بدون طيار عن واجهة Bluetooth تُستخدم لإنشاء اتصال بواجهة Wi-Fi الخاصة بالطائرة وتبادل بيانات اعتماد Wi-Fi.

تتحقق واجهة Bluetooth من UUID الموثوق للجهاز لثلاثة أوامر:

  • 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 الأوامر إلى عمليات القراءة، والإعدادات، والتحكم بالراديو، وإعادة التعيين، والنظام، والمعاملات.

أوامر القراءة

أوامر كتابة الإعدادات

تُصنّف هذه العمليات على أنها danger في POC، وبالتالي تتطلب تأكيدًا صريحًا قبل إرسالها.

أوامر التحكم بالراديو

يتم تنفيذ أوامر التحكم بالراديو من خلال معالجات 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 الخاص بالأمر، بينما تُؤخذ التحذيرات الإضافية من حقل warn في commands.json.


المعاملات

توفر وظيفة Change a parameter وصولًا إلى معاملات الإعدادات المعروفة المدرجة في flyc_parameters.txt.

يمكن اختيار معامل بالاسم، وتزويده بقيمة، وتحويله إلى عرض little-endian المحدد، وإرساله باستخدام 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 Bluetooth/DUML. يمكن لبعض الأوامر تعديل إعدادات الجهاز، أو تعطيل واجهات الراديو، أو مقاطعة الاتصال، أو إعادة تشغيل الطائرة أو إيقاف تشغيلها، أو إعادة تعيين الإعدادات، أو حذف البيانات المخزنة.

⚠️ لا تستخدم POC هذا ضد أي طائرة أو جهاز أو شبكة أو نظام لا تملكه أو لا تملك تفويضًا صريحًا لاختباره.

قد تتسبب بعض الأوامر في فقدان البيانات، أو تغييرات في الإعدادات، أو فقدان الاتصال، أو تعطيل الجهاز، أو غيرها من العواقب غير المقصودة. يجب إجراء الاختبار فقط في بيئة خاضعة للرقابة حيث لا تكون الطائرة والأشخاص والممتلكات المحيطة في خطر.

المؤلفون غير مسؤولين عن أي ضرر أو فقدان بيانات أو انقطاع خدمة أو تشغيل طائرة أو أي عواقب أخرى ناتجة عن استخدام أو إساءة استخدام POC هذا.

⚠️ باستخدامك POC هذا، فإنك تتحمل مسؤولية ضمان أن اختبارك مصرح به ويمتثل لجميع القوانين واللوائح ومتطلبات الإفصاح المسؤول المعمول بها.

تنزيل الأداة
الأمرما الذي يفعله
GET SSIDيسترجع SSID الخاص بـ Wi-Fi المُهيأ.
GET PSKيسترجع مفتاح WPA2 المشترك مسبقًا الخاص بـ Wi-Fi.
GET MACيسترجع عنوان MAC لنقطة الوصول Wi-Fi.
GET Country Codeيسترجع رمز البلد التنظيمي المكوّن من حرفين.
GET Channelيسترجع قناة Wi-Fi النشطة حاليًا.
GET Bandيسترجع اختيار النطاق 2.4/5 GHz المُهيأ.
GET RSSIيستعلم عن معالج RSSI؛ يحتوي بناء البرنامج الثابت هذا على تنفيذ وهمي.
GET WiFi/BT statusيسترجع حالة راديو Wi-Fi وBluetooth.
GET Device Info/Modelيسترجع معلومات الجهاز والطراز.
GET Versionيسترجع إصدار الخدمة الخلفية.
GET Bluetooth Nameيسترجع اسم جهاز Bluetooth.
الأمرما الذي يفعله
SET SSIDيغيّر SSID الخاص بـ Wi-Fi المُهيأ.
SET PSKيغيّر كلمة مرور Wi-Fi المُهيأة.
SET MAC Addressيغيّر إعداد BSSID الخاص بـ Wi-Fi أثناء التشغيل.
SET Country Codeيغيّر رمز البلد التنظيمي المُهيأ.
SET Country Code Extيتعامل مع إعداد رمز البلد الموسّع.
SET Channelيغيّر قناة Wi-Fi ويؤدي إلى إعادة تشغيل نقطة الوصول.
الأمرما الذي يفعله
Start WIFIيبدأ واجهة Wi-Fi والخدمات المرتبطة بها.
Stop WIFIيوقف واجهة Wi-Fi.
Restart WIFI + BTيعيد تشغيل أنظمة Wi-Fi وBluetooth الفرعية.
Start Bluetoothيبدأ نظام Bluetooth الفرعي.
Stop Bluetoothيوقف نظام Bluetooth الفرعي وينهي الجلسة الحالية.
Sysmode power controlيتحكم في حالة طاقة Wi-Fi/Bluetooth.
الأمرما الذي يفعله
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 ينتظر استجابة Bluetooth.
senderلابايت المرسل؛ القيمة الافتراضية 0x02.
afterلاإجراء متابعة اختياري.
noteلاوصف الهندسة العكسية المعروض بواسطة POC.
warnلانص تحذير إضافي يُعرض للأوامر الخطيرة.
الملفالدور
ble_console.pyنقطة الدخول الرئيسية، القائمة وتنفيذ الأوامر.
commands.jsonسجل الأوامر وأوصاف الأوامر.
ble_transport.pyفحص Bluetooth GATT، والاتصال ومعالجة الاستجابة.
duml_protocol.pyبناء حزمة DUML v1 ومعالجة CRC.
duml_decoders.pyفك ترميز الاستجابة ومعالجة رمز الإرجاع.
payload_builders.pyتوليد الحمولة التفاعلي.
parameters.pyتجزئة معاملات الإعدادات والعمليات.
terminal.pyواجهة الطرفية، والمطالبات ومعالجة الإخراج.
flyc_parameters.txtأسماء معاملات الإعدادات المعروفة.
requirements.txtتبعيات Python.