
शैक्षिक FastAPI लैब जो CVE-2021-41773 डायरेक्टरी ट्रैवर्सल और लोकल फाइल इन्क्लूजन को प्रदर्शित करता है, जिसमें एक कमजोर सर्वर, पैच किया गया कोड, और स्थानीय सुरक्षा प्रशिक्षण के लिए एन्कोडेड पेलोड उदाहरण शामिल हैं।
एक छोटा, स्व-निहित FastAPI लैब जो दर्शाता है कि फाइलसिस्टम सीमाओं को मान्य करने से पहले उपयोगकर्ता इनपुट को डीकोड करना निर्देशिका ट्रैवर्सल और स्थानीय फ़ाइल समावेशन (LFI) का कारण कैसे बन सकता है, जो Apache HTTP सर्वर की समस्या CVE-2021-41773 पर आधारित है।
%2e) और डबल-एन्कोडेड (%252e) बाइपास को प्रदर्शित करता हैcurl के साथ परीक्षण के लिए त्वरित पेलोड शामिल हैंuvicorn के साथ स्थानीय रूप से चलता हैरनटाइम निर्भरताएँ स्थापित करें:
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 — सुरक्षा शोधकर्ता, एप्लिकेशन सुरक्षा