
مختبر تعليمي مبني على FastAPI يوضح ثغرة CVE-2021-41773 الخاصة بتجاوز الدلائل (directory traversal) وتضمين الملفات المحلية (local file inclusion)، ويتضمن خادمًا قابلًا للاستغلال، وكودًا مُصحَّحًا، وأمثلة على حمولات مُرمَّزة للتدريب الأمني المحلي.
مختبر FastAPI صغير ومستقل بذاته يوضح كيف يمكن أن يؤدي فك تشفير إدخال المستخدم قبل التحقق من حدود نظام الملفات إلى اجتياز الدلائل وتضمين الملفات المحلية (LFI)، على غرار مشكلات خادم Apache HTTP CVE-2021-41773.
%2e) والترميز المزدوج (%252e)curluvicornتثبيت التبعيات اللازمة للتشغيل:
pip install fastapi uvicorn
python -m venv venv
.\venv\Scripts\activate
pip install fastapi uvicorn
uvicorn vulnerable_app:app --port 8011
افتح http://127.0.0.1:8011/ في متصفحك — تعرض نقطة النهاية الجذرية الحمولات الشائعة والملاحظات.
لملاحظة الإصلاح، أوقف الخادم القابل للاستغلال وشغّل الخادم المصحح:
uvicorn patched_app:app --port 8011
curl --path-as-is http://localhost:8011/icons/test.txt
curl --path-as-is "http://localhost:8011/icons/.%2e/secret.txt"
curl --path-as-is "http://localhost:8011/icons/.%252e/secret.txt"
عند استخدام الخادم القابل للاستغلال، قد تعيد هذه الحمولات secret.txt. وعند استخدام الخادم المصحح، يجب رفضها (HTTP 403).
os.path.realpath().webroot المقصود — وإلا فسيتم الرفض.يفرض هذا الترتيب الصحيح: فك الترميز → التوحيد الأساسي → التفويض.
هذا المستودع مخصص للاستخدام المحلي والتعليمي فقط. لا تعرّض الخادم القابل للاستغلال للشبكات العامة.
رخصة MIT
Kunal Khandelwal — باحث أمني، أمن التطبيقات