
استغلال إثبات المفهوم لـ CVE-2026-32136: تجاوز المصادقة غير الموثّق في AdGuard Home عبر ترقية HTTP/2 بنص واضح (h2c). يوضح كيفية الوصول إلى نقاط نهاية الإدارة دون بيانات اعتماد.
تجاوز مصادقة غير موثّق في AdGuard Home
< 0.107.73عبر ترقية HTTP/2 بنص واضح (h2c).
| CVE | CVE-2026-32136 |
| CVSS | 9.8 (حرجة) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-287 (مصادقة غير صحيحة) |
| المتأثر | AdGuard Home < 0.107.73 (تم اختبار PoC على v0.107.72) |
| تم التصحيح | v0.107.73 (commit c003e9f9c0) |
| النشرة الأمنية | GHSA-5fg6-wrq4-w5gh |
خادم HTTP في internal/home/web.go يغلّف وسيط المصادقة خارج h2c.NewHandler. عندما يرسل العميل طلب HTTP/1.1 مع Upgrade: h2c إلى مسار عام (مثل /login.html)، يسمح له وسيط المصادقة بالمرور، ثم يختطف h2c.NewHandler اتصال TCP للتبديل إلى HTTP/2. يتم توجيه كل تدفق HTTP/2 يتبع على الاتصال المرقّى مباشرة إلى mux الداخلي — دون المرور عبر وسيط المصادقة. وبالتالي يمكن الوصول إلى أي نقطة نهاية إدارية /control/* دون مصادقة على نفس المقبس.
ينقل التصحيح وسيط المصادقة داخل المعالج المُمرَّر إلى h2c.NewHandler، بحيث تخضع إطارات HTTP/2 بعد الترقية بنص واضح لنفس فحص المصادقة كطلبات HTTP/1.1.
curl --http2-prior-knowledge لا يُطلق الخطأ — طبقة HTTP/1.1 في الخادم ترفض تمهيد HTTP/2 الخام برمز 401./control/login تُرجع أيضًا 101 Switching Protocols، لكن 404 (نقطة نهاية POST فقط) على التدفق 1 يسمّم التدفقات اللاحقة. استخدم مسارًا ثابتًا يُرجع 200 OK (مثل /login.html).# Kali / Debian / Ubuntu
sudo apt install -y python3-h2
python3 CVE-2026-32136.py <target-ip> [port] [path]
الافتراضيات: port=80, path=/control/filtering/status.
$ python3 CVE-2026-32136.py 192.168.1.5 80 /control/filtering/status | jq .user_rules
[+] h2c upgrade successful — connection is now HTTP/2
[+] response status: 200
[
"||tracking.corp.example^",
"||analytics.internal.example^",
...
]
stdout هو نص الاستجابة الخام؛ تُكتب رسائل الحالة إلى stderr بحيث يمكن تمرير المخرجات بسلاسة إلى jq.
قم بالترقية إلى AdGuard Home 0.107.73 أو أحدث.
يُقدَّم هذا المفهوم البرهاني (PoC) لأغراض تعليمية وبحثية دفاعية. لا تشغّله ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
| نقطة النهاية | الإرجاع |
|---|
/control/filtering/status | قائمة عوامل التصفية + user_rules |
/control/status | حالة الخادم، وواجهات الاستماع |
/control/clients | قائمة عملاء DHCP / DNS |
/control/dns_info | خوادم DNS العلوية |
/control/querylog | سجل استعلامات DNS (غالبًا يحتوي على أسماء مضيفات داخلية) |